Hướng dẫn linear regression python manually - hồi quy tuyến tính python thủ công

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: Bắt đầu với hồi quy tuyến tính trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Starting With Linear Regression in Python

Bạn sống trong một kỷ nguyên của một lượng lớn dữ liệu, máy tính mạnh mẽ và trí tuệ nhân tạo. Điều này chỉ là khởi đầu. Khoa học dữ liệu và học máy đang thúc đẩy nhận dạng hình ảnh, phát triển các phương tiện tự trị, quyết định trong các lĩnh vực tài chính và năng lượng, những tiến bộ trong y học, sự gia tăng của các mạng xã hội, v.v. Hồi quy tuyến tính là một phần quan trọng của điều này.

Hồi quy tuyến tính là một trong những kỹ thuật thống kê và học máy cơ bản. Cho dù bạn muốn làm số liệu thống kê, học máy hay điện toán khoa học, thì có một cơ hội tốt mà bạn sẽ cần nó. Nó tốt nhất để xây dựng một nền tảng vững chắc trước tiên và sau đó tiến hành các phương pháp phức tạp hơn.

Đến cuối bài viết này, bạn sẽ học được:

  • Hồi quy tuyến tính là gìis
  • Hồi quy tuyến tính nào được sử dụng choused for
  • Cách thức hồi quy tuyến tính hoạt độngworks
  • Cách thực hiện hồi quy tuyến tính trong Python, từng bướcimplement linear regression in Python, step by step

hồi quy

Phân tích hồi quy là một trong những lĩnh vực quan trọng nhất trong thống kê và học máy. Có nhiều phương pháp hồi quy có sẵn. Hồi quy tuyến tính là một trong số đó.

Hồi quy là gì?

Hồi quy tìm kiếm mối quan hệ giữa các biến. Ví dụ, bạn có thể quan sát một số nhân viên của một số công ty và cố gắng hiểu mức lương của họ phụ thuộc vào các tính năng của họ, chẳng hạn như kinh nghiệm, trình độ học vấn, vai trò, thành phố việc làm, v.v.variables. For example, you can observe several employees of some company and try to understand how their salaries depend on their features, such as experience, education level, role, city of employment, and so on.

Đây là một vấn đề hồi quy trong đó dữ liệu liên quan đến mỗi nhân viên đại diện cho một quan sát. Giả định là kinh nghiệm, giáo dục, vai trò và thành phố là những đặc điểm độc lập, trong khi mức lương phụ thuộc vào chúng.observation. The presumption is that the experience, education, role, and city are the independent features, while the salary depends on them.

Tương tự, bạn có thể cố gắng thiết lập sự phụ thuộc toán học của giá nhà đất vào khu vực, số lượng phòng ngủ, khoảng cách đến trung tâm thành phố, v.v.

Nói chung, trong phân tích hồi quy, bạn xem xét một số hiện tượng quan tâm và có một số quan sát. Mỗi quan sát có hai hoặc nhiều tính năng. Theo giả định rằng ít nhất một trong các tính năng phụ thuộc vào các tính năng khác, bạn cố gắng thiết lập mối quan hệ giữa chúng.

Nói cách khác, bạn cần tìm một chức năng ánh xạ một số tính năng hoặc biến cho các tính năng khác đủ tốt.function that maps some features or variables to others sufficiently well.

Các tính năng phụ thuộc được gọi là các biến phụ thuộc, đầu ra hoặc phản hồi. Các tính năng độc lập được gọi là các biến độc lập, đầu vào, hồi quy hoặc dự đoán.dependent variables, outputs, or responses. The independent features are called the independent variables, inputs, regressors, or predictors.

Các vấn đề hồi quy thường có một biến phụ thuộc liên tục và không giới hạn. Tuy nhiên, các đầu vào có thể là dữ liệu liên tục, rời rạc hoặc thậm chí phân loại như giới tính, quốc tịch hoặc thương hiệu.

Nó là một thực tế phổ biến để biểu thị các đầu ra với 𝑦 và các đầu vào với. Nếu có hai hoặc nhiều biến độc lập, thì chúng có thể được biểu diễn dưới dạng vectơ 𝐱 = (𝑥₁,,,), trong đó 𝑟 là số lượng đầu vào.

Khi nào bạn cần hồi quy?

Thông thường, bạn cần hồi quy để trả lời và làm thế nào một số hiện tượng ảnh hưởng đến phương thức khác hoặc cách một số biến có liên quan. Ví dụ, bạn có thể sử dụng nó để xác định xem có kinh nghiệm hoặc giới tính nào ảnh hưởng đến mức lương hay không.several variables are related. For example, you can use it to determine if and to what extent experience or gender impacts salaries.

Hồi quy cũng hữu ích khi bạn muốn dự báo phản hồi bằng cách sử dụng một bộ dự đoán mới. Ví dụ, bạn có thể cố gắng dự đoán mức tiêu thụ điện của một hộ gia đình trong giờ tiếp theo với nhiệt độ ngoài trời, thời gian trong ngày và số lượng cư dân trong gia đình đó.forecast a response using a new set of predictors. For example, you could try to predict electricity consumption of a household for the next hour given the outdoor temperature, time of day, and number of residents in that household.

Hồi quy được sử dụng trong nhiều lĩnh vực khác nhau, bao gồm kinh tế, khoa học máy tính và khoa học xã hội. Tầm quan trọng của nó tăng lên mỗi ngày với sự sẵn có của một lượng lớn dữ liệu và tăng cường nhận thức về giá trị thực tế của dữ liệu.

Hồi quy tuyến tính

Hồi quy tuyến tính có lẽ là một trong những kỹ thuật hồi quy quan trọng và được sử dụng rộng rãi nhất. Nó trong số các phương pháp hồi quy đơn giản nhất. Một trong những lợi thế chính của nó là dễ dàng diễn giải kết quả.

Xây dựng vấn đề

Khi thực hiện hồi quy tuyến tính của một số biến phụ thuộc 𝑦 trên tập hợp các biến độc lập 𝐱 = (𝑥₁,,,), trong đó 𝑟 là số lượng dự đoán, bạn giả sử mối quan hệ tuyến tính giữa 𝑦 và 𝐱: 𝑦 = 𝛽₀ + 𝛽₁𝑥₁ + ⋯ + ⋯ + +. Phương trình này là phương trình hồi quy. 𝛽₀, 𝛽₁,,, là các hệ số hồi quy và 𝜀 là lỗi ngẫu nhiên.regression equation. 𝛽₀, 𝛽₁, …, 𝛽ᵣ are the regression coefficients, and 𝜀 is the random error.

Hồi quy tuyến tính tính toán các ước tính của các hệ số hồi quy hoặc đơn giản là các trọng số dự đoán, được biểu thị bằng 𝑏₀, 𝑏₁,,. Các công cụ ước tính này xác định hàm hồi quy ước tính 𝑓 (𝐱) = 𝑏₀ + 𝑏₁𝑥₁ + ⋯ +. Hàm này sẽ nắm bắt các phụ thuộc giữa đầu vào và đầu ra đủ tốt.estimators of the regression coefficients or simply the predicted weights, denoted with 𝑏₀, 𝑏₁, …, 𝑏ᵣ. These estimators define the estimated regression function 𝑓(𝐱) = 𝑏₀ + 𝑏₁𝑥₁ + ⋯ + 𝑏ᵣ𝑥ᵣ. This function should capture the dependencies between the inputs and output sufficiently well.

