はじめに
この実験では、Python の scikit - learn ライブラリを使って、最小二乗法(OLS)とリッジ回帰の違いを調べます。これら 2 つの線形回帰手法がデータのノイズにどのように対処するか、また予測においてどのように異なるかを調べます。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
ライブラリのインポート
このステップでは、必要な Python ライブラリをインポートします。
import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
データの作成
このステップでは、分析に使用するデータを作成します。
X_train = np.c_[0.5, 1].T
y_train = [0.5, 1]
X_test = np.c_[0, 2].T
識別器の定義
このステップでは、OLS とリッジ回帰の識別器を定義します。
classifiers = dict(
ols=linear_model.LinearRegression(), ridge=linear_model.Ridge(alpha=0.1)
)
結果の可視化
このステップでは、分析結果を可視化します。
for name, clf in classifiers.items():
fig, ax = plt.subplots(figsize=(4, 3))
for _ in range(6):
this_X = 0.1 * np.random.normal(size=(2, 1)) + X_train
clf.fit(this_X, y_train)
ax.plot(X_test, clf.predict(X_test), color="gray")
ax.scatter(this_X, y_train, s=3, c="gray", marker="o", zorder=10)
clf.fit(X_train, y_train)
ax.plot(X_test, clf.predict(X_test), linewidth=2, color="blue")
ax.scatter(X_train, y_train, s=30, c="red", marker="+", zorder=10)
ax.set_title(name)
ax.set_xlim(0, 2)
ax.set_ylim((0, 1.6))
ax.set_xlabel("X")
ax.set_ylabel("y")
fig.tight_layout()
plt.show()
まとめ
この実験では、Python の scikit - learn ライブラリを使って、普通最小二乗法(OLS)とリッジ回帰の違いを調べる方法を学びました。これら 2 つの線形回帰手法がデータのノイズにどのように対処するか、また予測においてどのように異なるかを見ました。また、分析結果を可視化しました。