对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设计模式之代理模式实例
Apr 26 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
May 16 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
Jun 02 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
python调用接口的4种方式代码实例
Nov 19 Python
关于tensorflow的几种参数初始化方法小结
Jan 04 Python
在Python中通过threshold创建mask方式
Feb 19 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
Python3读写ini配置文件的示例
Nov 06 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中利用XML技术构造远程服务(下)
2006/10/09 PHP
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
PHP7新特性简述
2017/06/11 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
python实现统计代码行数的小工具
2019/09/19 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
Python中logging日志库实例详解
2020/02/19 Python
详解Python 最短匹配模式
2020/07/29 Python
Python日志器使用方法及原理解析
2020/09/27 Python
秘书英文求职信范文
2014/01/31 职场文书
行政专员的岗位职责
2014/03/10 职场文书
教师工作表现评语
2014/12/31 职场文书
新郎答谢词
2015/01/04 职场文书
元旦主持词开场白
2015/05/29 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers