机器学习
解决欠拟合的多项式扩展方法的原理:
通过循环把多项扩展从1到10看出多项式扩展的线性过程
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
%matplotlib inline
mpl.rcParams["font.family"]="SimHei"
mpl.rcParams["axes.unicode_minus"]=False
x=np.linspace(1,10,50)
y=x*np.sin(x)
# np.newaxis=None #手贱用del newaxis删除了newaxis,只能通过重新指定np.newaxis=None才能正常使用-_-!!!
X=x[:,np.newaxis]
# display(X,x)
f=plt.figure()
fig,ax=plt.subplots(5,2)
fig.set_size_inches(18,20)
display(ax)
ax=ax.ravel()#这里注意要扁平化,方便后面循环处理
display(ax)
for n in range(1,11):
poly=PolynomialFeatures(n)
r=poly.fit_transform(X)
lr=LinearRegression()
lr.fit(r,y)
print(lr.score(r,y))
ax[n-1].scatter(x,y,color="g",label="数据样本") #要注意这里n-1,因为n是从1开始的
ax[n-1].plot(X,lr.predict(r),"r-",label="拟合线")
ax[n-1].legend()