1
私は[0,1]の範囲で関数sin(2πx)を使って過剰フィットを調べるためのPythonコードを書いています。私は最初に、mu = 0およびsigma = 1のガウス分布を用いてランダムノイズを加えることによってN個のデータ点を生成する。私はM番目の多項式を使ってモデルをフィットさせました。ここに私のコードScikit-LearnでPythonで多項式回帰をプロットする
import matplotlib.pyplot as plt
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
# generate N random points
N=30
X= np.random.rand(N,1)
y= np.sin(np.pi*2*X)+ np.random.randn(N,1)
M=2
poly_features=PolynomialFeatures(degree=M, include_bias=False)
X_poly=poly_features.fit_transform(X) # contain original X and its new features
model=LinearRegression()
model.fit(X_poly,y) # Fit the model
# Plot
X_plot=np.linspace(0,1,100).reshape(-1,1)
X_plot_poly=poly_features.fit_transform(X_plot)
plt.plot(X,y,"b.")
plt.plot(X_plot_poly,model.predict(X_plot_poly),'-r')
plt.show()
Picture of polynomial regression
私はm番目の多項式ラインのM = 2のラインを持っている理由私にはわからないのですか?私はMに関係なく1行でなければならないと思います。この問題を理解するのを助けてください。
にプロットコードそれが機能するようになりました。どうもありがとうございます。私の知る限りでは、私は0でなければなりません。高次の多項式ではなく、Xに従って絵を描きたいからです。 –
iは0または1にすることができます。元のデータセットでグラフをプロットする場合、つまり多項式フィーチャ生成を使用する前に、コードで定義された変数X_plotを使用する必要があります。問題が解決したら、その答えを受け入れてください。 – ashwinids
@ ashwinids:私は受け入れました。しかし、M = 0で試してみると、コードはコード化されません。この問題をどうやって解決できるかご存知ですか? M = 0で評価する必要があるので、 –