对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之装饰器、迭代器和生成器
Jul 26 Python
Python 实现淘宝秒杀的示例代码
Jan 02 Python
python如何使用unittest测试接口
Apr 04 Python
pygame实现简易飞机大战
Sep 11 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
python梯度下降算法的实现
Feb 24 Python
Python自动化测试笔试面试题精选
Mar 12 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
Apr 25 Python
python boto和boto3操作bucket的示例
Oct 30 Python
python 实现学生信息管理系统的示例
Nov 28 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 02 Python
Python软件包安装的三种常见方法
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控制网页过期时间的代码
2008/09/28 PHP
一个简洁的PHP可逆加密函数(分享)
2013/06/06 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
php while循环控制的简单实例
2016/05/30 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
实测jquery data()如何存值
2013/08/18 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
keras topN显示,自编写代码案例
2020/07/03 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
青年创业培训欢迎词
2014/01/10 职场文书
地震捐款倡议书
2014/08/29 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python