Phản hồi ước tính hoặc dự đoán, 𝑓 (𝐱ᵢ), cho mỗi quan sát 𝑖 = 1,,, 𝑛, nên càng gần càng tốt với phản ứng thực tế tương ứng. Sự khác biệt 𝑦ᵢ - 𝑓 (𝐱ᵢ) cho tất cả các quan sát 𝑖 = 1,,, 𝑛, được gọi là phần dư. Hồi quy là về việc xác định các trọng số dự đoán tốt nhất, đó là các trọng số tương ứng với phần dư nhỏ nhất.estimated or predicted response, 𝑓(𝐱ᵢ), for each observation 𝑖 = 1, …, 𝑛, should be as close as possible to the corresponding actual response 𝑦ᵢ. The differences 𝑦ᵢ - 𝑓(𝐱ᵢ) for all observations 𝑖 = 1, …, 𝑛, are called the residuals. Regression is about determining the best predicted weights—that is, the weights corresponding to the smallest residuals.

Để có được các trọng số tốt nhất, bạn thường giảm thiểu tổng số dư bình phương (SSR) cho tất cả các quan sát 𝑖 = 1, Hồi, 𝑛: SSR = σᵢ (𝑦ᵢ - 𝑓 (𝐱ᵢ)) ². Cách tiếp cận này được gọi là phương pháp bình phương tối thiểu thông thường.minimize the sum of squared residuals (SSR) for all observations 𝑖 = 1, …, 𝑛: SSR = Σᵢ(𝑦ᵢ - 𝑓(𝐱ᵢ))². This approach is called the method of ordinary least squares.

Hiệu suất hồi quy

Sự thay đổi của các phản ứng thực tế 𝑦ᵢ, = 1,,, 𝑛, xảy ra một phần do sự phụ thuộc vào các yếu tố dự đoán. Tuy nhiên, cũng có một phương sai vốn có bổ sung của đầu ra.

Hệ số xác định, được ký hiệu là 𝑅², cho bạn biết số lượng biến thể trong 𝑦 có thể được giải thích bằng sự phụ thuộc vào 𝐱, sử dụng mô hình hồi quy cụ thể. Một 𝑅² lớn hơn cho thấy sự phù hợp hơn và có nghĩa là mô hình có thể giải thích tốt hơn sự thay đổi của đầu ra với các đầu vào khác nhau.coefficient of determination, denoted as 𝑅², tells you which amount of variation in 𝑦 can be explained by the dependence on 𝐱, using the particular regression model. A larger 𝑅² indicates a better fit and means that the model can better explain the variation of the output with different inputs.

Giá trị 𝑅² = 1 tương ứng với SSR = 0. Đó là sự phù hợp hoàn hảo, vì các giá trị của các phản hồi dự đoán và thực tế hoàn toàn phù hợp với nhau.perfect fit, since the values of predicted and actual responses fit completely to each other.

Hồi quy tuyến tính cơ bản

Hồi quy tuyến tính đơn giản hoặc đơn hóa là trường hợp đơn giản nhất của hồi quy tuyến tính, vì nó có một biến độc lập duy nhất, = 𝑥.

Hình sau đây minh họa hồi quy tuyến tính đơn giản:

Hướng dẫn linear regression python manually - hồi quy tuyến tính python thủ công
Ví dụ về hồi quy tuyến tính đơn giản

Khi thực hiện hồi quy tuyến tính đơn giản, bạn thường bắt đầu với một tập hợp các cặp đầu vào-đầu ra (𝑥-) nhất định. Những cặp này là những quan sát của bạn, được hiển thị dưới dạng vòng tròn màu xanh lá cây trong hình. Ví dụ, quan sát ngoài cùng bên trái có đầu vào 𝑥 = 5 và đầu ra thực tế hoặc phản hồi, 𝑦 = 5. Cái tiếp theo có 𝑥 = 15 và 𝑦 = 20, v.v.

Hàm hồi quy ước tính, được biểu thị bằng đường màu đen, có phương trình 𝑓 (𝑥) = 𝑏₀ +. Mục tiêu của bạn là tính toán các giá trị tối ưu của các trọng số dự đoán 𝑏₀ và 𝑏₁ giảm thiểu SSR và xác định hàm hồi quy ước tính.

Giá trị của 𝑏₀, còn được gọi là chặn, cho thấy điểm trong đó đường hồi quy ước tính vượt qua trục. Nó có giá trị của phản hồi ước tính 𝑓 (𝑥) cho 𝑥 = 0. Giá trị của 𝑏₁ xác định độ dốc của đường hồi quy ước tính.intercept, shows the point where the estimated regression line crosses the 𝑦 axis. It’s the value of the estimated response 𝑓(𝑥) for 𝑥 = 0. The value of 𝑏₁ determines the slope of the estimated regression line.

Các phản hồi dự đoán, được hiển thị dưới dạng hình vuông màu đỏ, là các điểm trên đường hồi quy tương ứng với các giá trị đầu vào. Ví dụ: đối với đầu vào 𝑥 = 5, phản hồi dự đoán là 𝑓 (5) = 8,33, mà hình vuông màu đỏ ngoài cùng bên trái biểu thị.

Các đường màu xám đứt nét dọc biểu thị phần dư, có thể được tính là 𝑦ᵢ - 𝑓 (𝐱ᵢ) = 𝑦ᵢ - 𝑏₀ - 𝑏₁𝑥ᵢ cho 𝑖 = 1, Hồi,. Họ là khoảng cách giữa các vòng tròn màu xanh lá cây và hình vuông màu đỏ. Khi bạn thực hiện hồi quy tuyến tính, bạn thực sự đang cố gắng giảm thiểu các khoảng cách này và làm cho các hình vuông màu đỏ càng gần với các vòng tròn màu xanh lá cây được xác định trước càng tốt.

Hồi quy nhiều tuyến tính

Hồi quy tuyến tính đa hoặc đa biến là một trường hợp hồi quy tuyến tính với hai hoặc nhiều biến độc lập.

Nếu chỉ có hai biến độc lập, thì hàm hồi quy ước tính là 𝑓 (𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ +. Nó đại diện cho một mặt phẳng hồi quy trong một không gian ba chiều. Mục tiêu của hồi quy là xác định các giá trị của các trọng số, và 𝑏₂ sao cho mặt phẳng này càng gần càng tốt với các phản ứng thực tế, trong khi mang lại SSR tối thiểu.

Trường hợp của nhiều hơn hai biến độc lập là tương tự nhau, nhưng tổng quát hơn. Hàm hồi quy ước tính là 𝑓 (𝑥₁,, 𝑥ᵣ) = 𝑏₀ + 𝑏₁𝑥₁ + ⋯ +, và có các trọng số 𝑟 + 1 được xác định khi số lượng đầu vào là.

Hồi quy đa thức

Bạn có thể coi hồi quy đa thức là một trường hợp tổng quát của hồi quy tuyến tính. Bạn giả định sự phụ thuộc đa thức giữa đầu ra và đầu vào và do đó, hàm hồi quy ước tính đa thức.

Nói cách khác, ngoài các thuật ngữ tuyến tính như 𝑏₁𝑥₁, hàm hồi quy của bạn có thể bao gồm các thuật ngữ phi tuyến như 𝑏₂𝑥₁², 𝑏₃𝑥₁³, hoặc thậm chí 𝑏₄𝑥₁𝑥₂, 𝑏₅𝑥₁²𝑥₂.

Ví dụ đơn giản nhất về hồi quy đa thức có một biến độc lập duy nhất và hàm hồi quy ước tính là đa thức của độ hai: 𝑓 (𝑥) = 𝑏₀ + 𝑏₁𝑥 +.

Bây giờ, hãy nhớ rằng bạn muốn tính toán, và 𝑏₂ để giảm thiểu SSR. Đây là những điều chưa biết của bạn!

Hãy ghi nhớ điều này, so sánh hàm hồi quy trước đó với hàm 𝑓 (𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ +, được sử dụng cho hồi quy tuyến tính. Chúng trông rất giống nhau và cả hai chức năng tuyến tính của những điều chưa biết 𝑏₀, và. Đây là lý do tại sao bạn có thể giải quyết vấn đề hồi quy đa thức như một vấn đề tuyến tính với thuật ngữ 𝑥² được coi là một biến đầu vào.polynomial regression problem as a linear problem with the term 𝑥² regarded as an input variable.

Trong trường hợp của hai biến và đa thức của độ hai, hàm hồi quy có dạng này: 𝑓 (𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂ + 𝑏₃𝑥₁² + 𝑏₄𝑥₁𝑥₂ +.

Quy trình giải quyết vấn đề giống hệt với trường hợp trước đó. Bạn áp dụng hồi quy tuyến tính cho năm đầu vào: 𝑥₁,, 𝑥₁², và 𝑥₂². Do kết quả của hồi quy, bạn nhận được các giá trị của sáu trọng lượng giảm thiểu SSR: 𝑏₀, 𝑏₁, 𝑏₂, 𝑏₃, và.

Tất nhiên, có nhiều vấn đề chung hơn, nhưng điều này là đủ để minh họa điểm.

Thiếu hụt và quá mức

Một câu hỏi rất quan trọng có thể phát sinh khi bạn thực hiện hồi quy đa thức có liên quan đến việc lựa chọn mức độ tối ưu của hàm hồi quy đa thức.optimal degree of the polynomial regression function.

Không có quy tắc đơn giản để làm điều này. Nó phụ thuộc vào trường hợp. Tuy nhiên, bạn nên nhận thức được hai vấn đề có thể tuân theo sự lựa chọn mức độ: thiếu hụt và quá mức.underfitting and overfitting.

Thất bại xảy ra khi một mô hình có thể nắm bắt chính xác các phụ thuộc giữa các dữ liệu, thường là hậu quả của sự đơn giản của chính nó. Nó thường mang lại một 𝑅² thấp với dữ liệu đã biết và khả năng khái quát hóa xấu khi được áp dụng với dữ liệu mới. occurs when a model can’t accurately capture the dependencies among data, usually as a consequence of its own simplicity. It often yields a low 𝑅² with known data and bad generalization capabilities when applied with new data.

Việc quá mức xảy ra khi một mô hình tìm hiểu cả phụ thuộc dữ liệu và biến động ngẫu nhiên. Nói cách khác, một mô hình tìm hiểu dữ liệu hiện có quá tốt. Các mô hình phức tạp, có nhiều tính năng hoặc thuật ngữ, thường dễ bị quá tải. Khi được áp dụng cho dữ liệu đã biết, các mô hình như vậy thường mang lại cao 𝑅². Tuy nhiên, họ thường không khái quát hóa tốt và có thấp hơn đáng kể khi được sử dụng với dữ liệu mới. happens when a model learns both data dependencies and random fluctuations. In other words, a model learns the existing data too well. Complex models, which have many features or terms, are often prone to overfitting. When applied to known data, such models usually yield high 𝑅². However, they often don’t generalize well and have significantly lower 𝑅² when used with new data.

Hình tiếp theo minh họa các mô hình thiếu, được trang bị tốt và quá mức:

Hướng dẫn linear regression python manually - hồi quy tuyến tính python thủ công
Ví dụ về các mô hình thiếu thốn, được trang bị tốt và quá mức

Biểu đồ trên cùng bên trái cho thấy một đường hồi quy tuyến tính có thấp 𝑅². Điều quan trọng là một đường thẳng có thể có tính đến thực tế là phản ứng thực tế tăng lên khi 𝑥 di chuyển ra khỏi hai mươi lăm và về 0. Đây có thể là một ví dụ về sự thiếu hụt.

Cốt truyện hàng đầu minh họa hồi quy đa thức với mức độ bằng hai. Trong trường hợp này, đây có thể là mức độ tối ưu để mô hình hóa dữ liệu này. Mô hình này có giá trị 𝑅² mà thỏa đáng trong nhiều trường hợp và hiển thị các xu hướng một cách độc đáo.

Biểu đồ dưới bên trái trình bày hồi quy đa thức với mức độ bằng ba. Giá trị của 𝑅² cao hơn so với các trường hợp trước. Mô hình này hoạt động tốt hơn với dữ liệu đã biết so với các dữ liệu trước đó. Tuy nhiên, nó cho thấy một số dấu hiệu quá mức, đặc biệt là đối với các giá trị đầu vào gần với sáuy, trong đó dòng bắt đầu giảm, mặc dù dữ liệu thực tế không hiển thị điều đó.

Cuối cùng, trên biểu đồ dưới cùng bên phải, bạn có thể thấy sự phù hợp hoàn hảo: sáu điểm và dòng đa thức của mức độ năm (hoặc cao hơn) năng suất 𝑅² = 1. Mỗi phản hồi thực tế bằng dự đoán tương ứng của nó.

Trong một số tình huống, đây có thể chính xác là những gì bạn đang tìm kiếm. Tuy nhiên, trong nhiều trường hợp, đây là một mô hình quá mức. Nó có khả năng có hành vi kém với dữ liệu chưa từng thấy, đặc biệt là với các đầu vào lớn hơn năm mươi.

Ví dụ, giả định rằng, không có bất kỳ bằng chứng nào, có một sự sụt giảm đáng kể trong các phản hồi đáng kể cho 𝑥 lớn hơn năm mươi và 𝑦 đạt được số 0 cho 𝑥 gần sáu mươi. Hành vi như vậy là hậu quả của nỗ lực quá mức để học và phù hợp với dữ liệu hiện có.

Có rất nhiều tài nguyên mà bạn có thể tìm thấy thêm thông tin về hồi quy nói chung và hồi quy tuyến tính nói riêng. Trang phân tích hồi quy trên Wikipedia, mục hồi quy tuyến tính Wikipedia, và bài viết hồi quy tuyến tính của Khan Academy là điểm khởi đầu tốt.

Gói Python cho hồi quy tuyến tính

Đó là thời gian để bắt đầu thực hiện hồi quy tuyến tính trong Python. Để làm điều này, bạn sẽ áp dụng các gói thích hợp và các chức năng và lớp học của chúng.

Numpy là một gói khoa học Python cơ bản cho phép nhiều hoạt động hiệu suất cao trên các mảng đơn và đa chiều. Nó cũng cung cấp nhiều thói quen toán học. Tất nhiên, nó nguồn mở. is a fundamental Python scientific package that allows many high-performance operations on single-dimensional and multidimensional arrays. It also offers many mathematical routines. Of course, it’s open-source.

Nếu bạn không quen thuộc với Numpy, bạn có thể sử dụng Hướng dẫn sử dụng Numpy chính thức và đọc hướng dẫn Numpy: bước đầu tiên của bạn vào Khoa học dữ liệu trong Python. Ngoài ra, hãy xem MA, không có vòng lặp: Lập trình mảng với Python vs Python vs Numpy vs Tensorflow có thể cho bạn ý tưởng tốt về mức tăng hiệu suất mà bạn có thể đạt được khi áp dụng Numpy.

Gói Scikit-Learn là một thư viện Python được sử dụng rộng rãi để học máy, được xây dựng trên đỉnh của Numpy và một số gói khác. Nó cung cấp các phương tiện để tiền xử lý dữ liệu, giảm kích thước, thực hiện hồi quy, phân loại, phân cụm và nhiều hơn nữa. Giống như Numpy, Scikit-Learn cũng là nguồn mở.scikit-learn is a widely used Python library for machine learning, built on top of NumPy and some other packages. It provides the means for preprocessing data, reducing dimensionality, implementing regression, classifying, clustering, and more. Like NumPy, scikit-learn is also open-source.

Bạn có thể kiểm tra trang các mô hình tuyến tính tổng quát trên trang web Scikit-Learn để tìm hiểu thêm về các mô hình tuyến tính và hiểu rõ hơn về cách gói này hoạt động.

Nếu bạn muốn thực hiện hồi quy tuyến tính và cần chức năng ngoài phạm vi của Scikit-learn, bạn nên xem xét StatSmodels. Nó có một gói Python mạnh mẽ để ước tính các mô hình thống kê, thực hiện các bài kiểm tra và hơn thế nữa. Nó cũng là nguồn mở.statsmodels. It’s a powerful Python package for the estimation of statistical models, performing tests, and more. It’s open-source as well.

Bạn có thể tìm thêm thông tin về StatSmodels trên trang web chính thức của nó.

Bây giờ, để làm theo cùng với hướng dẫn này, bạn nên cài đặt tất cả các gói này vào môi trường ảo:

(venv) $ python -m pip install numpy scikit-learn statsmodels

Điều này sẽ cài đặt Numpy, Scikit-Learn, StatSmodels và các phụ thuộc của chúng.

Hồi quy tuyến tính đơn giản với scikit-learn

Bạn sẽ bắt đầu với trường hợp đơn giản nhất, đó là hồi quy tuyến tính đơn giản. Có năm bước cơ bản khi bạn thực hiện hồi quy tuyến tính:

  1. Nhập các gói và các lớp mà bạn cần.
  2. Cung cấp dữ liệu để làm việc và cuối cùng thực hiện các phép biến đổi thích hợp.
  3. Tạo một mô hình hồi quy và phù hợp với dữ liệu hiện có.
  4. Kiểm tra kết quả của mô hình phù hợp để biết liệu mô hình có thỏa đáng hay không.
  5. Áp dụng mô hình cho dự đoán.

Các bước này ít nhiều nói chung cho hầu hết các phương pháp và triển khai hồi quy. Trong suốt phần còn lại của hướng dẫn, bạn sẽ học cách thực hiện các bước này cho một số kịch bản khác nhau.

Bước 1: Nhập gói và lớp học

Bước đầu tiên là nhập gói

>>> model = LinearRegression()
6 và lớp
>>> model = LinearRegression()
7 từ
>>> model = LinearRegression()
8:

>>>

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression

Bây giờ, bạn có tất cả các chức năng mà bạn cần để thực hiện hồi quy tuyến tính.

Kiểu dữ liệu cơ bản của Numpy là loại mảng được gọi là

>>> model = LinearRegression()
9. Phần còn lại của hướng dẫn này sử dụng mảng thuật ngữ để chỉ các trường hợp của loại
>>> model = LinearRegression()
9.array to refer to instances of the type
>>> model = LinearRegression()
9.

Bạn sẽ sử dụng lớp

>>> model.fit(x, y)
LinearRegression()
1 để thực hiện hồi quy tuyến tính và đa thức và đưa ra dự đoán cho phù hợp.

Bước 2: Cung cấp dữ liệu

Bước thứ hai là xác định dữ liệu để làm việc. Các đầu vào (hồi quy, 𝑥) và đầu ra (phản hồi, 𝑦) nên là mảng hoặc các đối tượng tương tự. Đây là cách đơn giản nhất để cung cấp dữ liệu cho hồi quy:

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])

Bây giờ, bạn có tất cả các chức năng mà bạn cần để thực hiện hồi quy tuyến tính.two-dimensional, or more precisely, it must have one column and as many rows as necessary. That’s exactly what the argument

>>> model.fit(x, y)
LinearRegression()
6 of
>>> model.fit(x, y)
LinearRegression()
4 specifies.

Kiểu dữ liệu cơ bản của Numpy là loại mảng được gọi là

>>> model = LinearRegression()
9. Phần còn lại của hướng dẫn này sử dụng mảng thuật ngữ để chỉ các trường hợp của loại
>>> model = LinearRegression()
9.

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])

