Python 确定多项式拟合/回归的阶数实例


Posted in Python onDecember 29, 2018

通过 1至10 阶来拟合对比 均方误差及R评分,可以确定最优的“最大阶数”。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression,Perceptron
from sklearn.metrics import mean_squared_error,r2_score
from sklearn.model_selection import train_test_split
 
X = np.array([-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10]).reshape(-1, 1)
y = np.array(2*(X**4) + X**2 + 9*X + 2)
#y = np.array([300,500,0,-10,0,20,200,300,1000,800,4000,5000,10000,9000,22000]).reshape(-1, 1)
 
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
rmses = []
degrees = np.arange(1, 10)
min_rmse, min_deg,score = 1e10, 0 ,0
 
for deg in degrees:
	# 生成多项式特征集(如根据degree=3 ,生成 [[x,x**2,x**3]] )
	poly = PolynomialFeatures(degree=deg, include_bias=False)
	x_train_poly = poly.fit_transform(x_train)
 
	# 多项式拟合
	poly_reg = LinearRegression()
	poly_reg.fit(x_train_poly, y_train)
	#print(poly_reg.coef_,poly_reg.intercept_) #系数及常数
	
	# 测试集比较
	x_test_poly = poly.fit_transform(x_test)
	y_test_pred = poly_reg.predict(x_test_poly)
	
	#mean_squared_error(y_true, y_pred) #均方误差回归损失,越小越好。
	poly_rmse = np.sqrt(mean_squared_error(y_test, y_test_pred))
	rmses.append(poly_rmse)
	# r2 范围[0,1],R2越接近1拟合越好。
	r2score = r2_score(y_test, y_test_pred)
	
	# degree交叉验证
	if min_rmse > poly_rmse:
		min_rmse = poly_rmse
		min_deg = deg
		score = r2score
	print('degree = %s, RMSE = %.2f ,r2_score = %.2f' % (deg, poly_rmse,r2score))
		
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(degrees, rmses)
ax.set_yscale('log')
ax.set_xlabel('Degree')
ax.set_ylabel('RMSE')
ax.set_title('Best degree = %s, RMSE = %.2f, r2_score = %.2f' %(min_deg, min_rmse,score)) 
plt.show()

Python 确定多项式拟合/回归的阶数实例

Python 确定多项式拟合/回归的阶数实例

因为因变量 Y = 2*(X**4) + X**2 + 9*X + 2 ,自变量和因变量是完整的公式,看图很明显,degree >=4 的都符合,拟合函数都正确。(RMSE 最小,R平方非负且接近于1,则模型最好

如果将 Y 值改为如下:

y = np.array([300,500,0,-10,0,20,200,300,1000,800,4000,5000,10000,9000,22000]).reshape(-1, 1)

Python 确定多项式拟合/回归的阶数实例

Python 确定多项式拟合/回归的阶数实例

degree=3 是最好的,且 r 平方也最接近于1(注意:如果 R 平方为负数,则不准确,需再次测试。因样本数据较少,可能也会判断错误)。

以上这篇Python 确定多项式拟合/回归的阶数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3生成手写体数字方法
Jan 30 Python
python构建深度神经网络(续)
Mar 10 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
Python中Numpy包的安装与使用方法简明教程
Jul 03 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
Python3 列表,数组,矩阵的相互转换的方法示例
Aug 05 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
Python图像处理库PIL详细使用说明
Apr 06 Python
全网非常详细的pytest配置文件
Jul 15 Python
python如何将mat文件转为png
Jul 15 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 #Python
Python实现高斯函数的三维显示方法
Dec 29 #Python
Python3 SSH远程连接服务器的方法示例
Dec 29 #Python
使用python绘制3维正态分布图的方法
Dec 29 #Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 #Python
对python指数、幂数拟合curve_fit详解
Dec 29 #Python
对python实现二维函数高次拟合的示例详解
Dec 29 #Python
You might like
中国收音机工业发展史
2021/03/02 无线电
FleaPHP的安全设置方法
2008/09/15 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
浅析Python编写函数装饰器
2016/03/18 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
简单实现python聊天程序
2018/04/01 Python
python组合无重复三位数的实例
2018/11/13 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
IE9下html5初试小刀
2010/09/21 HTML / CSS
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
毕业生找工作推荐信
2013/11/21 职场文书
前台接待岗位职责
2013/12/03 职场文书
敬老文明号事迹材料
2014/01/16 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
工资证明格式模板
2015/06/12 职场文书
圣诞晚会主持词
2015/07/01 职场文书
环境卫生整治简报
2015/07/20 职场文书
医生行业员工的辞职信
2019/06/24 职场文书