文章目录

  • 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实现相关推荐

  1. MATLAB数据预处理之缺失值插补

    文章目录 前言 1 加载原始数据 2 查找缺失值并填充缺失值 总结 2021年4月5日09:51:56更新 2021年5月18日10:46:15更新 2022年10月15日07:25:01更新 参考资 ...

  2. 数据预处理 第3篇:数据预处理(使用插补法处理缺失值)

    插补法可以在一定程度上减少偏差,常用的插补法是热卡插补.拟合插补和多重插补.拟合插补,要求变量间存在强的相关性:多重插补(MCMC法),是在高缺失率下的首选插补方法,优点是考虑了缺失值的不确定性. 一 ...

  3. MATLAB数据预处理——导入,插补,绘图

    一.导入数据 1.先在命令行建立数组,再直接把数据复制上去. 或 2.利用函数,读取excel中的数据 x=xlsread('C:\Users\dell\Desktop\试品2.xlsx','C2:C ...

  4. python 线性回归回归 缺失值 忽略_机器学习 第3篇:数据预处理(使用插补法处理缺失值)...

    插补法可以在一定程度上减少偏差,常用的插补法是热卡插补.拟合插补和多重插补.拟合插补,要求变量间存在强的相关性:多重插补(MCMC法),是在高缺失率下的首选插补方法,优点是考虑了缺失值的不确定性. 一 ...

  5. python预处理缺失值_数据预处理 第3篇:数据预处理(使用插补法处理缺失值)...

    插补法可以在一定程度上减少偏差,常用的插补法是热卡插补.拟合插补和多重插补.拟合插补,要求变量间存在强的相关性:多重插补(MCMC法),是在高缺失率下的首选插补方法,优点是考虑了缺失值的不确定性. 一 ...

  6. 【Python实战】数据预处理(数据清理、集成、变换、归约)

    [Python实战]数据预处理 前言 数据预处理概述 数据清理 异常数据处理 1.异常数据分析 2.异常数据处理方法 缺失值处理 噪声数据处理 数据集成 1.实体识别 2.冗余属性 3.数据不一致 数 ...

  7. 数据预处理—-(数据探索、数据清理、数据集成、数据规约、数据变换)

    数据挖掘概念与技术 定义挖掘目标–>数据取样–>数据探索–>数据预处理–>挖掘建模–>模型评价 第一章.数据 挖掘的数据类型:时间序列,序列,数据流,时间空间数据,多媒体 ...

  8. R 多变量数据预处理_数据科学 | 第3讲 数据清洗与预处理

    点击上方蓝字,记得关注我们! 在实际数据挖掘过程中,我们拿到的初始数据,往往存在缺失值.重复值.异常值或者错误值,通常这类数据被称为"脏数据",需要对其进行清洗.另外有时数据的原始 ...

  9. 竞赛专题 | 数据预处理-如何处理数据中的坑?

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 为了帮助更多竞赛选手入门进阶比赛,通过数据竞赛提升理论实践能力和团队协作能力.Data ...

  10. 机器学习项目中的数据预处理与数据整理之比较

    要点 在常见的机器学习/深度学习项目里,数据准备占去整个分析管道的60%到80%. 市场上有各种用于数据清洗和特征工程的编程语言.框架和工具.它们之间的功能有重叠,也各有权衡. 数据整理是数据预处理的 ...

最新文章

  1. 在一台机器上搭建多个redis实例
  2. poj1422(最小路径覆盖问题)
  3. rabbitmq延迟队列实现
  4. set、get方法解析
  5. python to_excel新增sheet_Python使用xlrd和xlwt读写Excel的简单用法
  6. python自学行吗-零基础如何学习Python?看Python视频就可以吗?
  7. 姓名的首字母组成的图案C语言怎么编,c语言编写一个程序,根据用户输入英文名和姓先显示姓氏,其后跟一个逗号,然后显示名的首字母:...
  8. php mysql源码包,linux下Apache+PHP+mysql+phpMyAdmin源码包安装配置
  9. 【图论】昂贵的聘礼(最短路变形)
  10. PyCharm专业版破解
  11. html5语音读取文字_微信语音转发给别人播放不了怎么办?该怎么转发?
  12. Windows的一些溢出题目
  13. kubernetes(k8s)安装metrics-server实现资源使用情况监控
  14. 用Matlab把SMAP vegetation optical depth (VOD)数据转换成带投影信息EASE GRID2的tif文件
  15. win10计算机维护,Win10系统打开或关闭自动维护功能的方法
  16. 启发式算法的基础定义与了解
  17. 物联网安全威胁与解决方案调研
  18. 40 岁编程经验 30 年!支付宝资深工程师的程序人生
  19. 金融界神曲“金融科技”:度小满、中国平安等大神如何唱?
  20. 我的减肥经历和一些经验[1]

热门文章

  1. C# Windows服务自动安装与注册
  2. Linux之Samba部署
  3. 产品上线过程中犯下的错误
  4. Web前端开发解耦1
  5. 【Python学习之路】——Day7(面向对象)
  6. JS+dom简单运动实现
  7. 跟初学者学习IbatisNet第二篇
  8. 从错误中学习,如何配置iis?
  9. Sharepoint2010 From 认证常见问题
  10. Codeforces 439E Devu and Birthday Celebration 容斥