Python实现拉格朗日插值

2020-09-04 11:25发布

拉格朗日插值简单介绍

拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。

许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个简单函数,其恰好在各个现测的点取到观测到的值,这个函数可以是代数多项式,三角多项式等。

本文基于Python实现一个简单的拉格朗日插值。

# -*- coding: utf-8 -*-# 拉格朗日插值实现# time:2017.11.011234

读取数据

import pandas as pd
inputfile = "E:\\Python\\model1\\train_test2.csv"train_data = pd.read_csv(inputfile, encoding = 'utf-8') 123

部分数据展现 
这里写图片描述

查看数据集大小

print('数据量:',train_data.shape)  1

数据量: (300, 8)

查看缺失值情况

def na_count(data):
    data_count = data.count()              
    na_count = len(data) - data_count            
    na_rate = na_count/len(data)                 
    result = pd.concat([data_count,na_count,na_rate],axis = 1)   
    return result;
na_count(train_data)1234567

这里写图片描述

拉格朗日插值

import pandas as pd 
from scipy.interpolate import lagrange   
def ployinterp_column(s,n,k=5):
    y = s[list(range(n-k,n)) + list(range(n+1,n+1+k))] 
    y = y[y.notnull()] 
    return lagrange(y.index,list(y))(n) 123456

逐个元素判断是否需要插值

for i in train_data.columns:    for j in range(len(train_data)):        if (train_data[i].isnull())[j]:  
            train_data[i][j] = ployinterp_column(train_data[i],j)1234

输出结果

outputfile = "E:\\Python\\model1\\train_test_out.xls"
train_data.to_excel(outputfile)  12

查看数据

这里写图片描述

作者:bigdata老司机

链接:https://blog.csdn.net/yawei_liu1688/article/details/78752304

来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。