sklearn 回归python_机器学习:scipy和sklearn中普通最小二乘法与多项式回归的使用对...

本文对比了sklearn和scipy中普通最小二乘法的实现,同时介绍了sklearn中多项式回归的使用,通过实例展示了如何进行线性与多项式拟合,并探讨了两者在灵活性和参数获取方面的差异。
摘要由CSDN通过智能技术生成

相关内容连接:

有些内容已经在上面两篇博文中提到了,所以就不重复了。这里主要讲的是sklearn包与scipy包中相关函数的区别。并且多项式回归和普通最小二乘法联系比较紧密,所以也放到此处讲了。

1.普通最小二乘法

1)文一中的数据采用sklearn包的函数拟合

from sklearn importlinear_modelimportnumpy as npimportmatplotlib.pyplot as plt##样本数据(Xi,Yi),需要转换成数组(列表)形式

Xi=np.array([6.19,2.51,7.29,7.01,5.7,2.66,3.98,2.5,9.1,4.2]).reshape(-1,1)

Yi=np.array([5.25,2.83,6.41,6.71,5.1,4.23,5.05,1.98,10.5,6.3]).reshape(-1,1)##设置模型

model =linear_model.LinearRegression()##训练数据

model.fit(Xi, Yi)##用训练得出的模型预测数据

y_plot =model.predict(Xi)##打印线性方程的权重

print(model.coef_) ## 0.90045842##绘图

plt.scatter(Xi, Yi, color='red',label="样本数据",linewidth=2)

plt.plot(Xi, y_plot, color='green',label="拟合直线",linewidth=2)

plt.legend(loc='lower right')

plt.show()

2)结果图

5635415a7e86c626e735e5e7ecc45f43.png    

4a569cf6b7c7cf0240bdec6e04c97f2e.png

(当前代码图)                                                   (文一图片)

3)分析说明

从结果看,两种方式的拟合结果相似。但是这里只有一个可知参数:0.90045842,而且拟合的线性方程具体形式未知。文一的方式可以自己设置线性方程形式,并且所有参数都可以求的结果。

2.多项式回归

多项式回归其实是对普通最小二乘法的一个扩展,即当标准的直线方程(一元一次方程)无法满足拟合要求的时候,可以扩展到多元多次方程,例如文二中的例子就简单的扩展了一下:一元二次方程。

下面要说的sklearn包中多项式回归的使用方式其实和文二中的方式一样:指定一个基函数,但是我查看了官网的大部分例子,发现只能使用sklearn包中的线性回归函数,无法像文二一样自定义基函数

下面是使用例子:

from sklearn.preprocessing importPolynomialFeaturesfrom sklearn.pipeline importmake_pipelineimportnumpy as npimportmatplotlib.pyplot as pltfrom sklearn.linear_model importRidge##样本数据(Xi,Yi),需要转换成数组(列表)形式

Xi=np.array([1,2,3,4,5,6]).reshape(-1,1)#Yi=np.array([9,18,31,48,69,94])

Yi=np.array([9.1,18.3,32,47,69.5,94.8]).reshape(-1,1)

##这里指定使用岭回归作为基函数

model= make_pipeline(PolynomialFeatures(2), Ridge())

model.fit(Xi, Yi)

##根据模型预测结果

y_plot=model.predict(Xi)

##绘图

plt.scatter(Xi, Yi, color='red',label="样本数据",linewidth=2)

plt.plot(Xi, y_plot, color='green',label="拟合直线",linewidth=2)

plt.legend(loc='lower right')

plt.show()

1661d747a0ae4f688da86623fd6e4cea.png    

adb912d3391b1cc5f7b835f782ace065.png

(本例结果图)                                                              (文二图)

在本例中完全得不到关于参数的任何信息。

3.总结

1.多项式回归是线性模型的一个扩展

2.scipy包中关于最小二乘法或者多项式回归的使用方式比较方便灵活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值