Bây giờ, bạn có tất cả các chức năng mà bạn cần để thực hiện hồi quy tuyến tính.

Kiểu dữ liệu cơ bản của Numpy là loại mảng được gọi là

>>> model = LinearRegression()
9. Phần còn lại của hướng dẫn này sử dụng mảng thuật ngữ để chỉ các trường hợp của loại
>>> model = LinearRegression()
9.

Bạn sẽ sử dụng lớp

>>> model.fit(x, y)
LinearRegression()
1 để thực hiện hồi quy tuyến tính và đa thức và đưa ra dự đoán cho phù hợp.

Bước 2: Cung cấp dữ liệu

>>>

>>> model = LinearRegression()

Bây giờ, bạn có tất cả các chức năng mà bạn cần để thực hiện hồi quy tuyến tính.

  • Kiểu dữ liệu cơ bản của Numpy là loại mảng được gọi là
    >>> model = LinearRegression()
    
    9. Phần còn lại của hướng dẫn này sử dụng mảng thuật ngữ để chỉ các trường hợp của loại
    >>> model = LinearRegression()
    
    9.
    is a Boolean that, if
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    1, decides to calculate the intercept 𝑏₀ or, if
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    2, considers it equal to zero. It defaults to
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    1.
  • Bạn sẽ sử dụng lớp
    >>> model.fit(x, y)
    LinearRegression()
    
    1 để thực hiện hồi quy tuyến tính và đa thức và đưa ra dự đoán cho phù hợp.
    is a Boolean that, if
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    1, decides to normalize the input variables. It defaults to
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    2, in which case it doesn’t normalize the input variables.
  • Bước 2: Cung cấp dữ liệu is a Boolean that decides whether to copy (
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    1) or overwrite the input variables (
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    2). It’s
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    1 by default.
  • Bước thứ hai là xác định dữ liệu để làm việc. Các đầu vào (hồi quy, 𝑥) và đầu ra (phản hồi, 𝑦) nên là mảng hoặc các đối tượng tương tự. Đây là cách đơn giản nhất để cung cấp dữ liệu cho hồi quy: is either an integer or
    >>> print(f"intercept: {model.intercept_}")
    intercept: 5.633333333333329
    
    >>> print(f"slope: {model.coef_}")
    slope: [0.54]
    
    2. It represents the number of jobs used in parallel computation. It defaults to
    >>> print(f"intercept: {model.intercept_}")
    intercept: 5.633333333333329
    
    >>> print(f"slope: {model.coef_}")
    slope: [0.54]
    
    2, which usually means one job.
    >>> print(f"intercept: {model.intercept_}")
    intercept: 5.633333333333329
    
    >>> print(f"slope: {model.coef_}")
    slope: [0.54]
    
    4 means to use all available processors.

