对python实现二维函数高次拟合的示例详解


Posted in Python onDecember 29, 2018

在参加“数据挖掘”比赛中遇到了关于函数高次拟合的问题,然后就整理了一下源码,以便后期的学习与改进。

在本次“数据挖掘”比赛中感觉收获最大的还是对于神经网络的认识,在接近一周的时间里,研究了进40种神经网络模型,虽然在持续一周的挖掘比赛把自己折磨的惨不忍睹,但是收获颇丰。现在想想也挺欣慰自己在这段时间里接受新知识的能力。关于神经网络方面的理解会在后续博文中补充(刚提交完论文,还没来得及整理),先分享一下高次拟合方面的知识。

# coding=utf-8
import matplotlib.pyplot as plt
import numpy as np
import scipy as sp
import csv
from scipy.stats import norm
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn import linear_model

''''' 数据导入 '''
def loadDataSet(fileName):
 dataMat = []
 labelMat = []
 csvfile = file(fileName, 'rb')
 reader = csv.reader(csvfile)
 b = 0
 for line in reader:
  if line[50] is '':
   b += 1
  else:
   dataMat.append(float(line[41])/100*20+30)
   labelMat.append(float(line[25])*100)


 csvfile.close()
 print "absence time number: %d" % b
 return dataMat,labelMat

xArr,yArr = loadDataSet('data.csv')
x = np.array(xArr)
y = np.array(yArr)
# x = np.arange(0, 1, 0.002)
# y = norm.rvs(0, size=500, scale=0.1)
# y = y + x ** 2

def rmse(y_test, y):
 return sp.sqrt(sp.mean((y_test - y) ** 2))

def R2(y_test, y_true):
 return 1 - ((y_test - y_true) ** 2).sum() / ((y_true - y_true.mean()) ** 2).sum()

def R22(y_test, y_true):
 y_mean = np.array(y_true)
 y_mean[:] = y_mean.mean()
 return 1 - rmse(y_test, y_true) / rmse(y_mean, y_true)


plt.scatter(x, y, s=5)
#分别进行1,2,3,6次拟合
degree = [1, 2,3, 6]
y_test = []
y_test = np.array(y_test)

for d in degree:
 #普通
 # clf = Pipeline([('poly', PolynomialFeatures(degree=d)),
 #     ('linear', LinearRegression(fit_intercept=False))])
 # clf.fit(x[:, np.newaxis], y)

 # 岭回归
 clf = Pipeline([('poly', PolynomialFeatures(degree=d)),
     ('linear', linear_model.Ridge())])
 clf.fit(x[:, np.newaxis], y)
 y_test = clf.predict(x[:, np.newaxis])

 print('多项式参数%s' %clf.named_steps['linear'].coef_)
 print('rmse=%.2f, R2=%.2f, R22=%.2f, clf.score=%.2f' %
   (rmse(y_test, y),
   R2(y_test, y),
   R22(y_test, y),
   clf.score(x[:, np.newaxis], y)))

 plt.plot(x, y_test, linewidth=2)

plt.grid()
plt.legend(['1', '2','3', '6'], loc='upper left')
plt.show()

以上这篇对python实现二维函数高次拟合的示例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用__slots__方法的详细教程
Apr 28 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
python pygame实现球球大作战
Nov 25 Python
numpy.linalg.eig() 计算矩阵特征向量方式
Nov 29 Python
python中有关时间日期格式转换问题
Dec 25 Python
Python递归调用实现数字累加的代码
Feb 25 Python
Django用数据库表反向生成models类知识点详解
Mar 25 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 Python
Python unittest装饰器实现原理及代码
Sep 08 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 Python
Python将CSV文件转化为HTML文件的操作方法
Jun 30 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 #Python
Python 做曲线拟合和求积分的方法
Dec 29 #Python
python 画三维图像 曲面图和散点图的示例
Dec 29 #Python
python实现三维拟合的方法
Dec 29 #Python
Django数据库连接丢失问题的解决方法
Dec 29 #Python
Python Cookie 读取和保存方法
Dec 28 #Python
Python编程flask使用页面模版的方法
Dec 28 #Python
You might like
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
ThinkPHP框架安全实现分析
2016/03/14 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
python文件操作的简单方法总结
2019/11/07 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
员工自我鉴定范文
2013/10/06 职场文书
会展中心部门工作职责
2013/11/27 职场文书
毕业生个人的求职信范文
2013/12/03 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
《会变的花树叶》教学反思
2014/02/10 职场文书
奥利奥广告词
2014/03/20 职场文书
申报优秀教师材料
2014/12/16 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL