对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中的CURL PycURL使用例子
Jun 01 Python
python实现进程间通信简单实例
Jul 23 Python
python中sys.argv参数用法实例分析
May 20 Python
python简单实例训练(21~30)
Nov 15 Python
python 获取当天每个准点时间戳的实例
May 22 Python
Python实现的多进程和多线程功能示例
May 29 Python
opencv python 图像去噪的实现方法
Aug 31 Python
由面试题加深对Django的认识理解
Jul 19 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
详解Flask开发技巧之异常处理
Jun 15 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 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分页显示制作详细讲解
2006/12/05 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
HTML5附件拖拽上传drop & google.gears实现代码
2011/04/28 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
Python中asyncore的用法实例
2014/09/29 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
python os.rename实例用法详解
2020/12/06 Python
用Python实现职工信息管理系统
2020/12/30 Python
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
syb养殖创业计划书
2014/01/09 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
撤诉书怎么写
2015/05/19 职场文书
同乡会致辞
2015/07/30 职场文书
初中军训感言
2015/08/01 职场文书
三好学生竞选稿
2015/11/21 职场文书