Bây giờ, bạn có hai mảng: đầu vào,

>>> model.fit(x, y)
LinearRegression()
2 và đầu ra,
>>> model.fit(x, y)
LinearRegression()
3. Bạn nên gọi
>>> model.fit(x, y)
LinearRegression()
4 trên
>>> model.fit(x, y)
LinearRegression()
2 vì mảng này phải là hai chiều, hoặc chính xác hơn, nó phải có một cột và nhiều hàng khi cần thiết. Đó chính xác là những gì đối số
>>> model.fit(x, y)
LinearRegression()
6 của
>>> model.fit(x, y)
LinearRegression()
4 chỉ định.

Đây là cách

>>> model.fit(x, y)
LinearRegression()
2 và
>>> model.fit(x, y)
LinearRegression()
3 nhìn ngay bây giờ:

>>>

>>> model.fit(x, y)
LinearRegression()

Bây giờ, bạn có tất cả các chức năng mà bạn cần để thực hiện hồi quy tuyến tính.fits the model. It returns

>>> new_model = LinearRegression().fit(x, y.reshape((-1, 1)))
>>> print(f"intercept: {new_model.intercept_}")
intercept: [5.63333333]

>>> print(f"slope: {new_model.coef_}")
slope: [[0.54]]
2, which is the variable
>>> model = LinearRegression().fit(x, y)
7 itself. That’s why you can replace the last two statements with this one:

>>>

>>> model = LinearRegression().fit(x, y)

Bây giờ, bạn có tất cả các chức năng mà bạn cần để thực hiện hồi quy tuyến tính.

Kiểu dữ liệu cơ bản của Numpy là loại mảng được gọi là

>>> model = LinearRegression()
9. Phần còn lại của hướng dẫn này sử dụng mảng thuật ngữ để chỉ các trường hợp của loại
>>> model = LinearRegression()
9.

Bạn sẽ sử dụng lớp

>>> model.fit(x, y)
LinearRegression()
1 để thực hiện hồi quy tuyến tính và đa thức và đưa ra dự đoán cho phù hợp.

Bước 2: Cung cấp dữ liệu

>>>

>>> r_sq = model.score(x, y)
>>> print(f"coefficient of determination: {r_sq}")
coefficient of determination: 0.7158756137479542

Bây giờ, bạn có tất cả các chức năng mà bạn cần để thực hiện hồi quy tuyến tính.

Các thuộc tính của

>>> model = LinearRegression().fit(x, y)
7 là
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
00, đại diện cho hệ số 𝑏₀ và
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
01, đại diện cho 𝑏₁::

>>>

>>> print(f"intercept: {model.intercept_}")
intercept: 5.633333333333329

>>> print(f"slope: {model.coef_}")
slope: [0.54]

Mã trên minh họa cách nhận 𝑏₀ và. Bạn có thể nhận thấy rằng

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
00 là vô hướng, trong khi
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
01 là một mảng.

Giá trị của 𝑏₀ xấp xỉ 5,63. Điều này minh họa rằng mô hình của bạn dự đoán phản hồi 5.63 khi bằng không. Giá trị 𝑏₁ = 0,54 có nghĩa là đáp ứng dự đoán tăng 0,54 khi tăng thêm một.

Bạn có thể nhận thấy rằng bạn cũng có thể cung cấp

>>> model.fit(x, y)
LinearRegression()
3 dưới dạng mảng hai chiều. Trong trường hợp này, bạn sẽ nhận được một kết quả tương tự. Đây là cách nó có thể trông:

>>>

>>> new_model = LinearRegression().fit(x, y.reshape((-1, 1)))
>>> print(f"intercept: {new_model.intercept_}")
intercept: [5.63333333]

>>> print(f"slope: {new_model.coef_}")
slope: [[0.54]]

Mã trên minh họa cách nhận 𝑏₀ và. Bạn có thể nhận thấy rằng

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
00 là vô hướng, trong khi
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
01 là một mảng.

Giá trị của 𝑏₀ xấp xỉ 5,63. Điều này minh họa rằng mô hình của bạn dự đoán phản hồi 5.63 khi bằng không. Giá trị 𝑏₁ = 0,54 có nghĩa là đáp ứng dự đoán tăng 0,54 khi tăng thêm một.

Bạn có thể nhận thấy rằng bạn cũng có thể cung cấp

>>> model.fit(x, y)
LinearRegression()
3 dưới dạng mảng hai chiều. Trong trường hợp này, bạn sẽ nhận được một kết quả tương tự. Đây là cách nó có thể trông:

>>>

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
0

Mã trên minh họa cách nhận 𝑏₀ và. Bạn có thể nhận thấy rằng

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
00 là vô hướng, trong khi
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
01 là một mảng.

>>>

Mã trên minh họa cách nhận 𝑏₀ và. Bạn có thể nhận thấy rằng
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
00 là vô hướng, trong khi
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
01 là một mảng.

Giá trị của 𝑏₀ xấp xỉ 5,63. Điều này minh họa rằng mô hình của bạn dự đoán phản hồi 5.63 khi bằng không. Giá trị 𝑏₁ = 0,54 có nghĩa là đáp ứng dự đoán tăng 0,54 khi tăng thêm một.

Bạn có thể nhận thấy rằng bạn cũng có thể cung cấp

>>> model.fit(x, y)
LinearRegression()
3 dưới dạng mảng hai chiều. Trong trường hợp này, bạn sẽ nhận được một kết quả tương tự. Đây là cách nó có thể trông:

Như bạn có thể thấy, ví dụ này rất giống với cái trước, nhưng trong trường hợp này,

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
00 là một mảng một chiều với phần tử duy nhất 𝑏₀ và
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
01 là một mảng hai chiều với phần tử đơn.

Bước 5: Dự đoán phản hồi

>>>

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
2

Khi bạn có một mô hình thỏa đáng, thì bạn có thể sử dụng nó để dự đoán với dữ liệu hiện có hoặc dữ liệu mới. Để có được phản hồi dự đoán, hãy sử dụng

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
07:

Khi áp dụng

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
07, bạn chuyển phần hồi quy làm đối số và nhận được phản hồi dự đoán tương ứng. Đây là một cách gần như giống hệt nhau để dự đoán phản hồi:

