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 相关文章推荐
跟老齐学Python之玩转字符串(2)
Sep 14 Python
python网络编程实例简析
Sep 26 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
浅谈Python traceback的优雅处理
Aug 31 Python
python http基本验证方法
Dec 26 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
Django自带日志 settings.py文件配置方法
Aug 30 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
pytorch实现线性拟合方式
Jan 15 Python
解决json中ensure_ascii=False的问题
Apr 03 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
PHP 中魔术常量的实例详解
2017/10/26 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
python实现红包裂变算法
2016/02/16 Python
Python对文件操作知识汇总
2016/05/15 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
Python提取频域特征知识点浅析
2019/03/04 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
门卫班长岗位职责
2013/12/15 职场文书
甜点店创业计划书
2014/01/27 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
初中作文评语大全
2014/04/23 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
课外活动总结
2015/02/04 职场文书
放假通知
2015/04/14 职场文书
公司年夜饭通知
2015/04/25 职场文书
八一建军节主持词
2015/07/01 职场文书