文章目录

  • 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. Ceph Storage Cluster(CEPH存储集群) Configuration配置
  2. BZOJ 3270: 博物馆 [概率DP 高斯消元]
  3. SSH免密直接登录方法
  4. mybatis--MapperProxy事务
  5. 伙伴分配器的一个极简实现
  6. ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据
  7. Big day coming...
  8. 探测内网c段、外网某网站(ip)的网络服务存活状态
  9. Android Patcher应用增量更新(App补丁式更新,无需下载整个apk)
  10. bootstrap-table重载_Bootstrap Table的使用总结
  11. vhdl入门8位全减器
  12. qtcpsocket断开_QTcpSocket 对连接服务器中断的不同情况进行判定(六种情况,其中一种使用IsNetworkAlive API方法)...
  13. python将excel转换成图片_python-尝试将Excel文件保存为图片并加上水印-阿里云开发者社区...
  14. python 自动输入文字_pyautogui和pyperclip实现自动输入中文
  15. 【Swagger】 SrpingBoot整合Swagger
  16. 计算机java项目(毕设课设) 之 含文档+PPT+源码等]基于SSM的足球联赛管理系统
  17. 数据查询语言及联表查询
  18. wamp设置php目录,PHP配置环境更改wamp的www目录
  19. 微信开发一服务器地址(URL)、令牌(Token)配置
  20. (立下flag)每日10道前端面试题-15 关于【高级技巧】十问

热门文章

  1. ssh之雇员管理系统(4)-改进的hibernate测试
  2. Python爬虫开发【第1篇】【urllib2】
  3. FFmpeg视频编解码库,无法解析的外部符号、找不到inttypes.h文件的问题
  4. Android透明状态栏设置
  5. 懒人小技巧, Toad 常用偷懒方法
  6. UITextField-IOS开发
  7. 突然发现foxmail原来是腾讯的
  8. php gd实现简单图片验证码与图片背景文字水印
  9. mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
  10. 1. 路过面了个试就拿到2个offer。是运气吗?