【问题标题】:ImportError: cannot import name inplace_column_scaleImportError:无法导入名称 inplace_column_scale
【发布时间】:2014-08-28 16:10:38
【问题描述】:

使用带有 scikit-learn 0.14 包的 Python 2.7。它在来自用户协会的一些示例(期望线性模型)上运行良好。

Traceback (most recent call last):
File "E:\P\plot_ols.py", line 28, in <module>
from sklearn import datasets, linear_model
File "C:\Python27\lib\site-packages\sklearn\linear_model\__init__.py", line 12, in    <module>
from .base import LinearRegression
File "C:\Python27\lib\site-packages\sklearn\linear_model\base.py", line 29, in <module>
from ..utils.sparsefuncs import mean_variance_axis0, inplace_column_scale
ImportError: cannot import name inplace_column_scale

谢谢~

【问题讨论】:

  • 我在 Python 2.7.2 上使用 scikit-learn-0.15 得到了同样的结果 - 你找到答案了吗?

标签: python scikit-learn


【解决方案1】:

我可以通过转到我的 python 文件夹并删除文件来解决此问题:

python27\Lib\site-packages\sklearn\utils\sparsefuncs.pyd

我的猜测是问题出在:

  1. 旧版本的 scikit-learn 将 sparsefuncs 实现为 Windows DLL
  2. 当前版本将其实现为 python 文件
  3. 如果您在旧版本之上安装新版本,则不会删除旧 DLL
  4. 当您尝试导入时,Python 使用 pyd 而不是 py 实现
  5. 但旧实现不包含此功能

这表明安装新版本可能会导致更大的问题,在重新安装新版本之前删除整个 sklearn 目录可能是明智之举。

【讨论】:

  • 我有一个 .pyc 文件而不是 .pyd 并且无法修复。
【解决方案2】:

我在 Mac Os 中遇到了同样的问题。

我通过手动删除文件解决了这个问题:

rm /usr/local/lib/python2.7/site-packages/sklearn/utils/sparsefuncs.so

【讨论】:

  • 在 ubuntu 中,删除 /usr/local/lib/python2.7/dist-packages/sklearn/utils/sparsefuncs.so 对我有用。
  • 在 Ubuntu/Anaconda 中,删除 anaconda/lib/python2.7/site-packages/sklearn/utils/sparsefuncs.so 文件对我有用。
【解决方案3】:

卸载 scikit-learn 并重新安装它是唯一对我有用的选项:

 pip uninstall scikit-learn
 pip install scikit-learn

【讨论】:

    【解决方案4】:

    我通过以下方式解决了这个问题:

    pip uninstall scikit-learn
    

    并且不要忘记在 python 'site-packages' 中 rm 'sklearn' 文件夹

    rm -rf /path/Python-2.7.5/lib/python2.7/site-packages/sklearn/
    

    然后重新安装包:

    pip install scikit-learn
    

    【讨论】:

      【解决方案5】:

      在相关说明中,这已作为错误发布在 the official Github page 上,以及一些其他解决方案,基本上建议与上述相同的解决方案。长话短说:运行 make clean 以删除 .so 文件。

      【讨论】:

        【解决方案6】:

        我遇到了同样的问题。我最初通过以下方式安装了scikit-learn:

        sudo apt-get install python-sklearn
        

        当此处发布的其他解决方案均无效时,我决定卸载我的 scikit-learn 版本并重新安装:

        pip2 install --user --install-option="--prefix=" -U scikit-learn  
        

        使用pip2是因为我有两个版本的python,所以我在Python 2.7中使用scikit-learn

        【讨论】:

          【解决方案7】:

          同样的问题是cannot import _safe_split,看看

          http://stackoverflow.com/questions/41024001/importerror-cannot-import-name-safe-split

          https://github.com/scikit-learn/scikit-learn/issues/7582

          编辑:查看 Andreas Mueller 的评论

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-03-31
            • 2014-10-10
            • 2014-09-20
            • 2014-06-10
            • 2016-05-16
            • 2019-05-25
            • 2017-04-22
            相关资源
            最近更新 更多