ตัวแปรอธิบายเชิงตัวเลขสองตัว

Regression ระดับกลางด้วย statsmodels ใน Python

Maarten Van den Broeck

Content Developer at DataCamp

การแสดงผลตัวแปรเชิงตัวเลขสามตัว

  • Scatter plot แบบ 3D
  • Scatter plot แบบ 2D ที่ใช้สีแทนค่า response
Regression ระดับกลางด้วย statsmodels ใน Python

คอลัมน์ใหม่ในชุดข้อมูลปลา

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
Regression ระดับกลางด้วย statsmodels ใน Python

Scatter plot แบบ 3D

Scatter plot แบบ 3D ของปลาทุกสายพันธุ์ โดยมีแกน length, mass และ height แปลผลได้ยากเมื่อแสดงบนระนาบ 2D

Regression ระดับกลางด้วย statsmodels ใน Python

Scatter plot แบบ 2D ใช้สีแทน response

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

Scatter plot แบบ 2D ที่ใช้สีของ mass เพื่อแสดงตัวแปรเชิงตัวเลขตัวที่สาม

Regression ระดับกลางด้วย statsmodels ใน Python

การสร้างโมเดลด้วยตัวแปรอธิบายเชิงตัวเลขสองตัว

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
Regression ระดับกลางด้วย statsmodels ใน Python

ขั้นตอนการพยากรณ์

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]
Regression ระดับกลางด้วย statsmodels ใน Python

การพล็อตค่าพยากรณ์

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()

scatter plot ของ length, height และ mass ของปลา พร้อม prediction grid

Regression ระดับกลางด้วย statsmodels ใน Python

การเพิ่ม interaction term

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
Regression ระดับกลางด้วย statsmodels ใน Python

ขั้นตอนการพยากรณ์เมื่อมี interaction

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))
Regression ระดับกลางด้วย statsmodels ใน Python

การพล็อตค่าพยากรณ์

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()

scatter plot ของ length, height และ mass ของปลา พร้อม interaction term บน prediction grid

Regression ระดับกลางด้วย statsmodels ใน Python

มาฝึกกันเถอะ!

Regression ระดับกลางด้วย statsmodels ใน Python

Preparing Video For Download...