1
我正在编写一个python代码,用于在[0,1]范围内使用函数sin(2.pi.x)来检查over-fiting。我首先通过使用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行?我认为它应该是1行,不管M是多少。你能帮我弄清楚这个问题。
现在的工作。非常感谢你。据我所知,我应该是0,对吧?因为我想根据X绘制一张图片,而不是更高的多项式。 –
我可以是0或1.如果要用原始数据集绘制图形,即在使用多项式特征生成之前,则应使用代码中定义的变量X_plot。如果它解决了你的问题,请接受答案。 – ashwinids
@ ashwinids:我接受。但是,当我尝试使用M = 0时,代码不会编码。你知道我该如何处理这个问题?因为我需要在M = 0处进行评估,所以 –