背景
(Shalev-Shwartz and Ben-David 2009) の Model Selection and Validatin の図を再現したい。つまり、 Figure: 1 のようなデータを多項式で回帰したい。
コード
Python の scikit-learn
で実現する。概略は入力データを指定次元分の単項式に変換し、線形回帰で実現する。
使用するのは主に2つの機能である。
- sklearn.preprocessing.PolynomialFeatures — scikit-learn 1.1.2 documentation
- sklearn.linear_model.LinearRegression — scikit-learn 1.1.2 documentation
まず、特徴量を PolynomialFeatures
で変換する。変換元のデータが一次元のはずなので、形状に注意。
polynomial_features= PolynomialFeatures(degree=3) xs_poly = polynomial_features.fit_transform(xs.reshape((30,1)))
そして、線形回帰を使用する。
model = LinearRegression() model.fit(xs_poly, ys) ys_pred = model.predict(xs_poly)
Figure: 2 に作成された多項式回帰のモデルの予測結果をプロットした。