>>> import numpy as np >>> from sklearn.linear_model import LinearRegression 1

Trong trường hợp này, bạn nhân mỗi phần tử của

>>> model.fit(x, y)
LinearRegression()
2 với
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
10 và thêm
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
11 vào sản phẩm.

Đầu ra ở đây khác với ví dụ trước chỉ trong kích thước. Phản hồi dự đoán bây giờ là một mảng hai chiều, trong khi trong trường hợp trước đó, nó có một chiều.

Nếu bạn giảm số lượng kích thước của

>>> model.fit(x, y)
LinearRegression()
2 xuống một, thì hai cách tiếp cận này sẽ mang lại kết quả tương tự. Bạn có thể làm điều này bằng cách thay thế
>>> model.fit(x, y)
LinearRegression()
2 bằng
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
14,
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
15 hoặc
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
16 khi nhân nó với
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
10.

>>>

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
3

Trong thực tế, các mô hình hồi quy thường được áp dụng để dự báo. Điều này có nghĩa là bạn có thể sử dụng các mô hình được trang bị để tính toán các đầu ra dựa trên các đầu vào mới:

>>>

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
4

Ở đây

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
07 được áp dụng cho bộ hồi quy mới
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
19 và mang lại phản hồi
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
20. Ví dụ này sử dụng thuận tiện
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
21 từ
>>> model = LinearRegression()
6 để tạo ra một mảng với các yếu tố từ 0, bao gồm, cho đến nhưng không bao gồm 5, đó là,
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
23,
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
24,
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
25,
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
26 và
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
27.

Bạn có thể tìm thêm thông tin về

>>> model = LinearRegression()
7 trên trang tài liệu chính thức.

Hồi quy nhiều tuyến tính với scikit-learn

>>>

>>> model = LinearRegression().fit(x, y)

Bạn có thể thực hiện hồi quy tuyến tính theo cùng một bước như bạn làm cho hồi quy đơn giản. Sự khác biệt chính là mảng

>>> model.fit(x, y)
LinearRegression()
2 của bạn bây giờ sẽ có hai hoặc nhiều cột.

Bước 1 và 2: Nhập các gói và lớp học và cung cấp dữ liệu

Đầu tiên, bạn nhập

>>> model = LinearRegression()
6 và
>>> model.fit(x, y)
LinearRegression()
1 và cung cấp các đầu vào và đầu ra đã biết:

>>>

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
6

Đó là một cách đơn giản để xác định đầu vào

>>> model.fit(x, y)
LinearRegression()
2 và đầu ra
>>> model.fit(x, y)
LinearRegression()
3. Bạn có thể in
>>> model.fit(x, y)
LinearRegression()
2 và
>>> model.fit(x, y)
LinearRegression()
3 để xem chúng trông như thế nào bây giờ:

Trong nhiều hồi quy tuyến tính,

>>> model.fit(x, y)
LinearRegression()
2 là một mảng hai chiều với ít nhất hai cột, trong khi
>>> model.fit(x, y)
LinearRegression()
3 thường là một mảng một chiều. Đây là một ví dụ đơn giản về hồi quy tuyến tính nhiều và
>>> model.fit(x, y)
LinearRegression()
2 có chính xác hai cột.

Giá trị của 𝑏₀ xấp xỉ 5,63. Điều này minh họa rằng mô hình của bạn dự đoán phản hồi 5.63 khi bằng không. Giá trị 𝑏₁ = 0,54 có nghĩa là đáp ứng dự đoán tăng 0,54 khi tăng thêm một.

Bạn có thể nhận thấy rằng bạn cũng có thể cung cấp

>>> model.fit(x, y)
LinearRegression()
3 dưới dạng mảng hai chiều. Trong trường hợp này, bạn sẽ nhận được một kết quả tương tự. Đây là cách nó có thể trông:

>>>

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
7

Như bạn có thể thấy, ví dụ này rất giống với cái trước, nhưng trong trường hợp này,

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
00 là một mảng một chiều với phần tử duy nhất 𝑏₀ và
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
01 là một mảng hai chiều với phần tử đơn.

>>>

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
8

Bước 5: Dự đoán phản hồi

Khi bạn có một mô hình thỏa đáng, thì bạn có thể sử dụng nó để dự đoán với dữ liệu hiện có hoặc dữ liệu mới. Để có được phản hồi dự đoán, hãy sử dụng

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
07:

>>>

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
9

Khi áp dụng

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
07, bạn chuyển phần hồi quy làm đối số và nhận được phản hồi dự đoán tương ứng. Đây là một cách gần như giống hệt nhau để dự đoán phản hồi:

Hồi quy đa thức với học tập Scikit

Việc thực hiện hồi quy đa thức với scikit-learn rất giống với hồi quy tuyến tính. Có một bước bổ sung: bạn cần chuyển đổi mảng đầu vào để bao gồm các thuật ngữ phi tuyến như 𝑥².

Bước 1: Nhập gói và lớp học

Ngoài

>>> model = LinearRegression()
6 và
>>> model.fit(x, y)
LinearRegression()
1, bạn cũng nên nhập lớp
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
51 từ
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
52:

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
0

Việc nhập khẩu hiện đã được thực hiện và bạn có mọi thứ bạn cần để làm việc.

Bước 2A: Cung cấp dữ liệu

Bước này xác định đầu vào và đầu ra và giống như trong trường hợp hồi quy tuyến tính:

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
1

Việc nhập khẩu hiện đã được thực hiện và bạn có mọi thứ bạn cần để làm việc.two-dimensional array. That’s why

>>> model.fit(x, y)
LinearRegression()
4 is used.

Bước 2A: Cung cấp dữ liệu

Bước này xác định đầu vào và đầu ra và giống như trong trường hợp hồi quy tuyến tính:new step that you need to implement for polynomial regression!

Bây giờ bạn có đầu vào và đầu ra ở một định dạng phù hợp. Hãy nhớ rằng bạn cần đầu vào để trở thành một mảng hai chiều. Đó là lý do tại sao

>>> model.fit(x, y)
LinearRegression()
4 được sử dụng.

Bước 2b: Biến đổi dữ liệu đầu vào

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
2

Việc nhập khẩu hiện đã được thực hiện và bạn có mọi thứ bạn cần để làm việc.

Bước 2A: Cung cấp dữ liệu

  • Bước này xác định đầu vào và đầu ra và giống như trong trường hợp hồi quy tuyến tính: is an integer (
    >>> import numpy as np
    >>> from sklearn.linear_model import LinearRegression
    
    25 by default) that represents the degree of the polynomial regression function.
  • Bây giờ bạn có đầu vào và đầu ra ở một định dạng phù hợp. Hãy nhớ rằng bạn cần đầu vào để trở thành một mảng hai chiều. Đó là lý do tại sao
    >>> model.fit(x, y)
    LinearRegression()
    
    4 được sử dụng.
    is a Boolean (
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    2 by default) that decides whether to include only interaction features (
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    1) or all features (
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    2).
  • Bước 2b: Biến đổi dữ liệu đầu vào is a Boolean (
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    1 by default) that decides whether to include the bias, or intercept, column of
    >>> import numpy as np
    >>> from sklearn.linear_model import LinearRegression
    
    24 values (
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    1) or not (
    >>> r_sq = model.score(x, y)
    >>> print(f"coefficient of determination: {r_sq}")
    coefficient of determination: 0.7158756137479542
    
    2).

