数据预处理—7.数据插补之拉格朗日插值法、牛顿差值法及python实现
文章目录
- 1.拉格朗日差值法
- 2.牛顿差值法
- 3.注意
- 数据链接,密码为1234
1.拉格朗日差值法
python中的scipy
库提供了拉格朗日差值法的函数,直接调用
案例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.interpolate import lagrangecat_sale = pd.read_excel('data/catering_sale.xls')
cat_sale.drop('日期', axis=1, inplace=True)# 过滤异常值,并置为空值
cat_sale['销量'][(cat_sale['销量'] < 400) | (cat_sale['销量'] > 5000)] = np.NAN# 自定义列向量插值函数
def ployinterp_columns(s, n, k=4):if n < k:y = s[list(range(0, n)) + list(range(n + 1, n + k + 1))]elif n > len(s) - k - 1:y = s[list(range(n - k, n)) + list(range(n + 1, len(s)))]else:y = s[list(range(n - k, n)) + list(range(n + 1, n + k + 1))] # 取空值处的前后3个数y = y[y.notnull()] # 剔除空值return lagrange(y.index, list(y))(n) # 插值并返回插值结果# 逐个判断元素是否需要插值
for i in cat_sale.columns:for j in range(len(cat_sale)):if (cat_sale[i].isnull())[j]: # 如果为空则插值print(ployinterp_columns(cat_sale[i], j))cat_sale[i][j] = ployinterp_columns(cat_sale[i], j)cat_sale.to_csv('sales.csv') # 输出结果,写入文件
2.牛顿差值法
python实现
import numpy as np
import pandas as pdcat_sale = pd.read_excel('data/catering_sale.xls')
cat_sale.drop('日期', axis=1, inplace=True)# 过滤异常值,并置为空值
cat_sale['销量'][(cat_sale['销量'] < 400) | (cat_sale['销量'] > 5000)] = np.NAN# 分别定义求插商与求w的函数
def cal_f(x, y):"""计算插商"""f0 = np.zeros((len(x), len(y))) # 定义一个存储插商的数组for k in range(len(y) + 1): # 遍历列for i in range(k, len(x)): # 遍历行if k == 0:f0[i, k] = y[i]else:f0[i, k] = (f0[i, k - 1] - f0[i - 1, k - 1]) / (x[i] - x[i - 1])print('差商表', '\n', f0)return f0def newton(x, y, x_j):"""牛顿差值多项式"""f0 = cal_f(x, y) # 计算插商f0 = f0.diagonal()# 与w相乘f1 = 0for i in range(len(f0)):s = 1k = 0while k < i:s = s * (x_j - x[k])k += 1f1 = f1 + f0[i] * sreturn f1# 自定义列向量插值函数
def ployinterp_columns(s, n, x_j, k=3):if n < k:y = s[list(range(0, n)) + list(range(n + 1, n + k + 1))]elif n > len(s) - k - 1:y = s[list(range(n - k, n)) + list(range(n + 1, len(s)))]else:y = s[list(range(n - k, n)) + list(range(n + 1, n + k + 1))] # 取空值处的前后5个数y = y[y.notnull()] # 剔除空值return newton(y.index, list(y), x_j) # 插值并返回插值结果for i in cat_sale.columns:for j in range(len(cat_sale)):if (cat_sale[i].isnull())[j]:x_j = cat_sale.index[j]print(ployinterp_columns(cat_sale[i], j, x_j))cat_sale[i][j] = ployinterp_columns(cat_sale[i], j, x_j)cat_sale.to_excel('saless.xls')
3.注意
k的选取非常非常重要!!!以拉格朗日差值为例,
k=1,填充的值为
2618.2
3902.2000000000007
2868.0499999999993
2844.5000000000146
2731.399999999994
2471.949999999986
k=2,填充的值为
2627.9999999999995
4077.716666666587
3291.2166666662088
3080.916666775942
2846.4166668355465
2474.0000002086163
k=3,填充的值为
2681.299999999999
4162.340000009164
3658.435000004247
3221.830780029297
2919.119171142578
2501.641655921936
k=4,填充的值为
1987.8999999999987
4224.922857132275
3940.338572591543
3313.03125
2977.59375
2498.1875
k=5,填充的值为
-291.4000000000001
4275.254762476077
4156.860423326492
96.0
6720.0
-75744.0
k=6,填充的值为
-4788.299999999997
4315.101515245042
4325.017848968506
10567680.0
-24801280.0
28934144.0
稍不注意,填充的值就为异常值!!!
如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论留言!
数据预处理—7.数据插补之拉格朗日插值法、牛顿差值法及python实现相关推荐
- MATLAB数据预处理之缺失值插补
文章目录 前言 1 加载原始数据 2 查找缺失值并填充缺失值 总结 2021年4月5日09:51:56更新 2021年5月18日10:46:15更新 2022年10月15日07:25:01更新 参考资 ...
- 数据预处理 第3篇:数据预处理(使用插补法处理缺失值)
插补法可以在一定程度上减少偏差,常用的插补法是热卡插补.拟合插补和多重插补.拟合插补,要求变量间存在强的相关性:多重插补(MCMC法),是在高缺失率下的首选插补方法,优点是考虑了缺失值的不确定性. 一 ...
- MATLAB数据预处理——导入,插补,绘图
一.导入数据 1.先在命令行建立数组,再直接把数据复制上去. 或 2.利用函数,读取excel中的数据 x=xlsread('C:\Users\dell\Desktop\试品2.xlsx','C2:C ...
- python 线性回归回归 缺失值 忽略_机器学习 第3篇:数据预处理(使用插补法处理缺失值)...
插补法可以在一定程度上减少偏差,常用的插补法是热卡插补.拟合插补和多重插补.拟合插补,要求变量间存在强的相关性:多重插补(MCMC法),是在高缺失率下的首选插补方法,优点是考虑了缺失值的不确定性. 一 ...
- python预处理缺失值_数据预处理 第3篇:数据预处理(使用插补法处理缺失值)...
插补法可以在一定程度上减少偏差,常用的插补法是热卡插补.拟合插补和多重插补.拟合插补,要求变量间存在强的相关性:多重插补(MCMC法),是在高缺失率下的首选插补方法,优点是考虑了缺失值的不确定性. 一 ...
- 【Python实战】数据预处理(数据清理、集成、变换、归约)
[Python实战]数据预处理 前言 数据预处理概述 数据清理 异常数据处理 1.异常数据分析 2.异常数据处理方法 缺失值处理 噪声数据处理 数据集成 1.实体识别 2.冗余属性 3.数据不一致 数 ...
- 数据预处理—-(数据探索、数据清理、数据集成、数据规约、数据变换)
数据挖掘概念与技术 定义挖掘目标–>数据取样–>数据探索–>数据预处理–>挖掘建模–>模型评价 第一章.数据 挖掘的数据类型:时间序列,序列,数据流,时间空间数据,多媒体 ...
- R 多变量数据预处理_数据科学 | 第3讲 数据清洗与预处理
点击上方蓝字,记得关注我们! 在实际数据挖掘过程中,我们拿到的初始数据,往往存在缺失值.重复值.异常值或者错误值,通常这类数据被称为"脏数据",需要对其进行清洗.另外有时数据的原始 ...
- 竞赛专题 | 数据预处理-如何处理数据中的坑?
点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 为了帮助更多竞赛选手入门进阶比赛,通过数据竞赛提升理论实践能力和团队协作能力.Data ...
- 机器学习项目中的数据预处理与数据整理之比较
要点 在常见的机器学习/深度学习项目里,数据准备占去整个分析管道的60%到80%. 市场上有各种用于数据清洗和特征工程的编程语言.框架和工具.它们之间的功能有重叠,也各有权衡. 数据整理是数据预处理的 ...
最新文章
- 在一台机器上搭建多个redis实例
- poj1422(最小路径覆盖问题)
- rabbitmq延迟队列实现
- set、get方法解析
- python to_excel新增sheet_Python使用xlrd和xlwt读写Excel的简单用法
- python自学行吗-零基础如何学习Python?看Python视频就可以吗?
- 姓名的首字母组成的图案C语言怎么编,c语言编写一个程序,根据用户输入英文名和姓先显示姓氏,其后跟一个逗号,然后显示名的首字母:...
- php mysql源码包,linux下Apache+PHP+mysql+phpMyAdmin源码包安装配置
- 【图论】昂贵的聘礼(最短路变形)
- PyCharm专业版破解
- html5语音读取文字_微信语音转发给别人播放不了怎么办?该怎么转发?
- Windows的一些溢出题目
- kubernetes(k8s)安装metrics-server实现资源使用情况监控
- 用Matlab把SMAP vegetation optical depth (VOD)数据转换成带投影信息EASE GRID2的tif文件
- win10计算机维护,Win10系统打开或关闭自动维护功能的方法
- 启发式算法的基础定义与了解
- 物联网安全威胁与解决方案调研
- 40 岁编程经验 30 年!支付宝资深工程师的程序人生
- 金融界神曲“金融科技”:度小满、中国平安等大神如何唱?
- 我的减肥经历和一些经验[1]