Học máy - Hồi quy nhiều lần
Nhiều hồi quy
Hồi quy bội cũng 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 dưới đây, nó chứa một số thông tin về ô tô.
Xe ô tô | Mô hình | Âm lượng | Trọng lượng | CO2 |
Toyota | Aygo | 1000 | 790 | 99 |
Mitsubishi | Ngôi sao vũ trụ | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Fiat | 500 | 900 | 865 | 90 |
Mini | 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 | Fiesta | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Huyndai | I20 | 1100 | 980 | 99 |
Suzuki | Nhanh | 1300 | 990 | 101 |
Ford | Fiesta | 1000 | 1112 | 99 |
Honda | Civic | 1600 | 1252 | 94 |
Huyndai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
xe BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Nhanh | 1600 | 1119 | 104 |
Ford | Tiêu điểm | 2000 | 1328 | 105 |
Ford | Mondeo | 1600 | 1584 | 94 |
Opel | Phù hiệu | 2000 | 1428 | 99 |
Mercedes | C-Class | 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 | E-Class | 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 một chiếc xe hơi dựa trên kích thước của động cơ, nhưng với phép 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 chiếc xe, để 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ề gấu trúc của chúng tôi .
Mô-đun Pandas cho phép chúng tôi đọc các tệp csv và trả về một đối tượng DataFrame.
Tệp chỉ dành cho mục đích thử nghiệm, bạn có thể tải xuống tại đây: ô tô.csv
df = pandas.read_csv("cars.csv")
Sau đó, tạo 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 gọi y
.
X = df[['Weight', 'Volume']]
y = df['CO2']
Mẹo: Người ta thường đặt tên cho danh sách các giá trị độc lập bằng chữ hoa X và danh sách các giá trị phụ thuộc bằng chữ hoa 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 LinearRegression()
phương pháp này để tạo một đối tượng hồi quy tuyến tính.
Đối tượng này có một phương thức đượ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 bằng 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 các giá trị CO2 dựa trên trọng lượng và thể tích của một chiếc ô tô:
#predict the CO2 emission of a car where the weight
is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
Thí dụ
Xem toàn bộ ví dụ trong hoạt động:
import pandas
from sklearn import linear_model
df = pandas.read_csv("cars.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 1300cm3:
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ô với động cơ 1,3 lít và trọng lượng 2300 kg, sẽ thải ra khoảng 107 gram CO2 cho mỗi km mà nó lái.
Hệ số
Hệ số là một hệ số mô tả mối quan hệ với một biến chưa biết.
Ví dụ: if x
là một biến, then
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ể hỏi giá trị hệ số của trọng lượng so 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 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.
Thí 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("cars.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ả đại diện cho các giá trị hệ số của trọng lượng và thể tích.
Trọng lượng: 0,00755095
Khối lượng: 0,00780526
Các giá trị này cho ta biết nếu khối lượng tăng thêm 1kg thì lượng CO2 thải ra tăng 0,00755095g.
Và nếu kích thước (Thể tích) động cơ tăng thêm 1 cm 3 thì lượng CO2 thải ra tăng thêm 0,00780526 g.
Tôi nghĩ đó là một dự đoán công bằng, 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í CO2 thải ra sẽ xấp xỉ 107g.
Nếu chúng ta tăng khối lượng lên với 1000kg thì sao?
Thí dụ
Sao chép ví dụ từ 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("cars.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ô với động cơ 1,3 lít và trọng lượng 3300 kg, sẽ thải ra khoảng 115 gram CO2 cho mỗi km mà nó lái.
Điều nào cho thấy hệ số 0,00755095 là đúng:
107,2087328 + (1000 * 0,00755095) = 114,75968