数据插补算法和实例

本方法调用ycimpute库和numpy库。

插补算法适合一些随机因素丢失的数据,例如对问卷中无效数据的填充、矩阵中缺失细节的填补等。

注意,空缺数据须用nan作为占位例如:

ycimpute库可用pip下载

pip install ycimpute

K近邻插补方法

K近邻法是数据插补里最常用、通用性最广的方法

#加载依赖库
from ycimpute.imputer import knnimput
from ycimpute.imputer import __init__
import numpy as np

#加载csv格式数据,采用英文逗号分隔,而且跳过第一行
dataset_file = 'test-data.csv'
Data = np.loadtxt(dataset_file, delimiter=",",skiprows=1)

X = Data
complete_X = knnimput.KNN(k=4).complete(X)#设置k近邻种的k值
print(complete_X)
np.savetxt('complete_X.csv',complete_X,delimiter=',')#输出在根目录,名为complete_X.csv

在此说一下K值的选择,K值对结果有很大的影响。K值可以理解为近邻范围。

K值越小越对周围的的数据敏感,很容易发生过拟合。如果再加上丢失数据附近都是噪声数据,那结果就是一个字:寄

K值越大越对周围的数据不敏感,远端数据会影响丢失数据的预测结果,模型察觉不到细微的变化,使预测发生错误。

期望最大化填充算法

#加载依赖库
from ycimpute.unsupervised import expectation_maximization
import numpy as np

#加载csv格式数据,采用英文逗号分隔,而且跳过第一行
dataset_file = 'zctest-data.csv'
Data = np.loadtxt(dataset_file, delimiter=",",skiprows=1)

X = Data
complete_X = expectation_maximization.EM().complete(X)#期望最大化填充算法
print(complete_X)
np.savetxt('complete_X.csv',complete_X,delimiter=',')

多重插补

#加载依赖库
from ycimpute.imputer import mice
from ycimpute.imputer import __init__
import numpy as np

#加载csv格式数据,采用英文逗号分隔,而且跳过第一行
dataset_file = 'test-data.csv'
Data = np.loadtxt(dataset_file, delimiter=",",skiprows=1)

X = Data
complete_X = mice.MICE().complete(X)#调用MICE函数
print(complete_X)
np.savetxt('complete_X.csv',complete_X,delimiter=',')

结果

左侧为原始数据,右侧为KNN的拟合数据

此作者没有提供个人介绍
最后更新于 2025-04-21