对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基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
全面了解Nginx, WSGI, Flask之间的关系
Jan 09 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
python绘图模块matplotlib示例详解
Jul 26 Python
Django ImageFiled上传照片并显示的方法
Jul 28 Python
python在OpenCV里实现投影变换效果
Aug 30 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
python实现的汉诺塔算法示例
Oct 23 Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 Python
Python中 Global和Nonlocal的用法详解
Jan 20 Python
Python实现批量自动整理文件
Mar 16 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
php导出word格式数据的代码实例
2013/11/25 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
php中strtotime函数用法详解
2014/11/15 PHP
php获取系统变量方法小结
2015/05/29 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
jquery中ajax学习笔记3
2011/10/16 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python画图的函数用法以及技巧
2019/06/28 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
python实现批量文件重命名
2019/10/31 Python
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
医学生毕业自我鉴定
2014/03/26 职场文书
新员工试用期自我评价
2015/03/10 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
Python循环之while无限迭代
2022/04/30 Python