对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中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
python实现SMTP邮件发送功能
Jun 16 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
Jun 02 Python
浅谈Python 集合(set)类型的操作——并交差
Jun 30 Python
Python 模块EasyGui详细介绍
Feb 19 Python
Django框架模板介绍
Jan 15 Python
python调用百度地图WEB服务API获取地点对应坐标值
Jan 16 Python
python使用time、datetime返回工作日列表实例代码
May 09 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
python获取Pandas列名的几种方法
Aug 07 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
浅析Python __name__ 是什么
Jul 07 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的十大要点(上)
2009/02/04 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
python机器学习之KNN分类算法
2018/08/29 Python
详解python中list的使用
2019/03/15 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
建筑班组长岗位职责
2014/01/02 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
科学发展观演讲稿
2014/09/11 职场文书
行政答辩状范文
2015/05/21 职场文书