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處進行評估,所以 –