Đây là bước mới mà bạn cần thực hiện cho hồi quy đa thức!

Như bạn đã biết trước đó, bạn cần bao gồm 𝑥² và có lẽ các thuật ngữ khác như các tính năng bổ sung khi thực hiện hồi quy đa thức. Vì lý do đó, bạn nên chuyển đổi mảng đầu vào

>>> model.fit(x, y)
LinearRegression()
2 để chứa bất kỳ cột bổ sung nào với các giá trị của 𝑥² và cuối cùng là nhiều tính năng hơn.

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
3

Việc nhập khẩu hiện đã được thực hiện và bạn có mọi thứ bạn cần để làm việc.

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
4

Việc nhập khẩu hiện đã được thực hiện và bạn có mọi thứ bạn cần để làm việc.

Bước 2A: Cung cấp dữ liệu

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
5

Việc nhập khẩu hiện đã được thực hiện và bạn có mọi thứ bạn cần để làm việc.

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
6

Việc nhập khẩu hiện đã được thực hiện và bạn có mọi thứ bạn cần để làm việc.

Bước 2A: Cung cấp dữ liệu

Bước này xác định đầu vào và đầu ra và giống như trong trường hợp hồi quy tuyến tính:

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
7

Việc nhập khẩu hiện đã được thực hiện và bạn có mọi thứ bạn cần để làm việc.

Bước 2A: Cung cấp dữ liệu

Bước này xác định đầu vào và đầu ra và giống như trong trường hợp hồi quy tuyến tính:

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
8

Việc nhập khẩu hiện đã được thực hiện và bạn có mọi thứ bạn cần để làm việc.

Bước 2A: Cung cấp dữ liệu

>>>

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
9

Việc nhập khẩu hiện đã được thực hiện và bạn có mọi thứ bạn cần để làm việc.

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])
0

Bước 2A: Cung cấp dữ liệu

Bước này xác định đầu vào và đầu ra và giống như trong trường hợp hồi quy tuyến tính:

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])
1

Biến

>>> model = LinearRegression().fit(x, y)
7 một lần nữa tương ứng với mảng đầu vào mới
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
85. Do đó,
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
85 nên được thông qua như là đối số đầu tiên thay vì
>>> model.fit(x, y)
LinearRegression()
2.

Cách tiếp cận này mang lại các kết quả sau, tương tự như trường hợp trước đây:

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])
2

Bạn thấy rằng bây giờ

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
00 bằng không, nhưng
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
01 thực sự chứa 𝑏₀ là phần tử đầu tiên của nó. Mọi thứ khác là như nhau.

Bước 5: Dự đoán phản hồi

Nếu bạn muốn nhận được phản hồi dự đoán, chỉ cần sử dụng

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
07, nhưng hãy nhớ rằng đối số phải là đầu vào đã sửa đổi
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
85 thay vì
>>> model.fit(x, y)
LinearRegression()
2 cũ:

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])
3

Như bạn có thể thấy, dự đoán hoạt động gần như giống như trong trường hợp hồi quy tuyến tính. Nó chỉ yêu cầu đầu vào sửa đổi thay vì bản gốc.

Bạn có thể áp dụng một quy trình giống hệt nhau nếu bạn có một số biến đầu vào. Bạn có thể có một mảng đầu vào với nhiều hơn một cột, nhưng mọi thứ khác sẽ giống nhau. Đây là một ví dụ:several input variables. You’ll have an input array with more than one column, but everything else will be the same. Here’s an example:

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])
4

Ví dụ hồi quy này mang lại kết quả và dự đoán sau:

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])
5

Trong trường hợp này, có sáu hệ số hồi quy, bao gồm cả chặn, như được hiển thị trong hàm hồi quy ước tính 𝑓 (𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂ + 𝑏₃𝑥₁² + 𝑏₄𝑥₁𝑥₂ +.

Bạn cũng có thể nhận thấy rằng hồi quy đa thức mang lại hệ số xác định cao hơn nhiều hồi quy tuyến tính cho cùng một vấn đề. Lúc đầu, bạn có thể nghĩ rằng việc có được một 𝑅² lớn như vậy là một kết quả tuyệt vời. Có thể là.

Tuy nhiên, trong các tình huống trong thế giới thực, có một mô hình phức tạp và rất gần với người ta cũng có thể là một dấu hiệu của quá mức. Để kiểm tra hiệu suất của một mô hình, bạn nên kiểm tra nó với dữ liệu mới, đó là, với các quan sát không được sử dụng để phù hợp hoặc đào tạo mô hình. Để tìm hiểu cách phân chia bộ dữ liệu của bạn thành các tập hợp con đào tạo và kiểm tra, hãy xem chia bộ dữ liệu của bạn bằng Scikit-Learn tựa Train_Test_Split ().

Hồi quy tuyến tính nâng cao với statsmodels

Bạn cũng có thể thực hiện hồi quy tuyến tính trong Python bằng cách sử dụng các statsmodels gói. Thông thường, điều này là mong muốn khi bạn cần kết quả chi tiết hơn.

Thủ tục tương tự như của Scikit-learn.

Bước 1: Nhập gói

Đầu tiên bạn cần thực hiện một số nhập khẩu. Ngoài

>>> model = LinearRegression()
6, bạn cần nhập
>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
13:

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])
6

Bây giờ bạn có các gói mà bạn cần.

Bước 2: Cung cấp dữ liệu và đầu vào biến đổi

Bạn có thể cung cấp các đầu vào và đầu ra giống như bạn đã làm khi bạn đang sử dụng Scikit-Learn:

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])
7

Các mảng đầu vào và đầu ra được tạo ra, nhưng công việc chưa được thực hiện.

Bạn cần thêm cột của các cái vào đầu vào nếu bạn muốn StatSmodels tính toán chặn. Nó không tính đến tài khoản theo mặc định. Đây chỉ là một cuộc gọi chức năng:

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])
8

Đó là cách bạn thêm cột của các cái vào

>>> model.fit(x, y)
LinearRegression()
2 với
>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
15. Nó lấy mảng đầu vào
>>> model.fit(x, y)
LinearRegression()
2 làm đối số và trả về một mảng mới với cột của các cái được chèn vào đầu. Đây là cách
>>> model.fit(x, y)
LinearRegression()
2 và
>>> model.fit(x, y)
LinearRegression()
3 nhìn ngay bây giờ:

>>>

>>> x
array([[ 5],
       [15],
       [25],
       [35],
       [45],
       [55]])

>>> y
array([ 5, 20, 14, 32, 22, 38])
9

Bạn có thể thấy rằng

>>> model.fit(x, y)
LinearRegression()
2 đã được sửa đổi có ba cột: cột đầu tiên của các cột, tương ứng với 𝑏₀ và thay thế chặn, cũng như hai cột của các tính năng ban đầu.

Bước 3: Tạo một mô hình và phù hợp với nó

Mô hình hồi quy dựa trên bình phương tối thiểu thông thường là một ví dụ của lớp

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
20. Đây là cách bạn có thể có được một:

