fancyimpute介绍及使用

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/

  • 10
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 如果您在安装fancyimpute时遇到了“ModuleNotFoundError: No module named 'fancyimpute'”错误,可能是因为该库未正确安装或未安装。 您可以尝试使用以下命令重新安装fancyimpute: ``` pip uninstall fancyimpute pip install fancyimpute ``` 如果仍然出现相同的错误,请检查您是否在正确的Python环境中安装了fancyimpute库(例如,您可能在虚拟环境中安装了该库,但却在系统环境中运行Python解释器)。 您也可以尝试升级pip并重新安装fancyimpute: ``` python -m pip install --upgrade pip pip install fancyimpute ``` ### 回答2: ModuleNotFoundError: No module named 'fancyimpute'是Python编程中的一个错误,表示找不到名为'fancyimpute'的模块。这通常是由于没有安装所需模块引起的。 要解决此错误,需要确保已正确安装了’fancyimpute’模块。可以通过以下步骤来安装: 1. 打开终端或命令提示符程序。 2. 运行以下命令来安装'fancyimpute'模块: ``` pip install fancyimpute ``` 3. 等待安装过程完成。这将从Python软件包索引中下载和安装'fancyimpute'模块及其依赖项。 安装完成后,可以尝试重新运行代码,检查错误是否已修复。如果还是出现相同的错误,请确保使用的Python解释器与安装'fancyimpute'模块的解释器相匹配。 如果在安装过程中遇到任何错误消息,请参考错误消息提供的具体信息来解决该问题。有时可能需要更新pip或使用特定版本的'fancyimpute'模块。 希望这个回答对您有所帮助! ### 回答3: ModuleNotFoundError: No module named 'fancyimpute' 是一个Python的错误提示,意味着你的当前环境中没有名为 'fancyimpute' 的模块。 解决这个问题,有以下几种方法: 1. 确保你已经正确安装了 'fancyimpute' 模块。在命令行中执行以下命令进行安装:`pip install fancyimpute`。如果已经安装过,可以尝试更新模块:`pip install --upgrade fancyimpute`。 2. 检查你是否在正确的Python环境中运行代码。可能你在别的环境中安装了 'fancyimpute' 模块,但是在当前的环境中没有找到。可以尝试在命令行中执行 `python`,然后输入 `import fancyimpute` 看看是否会报错。 3. 如果你使用了虚拟环境,请确保你已经激活了正确的虚拟环境。可以尝试重新激活虚拟环境或者在虚拟环境中重新安装 'fancyimpute' 模块。 4. 如果以上方法都不行,可以尝试在Python代码中使用绝对路径来引入模块。例如,你可以使用以下方法来引入 'fancyimpute' 模块:`import sys`,然后`sys.path.append('/path/to/your/module')`,接着就可以使用`import fancyimpute`了。 希望这些方法能够帮助你解决问题!如果还有其他疑问,请随时追问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值