Hai biến giải thích dạng số

Hồi quy trung cấp với statsmodels trong Python

Maarten Van den Broeck

Content Developer at DataCamp

Trực quan hóa ba biến số

  • Biểu đồ phân tán 3D
  • Biểu đồ phân tán 2D, tô màu theo biến phản hồi
Hồi quy trung cấp với statsmodels trong Python

Một cột khác cho bộ dữ liệu cá

species mass_g length_cm height_cm
Bream 1000 33.5 18.96
Bream 925 36.2 18.75
Roach 290 24.0 8.88
Roach 390 29.5 9.48
Perch 1100 39.0 12.80
Perch 1000 40.2 12.60
Pike 1250 52.0 10.69
Pike 1650 59.0 10.81
Hồi quy trung cấp với statsmodels trong Python

Biểu đồ phân tán 3D

Biểu đồ phân tán 3D của tất cả loài cá, với trục là chiều dài, khối lượng và chiều cao. Khó diễn giải trên mặt phẳng 2D.

Hồi quy trung cấp với statsmodels trong Python

Biểu đồ 2D, màu cho biến phản hồi

sns.scatterplot(x="length_cm", 
                y="height_cm",
                data=fish,
                hue="mass_g")

Biểu đồ phân tán 2D, tô màu theo khối lượng để hiển thị biến số thứ ba.

Hồi quy trung cấp với statsmodels trong Python

Mô hình với hai biến giải thích dạng số

mdl_mass_vs_both = ols("mass_g ~ length_cm + height_cm",
                       data=fish).fit()

print(mdl_mass_vs_both.params)
Intercept   -622.150234
length_cm     28.968405
height_cm     26.334804
Hồi quy trung cấp với statsmodels trong Python

Quy trình dự đoán

from itertools import product

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)

p = product(length_cm, height_cm)

explanatory_data = pd.DataFrame(p,
                                columns=["length_cm",
                                         "height_cm"])
prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_both.predict(explanatory_data))
print(prediction_data)
     length_cm  height_cm       mass_g
0            5          2  -424.638603
1            5          4  -371.968995
2            5          6  -319.299387
3            5          8  -266.629780
4            5         10  -213.960172
..         ...        ...          ...
115         60         12  1431.971694
116         60         14  1484.641302
117         60         16  1537.310909
118         60         18  1589.980517
119         60         20  1642.650125

[120 rows x 3 columns]
Hồi quy trung cấp với statsmodels trong Python

Vẽ biểu đồ các dự đoán

sns.scatterplot(x="length_cm",
                y="height_cm",
                data=fish,
                hue="mass_g")
sns.scatterplot(x="length_cm",
                y="height_cm",
                data=prediction_data,
                hue="mass_g",
                legend=False,
                marker="s")
plt.show()

biểu đồ phân tán chiều dài, chiều cao và khối lượng cá, kèm lưới dự đoán.

Hồi quy trung cấp với statsmodels trong Python

Thêm tương tác

mdl_mass_vs_both_inter = ols("mass_g ~ length_cm * height_cm",
                             data=fish).fit()
print(mdl_mass_vs_both_inter.params)
Intercept              159.107480
length_cm                0.301426
height_cm              -78.125178
length_cm:height_cm      3.545435
Hồi quy trung cấp với statsmodels trong Python

Quy trình dự đoán với tương tác

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)

p = product(length_cm, height_cm)

explanatory_data = pd.DataFrame(p,
                                columns=["length_cm",
                                         "height_cm"])

prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_both_inter.predict(explanatory_data))
Hồi quy trung cấp với statsmodels trong Python

Vẽ biểu đồ các dự đoán

sns.scatterplot(x="length_cm",
           y="height_cm",
           data=fish,
           hue="mass_g")

sns.scatterplot(x="length_cm",
                y="height_cm",
                data=prediction_data,
                hue="mass_g",
                legend=False,
                marker="s")
plt.show()

biểu đồ phân tán chiều dài, chiều cao và khối lượng cá, có biến tương tác trên lưới dự đoán.

Hồi quy trung cấp với statsmodels trong Python

Ayo berlatih!

Hồi quy trung cấp với statsmodels trong Python

Preparing Video For Download...