拉格朗日插值法--python
数据分析
数据清洗:缺失值处理、1删除记录 2数据插补 3不处理
数据
链接:https://pan.baidu.com/s/1jiIOoselsqVQR4P_EaS3pA
提取码:t970
常见插补方法
点击链接前往
插值法-拉格朗日插值法
根据数学知识可知,对于平面上已知的n个点(无两点在一条直线上可以找到n-1次多项式
,使次多项式曲线过这n个点。
1)求已知过n个点的n-1次多项式:
将n个点的坐标带入多项式:得到
解出拉格朗日插值多项式:
将缺失的函数值对应的点x带入多项式得到趋势值得近似值L(x)
#拉格朗日插值代码
import pandas as pd #导入数据分析库Pandas
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import lagrange #导入拉格朗日插值函数inputfile = '../data/data.xlsx' #销量数据路径
outputfile = '../tmp/sales.xls' #输出数据路径data = pd.read_excel(inputfile) #读入数据
temp = data[u'销量'][(data[u'销量'] < 400) | (data[u'销量'] > 5000)] #找到不符合要求得值 data[列][行]
for i in range(temp.shape[0]):data.loc[temp.index[i],u'销量'] = np.nan #把不符合要求得值变为空值#自定义列向量插值函数
#s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5
def ployinterp_column(s, n, k=5):y = s.iloc[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取数 就是传入得datay = y[y.notnull()] #剔除空值f = lagrange(y.index, list(y))return f(n) #插值并返回插值结果#逐个元素判断是否需要插值
for i in data.columns:for j in range(len(data)):if (data[i].isnull())[j]: #如果为空即插值。data.loc[j,i] = ployinterp_column(data[i], j)data.to_excel(outputfile) #输出结果,写入文件
print("success")
运行结果:
这个代码是可以运行的
问题
没有
报SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
我也不知道时怎么把这个警告消除的,反正就是找啊找,在我不注意的时候能运行了!好像是不能一下多个赋值,要分开赋值。
###最后
但是我们细看可以发现插入的值有问题:把插入的值输出可以看到有一个异常值
我们在处理数据时把小于400,大于5000的值都变成空值,然后通过拉格朗日插值法插入值,想要把数据没有那么大的差值,但是给我们插入一个负数,并且很离谱。我检查了一下并没有发现哪里有错误;然后我把用到的数据和拟合出来的拉格朗日函数输出得到:
f=-0.008874 x + 11.53 x - 6657 x + 2.242e+06 x - 4.854e+08 x + 7.005e+10 x - 6.74e+12 x + 4.168e+14 x - 1.504e+16 x + 2.411e+17
并没有发现问题,让后我就想着是不是拟合出来的函数步够精确,我把取点增加,但是都没有好的结果,反而更离谱,这种情况就是过拟合了,就是这个模型可以把你训练的模型拟合的很好,但是测试模型并不好。
举个例子:下面一组数据可以看到用x4函数拟合的并没有太多的点在模型上,x4函数拟合的相对较多一点,但是如果进行测试,14次方的模型可能会预测的很离谱:
最后我把取值点减小发现上下取点4个时都会有一个好的结果,上下去点为3,2,1(直线,不建议取)时也都还能接受。所以我么拟合出来的五个上下点时也并没有错,只是它拟合出来的函数就是在那个点上数值离谱。
感谢关注与支持
拉格朗日插值法--python相关推荐
- 解读 拉格朗日插值法python,保你学明白
文章目录 概述拉格朗日插值法 什么是插值法 拉格朗日插值法的原理 拉格朗日公式 拉格朗日插值法的代码实现 Python 进行拉格朗日插值的主要知识点 Polyfit 函数 Polyval 函数 Lin ...
- 拉格朗日插值法+python实现
拉格朗日插值法 1.数学原理 1.1 线性插值 1.2二次插值 1.3 n次拉格朗日插值多项式 2.Python实现 本文将介绍拉格朗日插值法得数学原理,并用Python实现. 1.数学原理 首先我们 ...
- 缺失值处理 - 拉格朗日插值法 - Python代码
目录 缺失值处理 拉格朗日差值法的理论基础 拉格朗日插值法代码实现 其他数据预处理方法 缺失值处理 处理缺失值常用的办法可分为三类:删除记录.数据插补.不处理. 其中常见的数据插补法有: 如果通过删除 ...
- 拉格朗日插值法python实现
目录 1.原理 2.涉及的Python库 3.例子 1.原理 对某个多项式函数有已知的k+1个点,假设任意两个不同的都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: L(x)=∑j= ...
- 拉格朗日插值法——python代码实现
一.拉格朗日的基本思想: 二.线性插值 三.多个点 四.代码实现 def lagrange(xx,y):l=len(y)l_n = 0for k in range(l):xxx=xx.copy()x_ ...
- 拉格朗日插值法《python数据分析与挖掘实践》
数据清洗 数据清洗主要是删除原始数据集中地无关数据.重复数据.平滑噪声数据,筛选掉与挖掘主题无关的数据,处理缺失值.异常值等. 缺失值处理的方法可分为3类:删除记录.数据插补和不处理. 删除含有缺失值 ...
- 拉格朗日插值法 【python】
一.插值 设函数y=f(x)在区间[a,b]上连续,给定n+1个点 a≤x0<x1<....<xn≤b 已知,f(xk)=yk(k=0,1....n),在函数类P中寻找一个函数Φ(x ...
- python拉格朗日插值法_Python实现的拉格朗日插值法示例
本文实例讲述了Python实现的拉格朗日插值法.分享给大家供大家参考,具体如下: 拉格朗日插值简单介绍 拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法. 许多实际问题中都 ...
- 拉格朗日插值python代码_Python实现的拉格朗日插值法示例
本文实例讲述了Python实现的拉格朗日插值法.分享给大家供大家参考,具体如下: 拉格朗日插值简单介绍 拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法. 许多实际问题中都 ...
最新文章
- RzPageControl 关闭按钮
- 前端笔试题面试题记录(上)
- 队列优化dijsktra(SPFA)的玄学优化
- 过年7天乐,学nodejs 也快乐
- AppStore IPv6-only审核被拒原因分析及解决方案-a
- 2020-07-09 CVPR2020 VL论文讨论(4) 笔记
- ABAP package not extensible的原因
- mysql5.7.22打不开_windows下mysql-5.7.22-winx64突然启动不了,报错Could not open log file
- 【python】os.getcwd和getcwdu
- [5] ADB 与应用交互
- android studio提示要重写的方法,Android Studio 重写方法时参数命名异常
- ngnix 执行php 慢,【nginx】PHP有什么办法可以排查那些脚本或方法执行慢,需要优化?...
- python爬虫教程蝴蝶汤_Python 爬虫十六式 - 第五式:BeautifulSoup-美味的汤
- Android开发环境搭建之Eclipse/AndroidStudio
- 如何部署Windows Server 2016 中的Storage Spaces Direct超聚合解决方案
- Java IO之打印流,缓冲流,Scanner的用法
- Xv6 traps and system calls
- 2003服务器系统安装不上网卡,win2003无线网卡驱动无法安装怎么办
- 使用python PIL 模块合成图片
- 鸿蒙os系统使用技巧,鸿蒙OS 应用权限管理