評估模型效能

使用 Python 的 statsmodels 進行迴歸分析:中級

Maarten Van den Broeck

Content Developer at DataCamp

模型效能指標

  • 「決定係數(R-squared)」:線性回歸線對觀察值的擬合程度。

    • 越大越好。
  • 「殘差標準誤(RSE)」:殘差的典型大小。

    • 越小越好。
使用 Python 的 statsmodels 進行迴歸分析:中級

取得決定係數

print(mdl_mass_vs_length.rsquared)
0.8225689502644215
print(mdl_mass_vs_species.rsquared)
0.25814887709499157
print(mdl_mass_vs_both.rsquared)
0.9200433561156649
使用 Python 的 statsmodels 進行迴歸分析:中級

調整後決定係數

  • 解釋變數越多,$R^2$ 會上升。
  • 解釋變數過多會造成過度擬合。
  • 「調整後決定係數」會對更多解釋變數加以懲罰。
  • $\bar{R ^ 2} = 1 - (1 - R ^ 2) \frac{n_{obs} - 1}{n_{obs} - n_{var} - 1}$
  • 當 $R^2$ 小,或 $n_{var}$ 佔 $n_{obs}$ 比例大時,懲罰更明顯。
  • statsmodels 中,對應屬性為 rsquared_adj
使用 Python 的 statsmodels 進行迴歸分析:中級

取得調整後決定係數

print("rsq_length: ", mdl_mass_vs_length.rsquared)
print("rsq_adj_length: ", mdl_mass_vs_length.rsquared_adj)
rsq_length:  0.8225689502644215
rsq_adj_length:  0.8211607673300121
print("rsq_species: ", mdl_mass_vs_species.rsquared)
print("rsq_adj_species: ", mdl_mass_vs_species.rsquared_adj)
rsq_species:  0.25814887709499157
rsq_adj_species:  0.24020086605696722
print("rsq_both: ", mdl_mass_vs_both.rsquared
print("rsq_adj_both: ", mdl_mass_vs_both.rsquared_adj)
rsq_both:  0.9200433561156649
rsq_adj_both:  0.9174431400543857
使用 Python 的 statsmodels 進行迴歸分析:中級

取得殘差標準誤

rse_length = np.sqrt(mdl_mass_vs_length.mse_resid)
print("rse_length: ", rse_length)
rse_length:  152.12092835414788
rse_species = np.sqrt(mdl_mass_vs_species.mse_resid)
print("rse_species: ", rse_species)
rse_species:  313.5501156682592
rse_both = np.sqrt(mdl_mass_vs_both.mse_resid)
print("rse_both: ", rse_both)
rse_both:  103.35563303966488
使用 Python 的 statsmodels 進行迴歸分析:中級

一起來練習吧!

使用 Python 的 statsmodels 進行迴歸分析:中級

Preparing Video For Download...