Dự đoán

Giới thiệu về Hồi quy với statsmodels trong Python

Maarten Van den Broeck

Content Developer at DataCamp

Bộ dữ liệu cá: cá tráp

bream = fish[fish["species"] == "Bream"]
print(bream.head())
  species  mass_g  length_cm
0   Bream   242.0       23.2
1   Bream   290.0       24.0
2   Bream   340.0       23.9
3   Bream   363.0       26.3
4   Bream   430.0       26.5

Cá tráp thường, _Abramis brama_

Giới thiệu về Hồi quy với statsmodels trong Python

Vẽ khối lượng theo chiều dài

sns.regplot(x="length_cm",
            y="mass_g",
            data=bream,
            ci=None)

plt.show()

Biểu đồ phân tán khối lượng cá tráp theo chiều dài, với đường xu hướng tuyến tính. Các điểm nằm sát đường xu hướng.

Giới thiệu về Hồi quy với statsmodels trong Python

Chạy mô hình

mdl_mass_vs_length = ols("mass_g ~ length_cm", data=bream).fit()

print(mdl_mass_vs_length.params)
Intercept   -1035.347565
length_cm      54.549981
dtype: float64
Giới thiệu về Hồi quy với statsmodels trong Python

Dữ liệu giá trị giải thích để dự đoán

Nếu tôi đặt biến giải thích bằng các giá trị này,
giá trị của biến phản hồi sẽ là bao nhiêu?

explanatory_data = pd.DataFrame({"length_cm": np.arange(20, 41)})
    length_cm
0          20
1          21
2          22
3          23
4          24
5          25
     ...
Giới thiệu về Hồi quy với statsmodels trong Python

Gọi predict()

print(mdl_mass_vs_length.predict(explanatory_data))
0       55.652054
1      110.202035
2      164.752015
3      219.301996
4      273.851977
    ...
16     928.451749
17     983.001730
18    1037.551710
19    1092.101691
20    1146.651672
Length: 21, dtype: float64
Giới thiệu về Hồi quy với statsmodels trong Python

Dự đoán trong DataFrame

explanatory_data = pd.DataFrame(
  {"length_cm": np.arange(20, 41)}
)

prediction_data = explanatory_data.assign( mass_g=mdl_mass_vs_length.predict(explanatory_data) )
print(prediction_data)
    length_cm         mass_g
0          20      55.652054
1          21     110.202035
2          22     164.752015
3          23     219.301996
4          24     273.851977
..        ...            ...
16         36     928.451749
17         37     983.001730
18         38    1037.551710
19         39    1092.101691
20         40    1146.651672
Giới thiệu về Hồi quy với statsmodels trong Python

Hiển thị dự đoán

import matplotlib.pyplot as plt
import seaborn as sns
fig = plt.figure()
sns.regplot(x="length_cm",
            y="mass_g",
            ci=None,
            data=bream,)
sns.scatterplot(x="length_cm",
                y="mass_g",
                data=prediction_data, 
                color="red",
                marker="s")
plt.show()

Biểu đồ phân tán khối lượng cá tráp theo chiều dài, với đường xu hướng tuyến tính. Biểu đồ được chú thích bằng các điểm tính bằng predict(). Các điểm này nằm đúng trên đường xu hướng.

Giới thiệu về Hồi quy với statsmodels trong Python

Ngoại suy

“Ngoại suy” là dự đoán ngoài phạm vi dữ liệu quan sát.

little_bream = pd.DataFrame({"length_cm": [10]})

pred_little_bream = little_bream.assign(
    mass_g=mdl_mass_vs_length.predict(little_bream))

print(pred_little_bream)
   length_cm      mass_g
0         10 -489.847756

Biểu đồ phân tán khối lượng cá tráp theo chiều dài, với đường xu hướng tuyến tính. Biểu đồ được chú thích bằng một con cá tráp giả 10 cm và khối lượng dự đoán của nó.

Giới thiệu về Hồi quy với statsmodels trong Python

Ayo berlatih!

Giới thiệu về Hồi quy với statsmodels trong Python

Preparing Video For Download...