对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 相关文章推荐
Python3.x中自定义比较函数
Apr 24 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
Django中的Signal代码详解
Feb 05 Python
Python高级用法总结
May 26 Python
python实现俄罗斯方块
Jun 26 Python
对python:print打印时加u的含义详解
Dec 15 Python
python绘制BA无标度网络示例代码
Nov 21 Python
python多进程下的生产者和消费者模型
May 07 Python
使用pytorch实现论文中的unet网络
Jun 24 Python
python 如何实现遗传算法
Sep 22 Python
Python之字典对象的几种创建方法
Sep 30 Python
Python first-order-model实现让照片动起来
Jun 25 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
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
几个javascript操作word的参考代码
2009/10/26 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
使用python生成目录树
2018/03/29 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
python批量修改交换机密码的示例
2020/09/22 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
电信专业毕业生推荐信
2013/11/18 职场文书
银行实习鉴定
2013/12/13 职场文书
旅游个人求职信范文
2014/01/30 职场文书
五型班组建设方案
2014/02/10 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
Python机器学习之基础概述
2021/05/19 Python