Python实现拉格朗日插值

拉格朗日插值简单介绍

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

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

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

# -*- coding: utf-8 -*-

# 拉格朗日插值实现
# time:2017.11.01

读取数据

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

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

查看数据集大小

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

数据量: (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)

这里写图片描述

拉格朗日插值

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) 

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

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)

输出结果

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

查看数据

这里写图片描述

发布了27 篇原创文章 · 获赞 134 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/yawei_liu1688/article/details/78752304