一.代码部分 (合并转发,仅仅作为学习记录,仅供参考)
# 使用线性回归模型在比萨训练样本上进行拟合
import numpy as np
from sklearn.linear_model import LinearRegression #线性回归模型
import matplotlib.pyplot as plt
x_train = [[6],[8],[10],[14],[18]]
y_train = [[7],[9],[13],[17.5],[18]]
regressor=LinearRegression()
regressor.fit(x_train,y_train)
xx=np.linspace(0,26,100) #在0-25上均匀采样100个数据点
xx=xx.reshape(xx.shape[0],1) #数据维度转化
yy=regressor.predict(xx)
plt.scatter(x_train,y_train)
plt1,=plt.plot(xx,yy,label='Degree=l')
plt.axis([0,25,0,25])
plt.xlabel('Diameter of pizza')
plt.ylabel('price of pizza')
plt.legend(handles=[plt1])
plt.show()
print('回归模型在训练集上的R方:',regressor.score(x_train,y_train))
# 使用2次多项式回归模型进行拟合
from sklearn.preprocessing import PolynomialFeatures #从sklearn.preproessing 中导入多项式特征产生器
poly2=PolynomialFeatures(degree=2)
x_train_poly2=poly2.fit_transform(x_train)
regressor_poly2 = LinearRegression() #以线性回归器为基础,初始化回归模型
regressor_poly2.fit(x_train_poly2,y_train) #2次多项式回归模型训练
xx_poly2=poly2.transform(xx)
yy_poly2=regressor_poly2.predict(xx_poly2)
plt.scatter(x_train,y_train)
plt1,=plt.plot(xx,yy,label='Degree=l')
plt2,=plt.plot(xx,yy_poly2,label='Degree=2')
plt.axis([0,25,0,25])
plt.xlabel('Diameter of pizza')
plt.ylabel('price of pizza')
plt.legend(handles=[plt1,plt2])
plt.show()
print('2次多项式回归模型在训练集上的R方:',regressor_poly2.score(x_train_poly2,y_train))
# 使用4次多项式回归模型进行拟合
from sklearn.preprocessing import PolynomialFeatures #从sklearn.preproessing 中导入多项式特征产生器
poly4=PolynomialFeatures(degree=4)
x_train_poly4=poly4.fit_transform(x_train)
regressor_poly4 = LinearRegression() #以线性回归器为基础,初始化回归模型
regressor_poly4.fit(x_train_poly4,y_train) #2次多项式回归模型训练
xx_poly4=poly4.transform(xx)
yy_poly4=regressor_poly4.predict(xx_poly4)
plt.scatter(x_train,y_train)
plt1,=plt.plot(xx,yy,label='Degree=l')
plt2,=plt.plot(xx,yy_poly2,label='Degree=2')
plt4,=plt.plot(xx,yy_poly4,label='Degree=4')
plt.axis([0,25,0,25])
plt.xlabel('Diameter of pizza')
plt.ylabel('price of pizza')
plt.legend(handles=[plt1,plt2,plt4])
plt.show()
print('4次多项式回归模型在训练集上的R方:',regressor_poly4.score(x_train_poly4,y_train))
#测试数据
x_test = [[6],[8],[11],[16]]
y_test = [[8],[12],[15],[18]]
print('回归模型在测试集上的R方:',regressor.score(x_test,y_test))
x_test_poly2=poly2.transform(x_test) #使用测试数据对2次多项式回归模型的性能进行评估
print('2次多项式回归模型在测试集上的R方:',regressor_poly2.score(x_test_poly2,y_test))
x_test_poly4=poly4.transform(x_test) #使用测试数据对4次多项式回归模型的性能进行评估
print('4次多项式回归模型在测试集上的R方:',regressor_poly4.score(x_test_poly4,y_test))