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中针对函数处理的特殊方法
Mar 06 Python
使用Python开发windows GUI程序入门实例
Oct 23 Python
matplotlib实现区域颜色填充
Mar 18 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
Django的性能优化实现解析
Jul 30 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
python 实现生成均匀分布的点
Dec 05 Python
tensorflow estimator 使用hook实现finetune方式
Jan 21 Python
如何使用python切换hosts文件
Apr 29 Python
用python写PDF转换器的实现
Oct 29 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
python基于turtle绘制几何图形
Jun 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
桌面中心(三)修改数据库
2006/10/09 PHP
PHP 翻页 实例代码
2009/08/07 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
PHP后端银联支付及退款实例代码
2017/06/23 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
用js遍历 table的脚本
2008/07/23 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
电气专业应届生求职信
2013/11/01 职场文书
车辆工程专业求职信
2014/04/28 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
五年级上册复习计划
2015/01/19 职场文书
单位租车协议书
2015/01/29 职场文书
入党群众意见范文
2015/06/02 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
JavaScript ES6的函数拓展
2022/01/18 Javascript
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers