fancyimpute介绍及使用

fancyimpute是Python的第三方工具包,提供多种矩阵计算和填充算法,如KNN、NuclearNormMinimization、SoftImpute等。适用于处理缺失数据,通过不同策略估算缺失值,包括基于最近邻、低秩分解、迭代填充等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.简介

fancyimpute是python的第三方工具包,主要提供了各种矩阵计算、填充算法的实现。

 

2.安装

在anaconda prompt上直接执行pip3 install fancyimpute会报错pip install ecos error “ Microsoft Visual C++ 14.0 is required.”,需要到https://www.lfd.uci.edu/~gohlke/pythonlibs/#ecos下载对应版本的whl文件,安装一下(pip3 install ecos‑*.whl),最后再执行之前的pip3 install fancyimpute即可。如果仍有问题,请参考PIP安装Python的scipy,scrapy等包出现“failed building wheel for xxx”问题解决办法

 

3.应用示例

fancyimpute主要提供以下几种填充方式: KNN、 NuclearNormMinimization、SoftImpute、IterativeImputer、BiScaler,在调用这些算法时需要import一下,代码如下:

from fancyimpute import KNN, NuclearNormMinimization, SoftImpute, IterativeImputer, BiScaler

 

3.1 SimpleFill

用每列的平均值或中位数来填充缺失值。

 

3.2 KNN

最近邻估算,使用两行都具有观测数据的特征的均方差来对样本进行加权。然后用加权的结果进行特征值填充(疑问:对于连续特征一般是加权平均,对于离散特征一般是加权投票,该算法是如何区分需要填充的特征是离线变量还是连续型变量?)

X_filled_knn = KNN(k=3).fit_transform(X_incomplete)

 

3.3 SoftImpute

通过SVD分解的迭代软阈值处理来填充矩阵(https://web.stanford.edu/~hastie/swData/softImpute/vignette.html)。

X_incomplete_normalized = BiScaler().fit_transform(X_incomplete)
X_filled_softimpute = SoftImpute().fit_transform(X_incomplete_normalized)

 

3.4 IterativeSVD

通过迭代低秩SVD分解来填充矩阵。 原理类似于DNA微阵列缺失值估算方法中的SVDimpute。

 

3.5 IterativeImputer

通过以循环方式将具有缺失值的每个特征建模为其他特征的函数来估算缺失值的策略。

X_filled_ii = IterativeImputer().fit_transform(X_incomplete)

 

3.6 MatrixFactorization

将不完全矩阵直接分解为低秩“U”和“V”,对“U”元素进行L1稀疏性惩罚,对“V”元素进行L2惩罚。 通过梯度下降解决。

 

3.7 NuclearNormMinimization

矩阵填充使用凸优化来找到仍然匹配观测值的低秩解(http://statweb.stanford.edu/~candes/papers/MatrixCompletion.pdf)。对于大型矩阵来说非常缓慢。

X_filled_nnm = NuclearNormMinimization().fit_transform(X_incomplete)

 

3.8 BiScaler

通过行/列均值和标准偏差的迭代估计得到双重归一化矩阵。 不保证收敛但在实践中运作良好。 基本原理请参考矩阵完成和低秩SVD通过快速交替最小二乘

 

参考文献:

https://pypi.org/project/fancyimpute/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值