zoukankan      html  css  js  c++  java
  • 【数据分析&数据挖掘】拉格朗日插值法

     1 from scipy.interpolate import lagrange
     2 import pandas as pd
     3 import numpy as np
     4 
     5 # 加载数据
     6 data = pd.read_excel("./qs.xlsx")
     7 # print("data: 
    ", data)
     8 print("data的列索引: 
    ", data.columns)
     9 
    10 # 设置使用缺失值前后的n个来进行构建拉格朗日关系
    11 n = 5
    12 
    13 # 循环查看缺失值的位置
    14 for i in range(data.shape[0]):
    15     print(i)
    16     # 判断如果是缺失值,就进行插值
    17     if np.isnan(data.iloc[i, 1]):
    18         print("第%d行为缺失值"%i)
    19         if i-n < 0:
    20             start=0
    21         else:
    22             start=i-n
    23         # 获取缺失值的前后n个数据——这前后n个数据是否存在缺失值
    24         mask = data.iloc[start: i+n+1, 1]
    25         # 获取index
    26         x = mask.index
    27         print("x: 
    " ,x)
    28         # 将含有缺失值的行的索引去掉
    29         x = x[mask.notnull()]
    30         print("x: 
    ", x)
    31         # 不管有无缺失值,去除掉其中含有缺失值的部分
    32         y = mask[mask.notnull()].values  # 含有缺失值的数组
    33         print("y: 
    ", y)
    34         # 构建拉格朗日多项式, 返回拉格朗日多项式对象
    35         la = lagrange(x=x, w=y)
    36         # 使用拉格朗日多项式进行插值
    37         data.iloc[i, 1] = la([i])
    38 print("插值完成之后的结果: 
    ", data)
  • 相关阅读:
    【BZOJ】4349: 最小树形图
    【AtCoder】AtCoder Petrozavodsk Contest 001
    【LOJ】#2525. 「HAOI2018」字串覆盖
    趣味题:恺撒Caesar密码(c++实现)
    趣味问题:画图(c++实现)
    趣味问题:到底买不买
    成绩大排队
    A除以B问题
    2017-统计字符个数
    2016-数据的交换输出
  • 原文地址:https://www.cnblogs.com/Tree0108/p/12116101.html
Copyright © 2011-2022 走看看