对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 28 Python
Python中处理字符串之isalpha()方法的使用
May 18 Python
常用python编程模板汇总
Feb 12 Python
Python对象类型及其运算方法(详解)
Jul 05 Python
pyqt5自定义信号实例解析
Jan 31 Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
python去除扩展名的实例讲解
Apr 23 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
详解Python传入参数的几种方法
May 16 Python
python中dict使用方法详解
Jul 17 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 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加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
使用python实现接口的方法
2017/07/07 Python
python清除字符串中间空格的实例讲解
2018/05/11 Python
python简单操作excle的方法
2018/09/12 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
应用化学专业职业生涯规划书
2013/12/31 职场文书
事务机电主管工作职责
2014/02/25 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
上学路上观后感
2015/06/16 职场文书
篮球赛新闻稿
2015/07/17 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
Python中else的三种使用场景
2021/06/16 Python
Python实现双向链表
2022/05/25 Python
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技