拉格朗⽇插值法、数据规范化
拉格朗⽇插值法
拉格朗⽇插值法是插值法中的⼀种,是⽤来进⾏缺失值处理的,将数据集中的未知值,通过拉格朗⽇插值法推算出来。这⾥的数学知识就不介绍了,主要介绍在代码中怎么应⽤。
下⾯以某餐厅⼀段时间的销售量的数据集来演⽰使⽤⽅法:
⾸先最开始的数据如下:
可以看到2⽉14号这⼀天的数据是缺失了的,⽽且还有⼀部分数据明显是异常的,下⾯我们就要将缺失的值补上,以及将异常值也变为空补上。
import pandas as pd
from scipy.interpolate import lagrange #导⼊拉格朗⽇插值函数
#输⼊、输出路径
input_file = 'G:\data\Python\chapter4\demo\data\catering_sale.xls'
output_file = 'G:/data/Python/chapter4/demo/tmp/sale.xls'
#读取数据
data = pd.read_excel(input_file)
data['销量'][(data['销量'] < 400) | (data['销量'] > 5000)] = None
#⾃定义列向量插值函数
#s为列向量, n为被插值的位置,k为取前后的数据个数
def polyinterp_column(s,n,k=5):
y = s[list(range(n-k,n)) + list(range(n+1,n+1+k))] #取数
y = ull()] #剔除空值
return lagrange(y.index,list(y))(n)
#逐个元素判断是否需要插值
for i lumns:
for j in range(len(data)):
if (data[i].isnull())[j]:  #为空则插值
data[i][j] = polyinterp_column(data[i],j)
<_excel(output_file) #输出结果
运⾏结果如下:
可以看到缺失值已经补上了,⽽且数据也是⽐较符合实际情况的。
数据规范化⽅法
数据规范化处理是数据挖掘的⼀项基础⼯作。因为不同的评价指标往往具有不同的量纲,数值间的差别可能很⼤,不进⾏处理的话很可能会影响到数据分析的结果。所以为了消除这些影响,需要进⾏标
准化处理。
常⽤的规范化⽅法有⼀下3种:最⼩-最⼤规范法、零-均值规范法、⼩数定标规范法。其中第⼀个是利⽤样本的最⼩值、最⼤值将样本数据映射到[0,1]之间。第⼆个⽅法也称为标准差标准化,即是利⽤均值和标准差将数据处理为均值为0,标准差为1,是当前常⽤的数据标准化⽅法。第三个⽅法则是通过移动属性值的⼩数位数,将属性值映射到[-1,1]之间。
下⾯同样通过代码来展⽰具体怎么使⽤的:
import pandas as pd
import numpy as np
datafile = 'G:/data/Python/chapter4/demo/data/normalization_data.xls'
data = pd.read_excel(datafile,header=None)python怎么读取excel的数据
(data - data.min())/(data.max() - data.min()) #最⼩-最⼤规范法
(data - an())/(data.std()) #0-均值规范化
data/10**np.ceil(np.log10(data.abs().max())) #⼩数定标规范化
这⾥我们就只看⼀下⼩数定标规范化处理后的结果把:
可以看到通过处理后数据的取值都被映射到了[-1,1]这个区间上去。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。