在数据库中,有些数据是异常值或者空值,这些值在分析的时候应该特殊处理,比如最简单的忽略掉或者通过算法推测它的值。其中拉格朗日插值就是通过其他已经知道的值,对x位置缺失的值插入的算法。

假定我们已经知道了(x0,y0),(x1,y1),(x2,y2),(x3,y3) 四个数据点,如果有多项式L(x)刚好穿过这4个点,这样的公式可写成:

当x=x0时候,L(x0)= y0*1 + y1*0 + y2*0 + y3*0 = y0

当x=x1时候,L(x1)= y0*0 + y1*1 + y2*0 + y3*0 = y1

...

故,L(x)刚好穿过(x0,y0),(x1,y1),(x2,y2),(x3,y3) 四个点。

只要求到函数l0,l1,l2, l3,就可以得到L(x), 求剩余点的值。

对于函数l0,它要满足两个两个条件:

1)当x!= x0时候,l0(x0) = 0。即x 为x1,x2,x3时候 l0(x0) = 0, 下面这个多项式即可满足该条件:

(x-x1)(x-x2)(x-x3)

2)当x=x0时, l0(x0) = 1. 可以看出在上面的多项式(x-x1)(x-x2)(x-x3)中,代入x=x0,得到一个数字k = (x0-x1)(x0-x2)(x0-x3),为了让多项式(x-x1)(x-x2)(x-x3)也满足x=x1时,它的值为1,那么该多项式除以数字k即可。

这样最终得到

l0(x) = (x-x1)(x-x2)(x-x3) / (x0-x1)(x0-x2)(x0-x3)

同理得到:

l1(x) = (x-x0)(x-x2)(x-x3) / (x1-x0)(x0-x2)(x0-x3)

l2(x) = (x-x0)(x-x1)(x-x3) / (x2-x0)(x2-x1)(x0-x3)

l3(x) = (x-x0)(x-x1)(x-x2) / (x3-x0)(x3-x1)(x3-x2)

得到了l1(x),l2(x),l3(x),代入L(x)中,最终得到了刚好穿过(x0,y0),(x1,y1),(x2,y2),(x3,y3)四个点的一个多项式。

现在可以对x=x4, x=x5...求他们的y值了。

下面是python的一个例子。我先生成给出了10个点,y=x*x, x = {-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10},

通过这十个点,得到一个刚好穿过这10个点的拉格朗日函数,最后通过该函数,补全了x = {-9, -7, -5...7, 9}上的值。

左边是补全之前,右边是补全了数据之后:

import pandas as pd

import matplotlib.pyplot as plt

from scipy.interpolate import lagrange

axis_x = [i for i in range(-10, 10, 2)]

axis_y = [i ** 2 for i in axis_x]

data = pd.Series(axis_y, index=axis_x)

plt.figure("lagrange demo")

ax1 = plt.subplot(121)

plt.sca(ax1)

plt.plot(axis_x, axis_y, linestyle=' ', marker='o', color='b')

plt.plot(axis_x, axis_y, linestyle='--', color='r')

##generate lagrange function

lag = lagrange(axis_x, axis_y)

new_x = [i for i in range(-10, 10, 1)]

new_y = []

for x in new_x:

if x in data.index:

new_y.append(data[x])

else:

new_y.append(lag(x))

ax2 = plt.subplot(122)

plt.sca(ax2)

plt.plot(new_x, new_y, linestyle=' ', marker='o', color='b')

plt.plot(new_x, new_y, linestyle='--', color='r')

plt.show()

