Học máy - Hồi quy bội
Hồi quy bội
Hồi quy bội giống như hồi quy tuyến tính , nhưng có nhiều hơn một giá trị độc lập, nghĩa là chúng ta cố gắng dự đoán một giá trị dựa trên hai hoặc nhiều biến.
Hãy xem tập dữ liệu bên dưới, nó chứa một số thông tin về ô tô.
Xe hơi | Người mẫu | Âm lượng | Cân nặng | CO2 |
Toyota | ôi trời | 1000 | 790 | 99 |
Mitsubishi | Ngôi sao vũ trụ | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
tiền pháp định | 500 | 900 | 865 | 90 |
nhỏ | Cooper | 1500 | 1140 | 105 |
VW | Hướng lên! | 1000 | 929 | 105 |
Skoda | Fabia | 1400 | 1109 | 90 |
Mercedes | Một lớp học | 1500 | 1365 | 92 |
Ford | lễ hội | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Huyndai | I20 | 1100 | 980 | 99 |
Suzuki | Nhanh | 1300 | 990 | 101 |
Ford | lễ hội | 1000 | 1112 | 99 |
Honda | dân sự | 1600 | 1252 | 94 |
Hundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 13:30 | 97 |
xe BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Nhanh | 1600 | 1119 | 104 |
Ford | Tập trung | 2000 | 1328 | 105 |
Ford | Mondeo | 1600 | 1584 | 94 |
Opel | phù hiệu | 2000 | 1428 | 99 |
Mercedes | Hạng C | 2100 | 1365 | 99 |
Skoda | Octavia | 1600 | 1415 | 99 |
Volvo | S60 | 2000 | 1415 | 99 |
Mercedes | CLA | 1500 | 1465 | 102 |
Audi | A4 | 2000 | 1490 | 104 |
Audi | A6 | 2000 | 1725 | 114 |
Volvo | V70 | 1600 | 1523 | 109 |
xe BMW | 5 | 2000 | 1705 | 114 |
Mercedes | Lớp điện tử | 2100 | 1605 | 115 |
Volvo | XC70 | 2000 | 1746 | 117 |
Ford | B-Max | 1600 | 1235 | 104 |
xe BMW | 2 | 1600 | 1390 | 108 |
Opel | Zafira | 1600 | 1405 | 109 |
Mercedes | SLK | 2500 | 1395 | 120 |
Chúng ta có thể dự đoán lượng khí thải CO2 của ô tô dựa trên kích thước của động cơ, nhưng với hồi quy bội số, chúng ta có thể đưa vào nhiều biến số hơn, chẳng hạn như trọng lượng của ô tô, để dự đoán chính xác hơn.
Làm thế nào nó hoạt động?
Trong Python, chúng tôi có các mô-đun sẽ thực hiện công việc cho chúng tôi. Bắt đầu bằng cách nhập mô-đun Pandas.
import pandas
Tìm hiểu về mô-đun Pandas trong Hướng dẫn về Pandas của chúng tôi.
Mô-đun Pandas cho phép chúng ta đọc tệp csv và trả về đối tượng DataFrame.
Tệp chỉ nhằm mục đích thử nghiệm, bạn có thể tải xuống tại đây: data.csv
df = pandas.read_csv("data.csv")
Sau đó lập danh sách các giá trị độc lập và gọi biến này X
.
Đặt các giá trị phụ thuộc vào một biến có tên y
.
X = df[['Weight', 'Volume']]
y = df['CO2']
Mẹo: Người ta thường đặt tên danh sách các giá trị độc lập bằng chữ X viết hoa và danh sách các giá trị phụ thuộc bằng chữ thường y.
Chúng tôi sẽ sử dụng một số phương thức từ mô-đun sklearn, vì vậy chúng tôi cũng sẽ phải nhập mô-đun đó:
from sklearn import linear_model
Từ mô-đun sklearn, chúng ta sẽ sử dụng phương thức LinearRegression()
để tạo đối tượng hồi quy tuyến tính.
Đối tượng này có một phương thức gọi là fit()
lấy các giá trị độc lập và phụ thuộc làm tham số và điền vào đối tượng hồi quy dữ liệu mô tả mối quan hệ:
regr = linear_model.LinearRegression()
regr.fit(X, y)
Bây giờ chúng ta có một đối tượng hồi quy sẵn sàng dự đoán giá trị CO2 dựa trên trọng lượng và thể tích của ô tô:
#predict the CO2 emission of a car where the weight is 2300kg, and the volume is 1300cm 3 :
predictedCO2 = regr.predict([[2300, 1300]])
Ví dụ
Xem toàn bộ ví dụ thực tế:
import pandas
from sklearn import linear_model
df = pandas.read_csv("data.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr =
linear_model.LinearRegression()
regr.fit(X, y)
#predict the CO2
emission of a car where the weight is 2300kg, and the volume is 1300cm 3 :
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)
Kết quả:
[107.2087328]
Chúng tôi đã dự đoán rằng một chiếc ô tô có động cơ 1,3 lít và trọng lượng 2300 kg sẽ thải ra khoảng 107 gam CO2 cho mỗi km lái xe.
hệ số
Hệ số là một yếu tố mô tả mối quan hệ với một biến chưa biết.
Ví dụ: nếu x
là một biến thì 2x
là x
hai lần. x
là biến chưa biết và số 2
là hệ số.
Trong trường hợp này, chúng ta có thể yêu cầu giá trị hệ số của trọng lượng đối với CO2 và thể tích đối với CO2. (Các) câu trả lời mà chúng tôi nhận được sẽ cho chúng tôi biết điều gì sẽ xảy ra nếu chúng tôi tăng hoặc giảm một trong các giá trị độc lập.
Ví dụ
In các giá trị hệ số của đối tượng hồi quy:
import pandas
from sklearn import linear_model
df = pandas.read_csv("data.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr =
linear_model.LinearRegression()
regr.fit(X, y)
print(regr.coef_)
Kết quả:
[0,00755095 0,00780526]
Giải thích kết quả
Mảng kết quả biểu thị các giá trị hệ số về trọng lượng và thể tích.
Trọng lượng: 0,00755095
Khối lượng: 0,00780526
Những giá trị này cho chúng ta biết rằng nếu trọng lượng tăng thêm 1kg thì lượng khí thải CO2 tăng thêm 0,00755095g.
Và nếu kích thước động cơ (Khối lượng) tăng thêm 1 cm 3 thì lượng khí thải CO2 tăng thêm 0,00780526 g.
Tôi nghĩ đó là một phỏng đoán hợp lý, nhưng hãy kiểm tra nó!
Chúng tôi đã dự đoán rằng nếu một chiếc ô tô có động cơ 1300cm 3 nặng 2300kg thì lượng khí thải CO2 sẽ vào khoảng 107g.
Nếu chúng ta tăng trọng lượng lên 1000kg thì sao?
Ví dụ
Sao chép ví dụ trước nhưng thay đổi trọng số từ 2300 thành 3300:
import pandas
from sklearn import linear_model
df = pandas.read_csv("data.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr =
linear_model.LinearRegression()
regr.fit(X, y)
predictedCO2 = regr.predict([[3300, 1300]])
print(predictedCO2)
Kết quả:
[114.75968007]
Chúng tôi đã dự đoán rằng một chiếc ô tô có động cơ 1,3 lít và trọng lượng 3300 kg sẽ thải ra khoảng 115 gam CO2 cho mỗi km lái xe.
Điều đó cho thấy hệ số 0,00755095 là đúng:
107,2087328 + (1000 * 0,00755095) = 114,75968