SVDI 填补思想:
1. 用相应的列方法替换所有缺失的值。
2. 计算插补矩阵的秩k近似。
3. 使用步骤2中计算的rank-k近似值中的相应值替换插补位置中的值。
4. 重复步骤2和3直到收敛。
R语言中在“bcv” 包中,可以直接对缺失的数据进行填充。
以UCI中的数据集pima-indians-diabetes dataset 为例。下载链接:https://www.kaggle.com/uciml/pima-indians-diabetes-database
加载包:
install.packages("bcv")
library("bcv")
加载数据:
dataImpute = read.csv("D://pima-indians-diabetes.csv",sep=",")
调用包: 参数:数据集, 奇异值个数,最大迭代次数. 顺便保留两位小数。
SVDimputation = round(impute.svd(dataImpute, k = 7, maxiter=15000)$x,2)