本ページでは以下のページを要約するとともに、個人的な解説も記載しています。独特な解釈をしている部分があるので、誤りなどの指摘はtwitterまでお願いします。
参考ページ
Supervised learning: predicting an output variable from high-dimensional observations — scikit-learn 1.1.2 documentation
https://scikit-learn.org/stable/tutorial/statistical_inference/supervised_learning.html
閲覧日:2022年10月12日
線形モデル: 回帰からスパースへ
糖尿病データセット
糖尿病データセットは、442 人の患者で測定された 10 の生理学的変数 (年齢、性別、体重、血圧) と、1 年後の疾患進行の指標で構成されています。
#後ろの20個のデータをテストデータとして分割
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]
本課題は生理学的データから糖尿病の進行状況を予測するものです。
線形回帰
LinearRegression
は、目的変数として二乗誤差を最小とすることを目標に線形モデルのパラメータを調整します。
以下のグラフの描き方はこちら。
from sklearn import linear_model
regr = linear_model.LinearRegression()
regr.fit(diabetes_X_train, diabetes_y_train)
#LinearRegression()
print(regr.coef_)
#[ 0.30349955 -237.63931533 510.53060544 327.73698041 -814.13170937
# 492.81458798 102.84845219 184.60648906 743.51961675 76.09517222]
# 平均二乗誤差
np.mean((regr.predict(diabetes_X_test) - diabetes_y_test)**2)
#2004.5...
#スコアを求めます。0~1の間の数値で、1は完璧に予測できていることを表し、0は全く予測できていなことを表します。
regr.score(diabetes_X_test, diabetes_y_test)
#0.585...