python缺失值拉格朗日插值_拉格朗日插值-python相关推荐

  1. 拉格朗日插值_拉格朗日插值定理的理论基础

    缺失,几乎是不可避免的.只要做数据处理,不可避免的工作就是插值.而插值里面比较常用的方法之一就是拉格朗日插值法,这篇文章就跟大家讲讲拉格朗日插值的理论基础. 为什么需要进行插值 我们进行数据处理的理想 ...

  2. 线性插值插值_揭秘插值搜索

    线性插值插值 搜索算法指南 (Searching Algorithm Guide) Prior to this article, I have written about Binary Search. ...

  3. python语言基础实验_实验二Python语言基础函数包练习.doc

    实验二Python语言基础函数包练习 实验 Python语言基础函数包练习:1208 学号: 实验目的 1.Python语言包,如math.NumPySciPy和Matplotlib等函数包的使用实验 ...

  4. python变量定义大全_详解python变量与数据类型

    这篇文章我们学习 Python 变量与数据类型 变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问.在 Python 中 变量命名规定,必须是大小写英文,数字 ...

  5. python积木式编程_实例讲解python函数式编程

    函数式编程是使用一系列函数去解决问题,按照一般编程思维,面对问题时我们的思考方式是"怎么干",而函数函数式编程的思考方式是我要"干什么". 至于函数式编程的特点 ...

  6. python怎么求指数_求指数 python

    softmax用于多分类过程中最后一层,将多个神经元的输出,映射到(0, 1)区间内,可以看成概率来理解,从而来进行多分类! softmax函数如下: 更形象的如下图表示: softmax 直白来说就 ...

  7. python实现数据可视化_使用Matplotib python实现数据可视化

    python实现数据可视化 I Feel: 我觉得: In today's digital world data has become as important as air. Machines &a ...

  8. python画动物代码_如何用python画简单的动物_后端开发

    python3.x完全兼容python2.x吗?_后端开发 可以说是完全不兼容.相对于Python的早期版本,Python3是一个较大的升级,为了不带入过多的累赘,Python 3.0在设计的时候没有 ...

  9. python适用于哪些芯片_五年Python三大秘诀!日常生活不可或缺的秘密武器

    EDA365欢迎您登录! 您需要 登录 才可以下载或查看,没有帐号?注册 x 本帖最后由 Ber_thaw99 于 2020-12-28 14:07 编辑' P& t5 n# [5 J) Y& ...

  10. python展开函数方法_逐步展开Python详细教学—Python语法

    Python语法–在Python世界迈出第一步 我们已经拥有了许多的编程语言,而且都有自己的特色,但是一种语言的独特之处在于它的特性.最终,是它的特点让它被选中或通过项目.因此,在开始更深入的Pyth ...

最新文章

  1. 2022-2028年中国钢丸行业市场行情监测及未来前景规划报告
  2. Kali Linux python 安装pip
  3. python画玫瑰花的代码_python绘制玫瑰的实现代码
  4. 技术沙龙之液晶监视器和显示器
  5. 干货收藏!Python完整代码带你一文看懂抽样
  6. Spring的事务管理难点剖析(4):多线程的困惑
  7. svm (opencv)几个主要函数
  8. ad软件画pcb方法总结_AD软件中导入BRD的PCB文件总结分享,,,,
  9. python执行bat文件_让Python文件也可以当bat文件运行
  10. 37d43641ef34f1a8a47c803dcf5a13793e3b9fef
  11. Mybatis的批量插入数据库的两种方法及代码自动生成工具的使用方法
  12. 修改密码PHP博客,phpwind任意修改管理员密码漏洞
  13. 有了这25个正则表达式,代码效率提高80%
  14. 【Golang】欲入此Go先看Go的基本语法
  15. 大型门户网站的十四大技术
  16. Unity Tutorial - Adventure Game
  17. TCP笔记之阅读《TCP/IP协议卷一》
  18. 汇编语言编写方法及程序分析
  19. 烟台地铁路线图 Yantai Subway
  20. 网页设计中有意思的404页面赏析

热门文章

  1. php打印错误日志到本地,php中如何实现打印错误日志的功能
  2. 双绞线的分类—按电气特性分
  3. 扒一扒航测人口中的“黑卡”
  4. Docker配置emqx环境(win11)
  5. 港股创下6年新高后蕴藏三大风险?
  6. linux mint17连接wifi,Linux Mint 17 + 小米WIFI创建手机热点
  7. oracle查询 标识无效,oracle查询语句报标识符无效的问题
  8. 【NODEJS】ejs
  9. unity 声音AudioSystem(一)
  10. ubuntu 18.04安装USB wifi接收器的驱动