>>>

>>> model = LinearRegression()
0

Bạn nên cẩn thận ở đây! Lưu ý rằng đối số đầu tiên là đầu ra, theo sau là đầu vào. Đây là thứ tự ngược lại của các chức năng Scikit-learn tương ứng.

Có một số tham số tùy chọn hơn. Để tìm thêm thông tin về lớp này, bạn có thể truy cập trang tài liệu chính thức.

Khi mô hình của bạn được tạo, thì bạn có thể áp dụng

>>> print(f"intercept: {model.intercept_}")
intercept: 5.633333333333329

>>> print(f"slope: {model.coef_}")
slope: [0.54]
6 trên đó:

>>>

>>> model = LinearRegression()
1

Bằng cách gọi

>>> print(f"intercept: {model.intercept_}")
intercept: 5.633333333333329

>>> print(f"slope: {model.coef_}")
slope: [0.54]
6, bạn có được biến
>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
23, đây là một ví dụ của lớp
>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
24. Đối tượng này chứa rất nhiều thông tin về mô hình hồi quy.

Bước 4: Nhận kết quả

Biến

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
23 đề cập đến đối tượng chứa thông tin chi tiết về kết quả hồi quy tuyến tính. Giải thích những kết quả này vượt xa phạm vi của hướng dẫn này, nhưng bạn sẽ học ở đây cách trích xuất chúng.

Bạn có thể gọi

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
26 để lấy bảng với kết quả hồi quy tuyến tính:

>>>

>>> model = LinearRegression()
2

Bảng này rất toàn diện. Bạn có thể tìm thấy nhiều giá trị thống kê liên quan đến hồi quy tuyến tính, bao gồm 𝑅², 𝑏₀, và.

Trong trường hợp cụ thể này, bạn có thể có được một cảnh báo cho biết

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
27. Điều này là do số lượng nhỏ các quan sát được cung cấp trong ví dụ.

Bạn có thể trích xuất bất kỳ giá trị nào từ bảng trên. Đây là một ví dụ:

>>>

>>> model = LinearRegression()
3

Đó là cách bạn có được một số kết quả của hồi quy tuyến tính:

  1. >>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
    >>> y = np.array([5, 20, 14, 32, 22, 38])
    
    28 giữ 𝑅².
    holds 𝑅².
  2. >>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
    >>> y = np.array([5, 20, 14, 32, 22, 38])
    
    29 đại diện cho điều chỉnh 𝑅², đó là, được sửa theo số lượng các tính năng đầu vào.
    represents adjusted 𝑅²—that is, 𝑅² corrected according to the number of input features.
  3. >>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
    >>> y = np.array([5, 20, 14, 32, 22, 38])
    
    30 đề cập đến mảng với 𝑏₀, và.
    refers the array with 𝑏₀, 𝑏₁, and 𝑏₂.

Bạn cũng có thể nhận thấy rằng những kết quả này giống hệt với kết quả thu được với Scikit-learn cho cùng một vấn đề.

Để tìm thêm thông tin về kết quả hồi quy tuyến tính, vui lòng truy cập trang tài liệu chính thức.

Bước 5: Dự đoán phản hồi

Bạn có thể nhận được phản hồi dự đoán trên các giá trị đầu vào được sử dụng để tạo mô hình bằng cách sử dụng

>>> x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
>>> y = np.array([5, 20, 14, 32, 22, 38])
31 hoặc
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
07 với mảng đầu vào làm đối số:

>>>

>>> model = LinearRegression()
4

Đây là phản ứng dự đoán cho các đầu vào đã biết. Nếu bạn muốn dự đoán với các hồi quy mới, bạn cũng có thể áp dụng

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
07 với dữ liệu mới làm đối số:

>>>

>>> model = LinearRegression()
5

Bạn có thể nhận thấy rằng các kết quả dự đoán giống như kết quả thu được với scikit-learn cho cùng một vấn đề.

Ngoài hồi quy tuyến tính

Hồi quy tuyến tính đôi khi không phù hợp, đặc biệt là đối với các mô hình phi tuyến có độ phức tạp cao.

May mắn thay, có những kỹ thuật hồi quy khác phù hợp cho các trường hợp hồi quy tuyến tính không hoạt động tốt. Một số trong số chúng là máy vector hỗ trợ, cây quyết định, rừng ngẫu nhiên và mạng lưới thần kinh.

Có rất nhiều thư viện Python để hồi quy bằng các kỹ thuật này. Hầu hết trong số họ là miễn phí và nguồn mở. Đó là một trong những lý do tại sao Python là một trong những ngôn ngữ lập trình chính cho học máy.

Gói Scikit-Learn cung cấp các phương tiện để sử dụng các kỹ thuật hồi quy khác theo cách rất giống với những gì bạn đã thấy. Nó chứa các lớp cho các máy vectơ hỗ trợ, cây quyết định, rừng ngẫu nhiên, v.v., với các phương pháp

>>> print(f"intercept: {model.intercept_}")
intercept: 5.633333333333329

>>> print(f"slope: {model.coef_}")
slope: [0.54]
6,
>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
07,
>>> new_model = LinearRegression().fit(x, y.reshape((-1, 1)))
>>> print(f"intercept: {new_model.intercept_}")
intercept: [5.63333333]

>>> print(f"slope: {new_model.coef_}")
slope: [[0.54]]
4, v.v.

Sự kết luận

Bây giờ bạn biết hồi quy tuyến tính là gì và làm thế nào bạn có thể thực hiện nó với Python và ba gói nguồn mở: Numpy, Scikit-Learn và StatSmodels. Bạn sử dụng Numpy để xử lý mảng. Hồi quy tuyến tính được thực hiện với các mục sau:

  • Scikit-learn Nếu bạn không cần kết quả chi tiết và muốn sử dụng phương pháp phù hợp với các kỹ thuật hồi quy khác if you don’t need detailed results and want to use the approach consistent with other regression techniques
  • StatSmodels Nếu bạn cần các tham số thống kê nâng cao của mô hình if you need the advanced statistical parameters of a model

Cả hai cách tiếp cận đều đáng để học cách sử dụng và khám phá thêm. Các liên kết trong bài viết này có thể rất hữu ích cho điều đó.

Trong hướng dẫn này, bạn đã học các bước sau đây để thực hiện hồi quy tuyến tính trong Python:

  1. Nhập các gói và lớp bạn cầnpackages and classes you need
  2. Cung cấp dữ liệu để làm việc và cuối cùng thực hiện các phép biến đổi thích hợp to work with and eventually do appropriate transformations
  3. Tạo mô hình hồi quy và phù hợp với dữ liệu hiện córegression model and fit it with existing data
  4. Kiểm tra kết quả phù hợp mô hình để biết liệu mô hình có thỏa đángresults of model fitting to know whether the model is satisfactory
  5. Áp dụng mô hình cho dự đoánpredictions

Và với điều đó, bạn rất tốt để đi! Nếu bạn có câu hỏi hoặc nhận xét, xin vui lòng đặt chúng vào phần bình luận bên dưới.

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: Bắt đầu với hồi quy tuyến tính trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Starting With Linear Regression in Python