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实现的可以拷贝或剪切一个文件列表中的所有文件
Apr 30 Python
在Python中使用判断语句和循环的教程
Apr 25 Python
Python实现的爬虫功能代码
Jun 24 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
pandas表连接 索引上的合并方法
Jun 08 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
python递归下载文件夹下所有文件
Aug 31 Python
PyCharm2018 安装及破解方法实现步骤
Sep 09 Python
新年福利来一波之Python轻松集齐五福(demo)
Jan 20 Python
详解python的super()的作用和原理
Oct 29 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/04 星际争霸
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
原生JS实现天气预报
2020/06/16 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
在Python中使用next()方法操作文件的教程
2015/05/24 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
集团薪酬管理制度
2014/01/13 职场文书
中学生运动会口号
2014/06/07 职场文书
民族学专业求职信
2014/07/28 职场文书
实训报告范文大全
2014/11/04 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
机动车交通事故协议书
2015/01/29 职场文书
婚宴来宾致辞
2015/07/28 职场文书
情况说明书格式及范文
2019/06/24 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis
我去timi了,一起去timi是什么意思?
2022/04/13 杂记