无法导入 Scikit-Learn

Posted

技术标签:

【中文标题】无法导入 Scikit-Learn【英文标题】:Cannot import Scikit-Learn 【发布时间】:2012-07-12 22:44:37 【问题描述】:

我尝试在我的 Linux Mint 12 上安装 scikit-learn 但失败了。我从http://pypi.python.org/pypi/scikit-learn/ 下载了包并安装了

sudo python2.7 setup.py install

然后我将目录更改为 home 并启动 python2.7 shell。在导入 sklearn 时,我得到了:

>>> import sklearn
/usr/lib/python2.7/dist-packages/scipy/spatial/__init__.py:7: RuntimeWarning: 
numpy.dtype size changed, may indicate binary incompatibility
    from ckdtree import *
/usr/lib/python2.7/dist-packages/scipy/spatial/__init__.py:7: RuntimeWarning:
numpy.ndarray size changed, may indicate binary incompatibility
    from ckdtree import *
/usr/lib/python2.7/dist-packages/scipy/spatial/__init__.py:7: RuntimeWarning: 
numpy.ufunc size changed, may indicate binary incompatibility
    from ckdtree import *
/usr/lib/python2.7/dist-packages/scipy/spatial/__init__.py:8: RuntimeWarning: 
numpy.dtype size changed, may indicate binary incompatibility
    from qhull import *
/usr/lib/python2.7/dist-packages/scipy/spatial/__init__.py:8: RuntimeWarning: 
numpy.ndarray size changed, may indicate binary incompatibility
    from qhull import *
/usr/lib/python2.7/dist-packages/scipy/spatial/__init__.py:8: RuntimeWarning:  
numpy.ufunc size changed, may indicate binary incompatibility
    from qhull import *

我认为问题出在 scipy 的空间上。这是因为当我这样做时

>>> from scipy import spatial

我遇到与 Scikit-learn 相同的错误。

请帮忙。 谢谢。

编辑:新错误。

>>> import sklearn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/scikit_learn-0.12_git-py2.7-linux-
x86_64.egg/sklearn/__init__.py", line 17, in <module>
    from .base import clone
  File "/usr/local/lib/python2.7/dist-packages/scikit_learn-0.12_git-py2.7-linux-
x86_64.egg/sklearn/base.py", line 11, in <module>
    from .metrics import r2_score
  File "/usr/local/lib/python2.7/dist-packages/scikit_learn-0.12_git-py2.7-linux-
x86_64.egg/sklearn/metrics/__init__.py", line 6, in <module>
    from .metrics import confusion_matrix, roc_curve, auc, precision_score, \
  File "/usr/local/lib/python2.7/dist-packages/scikit_learn-0.12_git-py2.7-linux-  
x86_64.egg/sklearn/metrics/metrics.py", line 17, in <module>
    from ..utils import check_arrays
  File "/usr/local/lib/python2.7/dist-packages/scikit_learn-0.12_git-py2.7-linux-
x86_64.egg/sklearn/utils/__init__.py", line 9, in <module>
    from .murmurhash import murmurhash3_32
  File "numpy.pxd", line 174, in init sklearn.utils.murmurhash (sklearn/utils
/murmurhash.c:4776)
ValueError: numpy.ndarray has the wrong size, try recompiling

【问题讨论】:

【参考方案1】:

我今天在 OS X El Capitan 上遇到了这个问题。不幸的是,重新安装/安装不起作用,因为问题最终是 OS X 原生的 numpy 安装优于 pip 安装的安装。

我能够按照以下指南解决此问题:https://apple.stackexchange.com/a/223163

特别是,我使用修复 python 路径的方法来更喜欢 pip 库而不是 OS X 原生库:

/Library/Python/2.7/site-packages 中创建一个名为fix_mac_path.pth 的文件,该文件具有以下内容:

import sys; std_paths=[p for p in sys.path if p.startswith('/System/')]; sys.path=[p for p in sys.path if not p.startswith('/System/')]+std_paths

【讨论】:

【参考方案2】:

我遇到了完全相同的问题。我设法通过从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-learn 安装 64 位 Windows 的 Windows 二进制文件来使其工作。希望这对你有用

【讨论】:

【参考方案3】:

我不太确定,但是根据this 的说法,当一个依赖于 numpy 的包被编译为针对特定版本(或特定平台),然后该包被安装在不同的环境中时,就会发生错误。你是如何安装这两个包的? (numpy 和 scipy)

我建议卸载两者,然后重新安装 SciPy,using pip 或 from source。

【讨论】:

谢谢你 mgibsonbr。我从源代码重新安装了 scipy 和 numpy。之后from scipy import spatial 没有出错。但是,在导入 sklearn 时,我得到了一个不同的错误。我正在写上面的错误。 我再次使用pip install -U scikit-learn 安装了 scikit-learn,之后导入工作。谢谢你。 :) @Rishi 这对我不起作用。我仍然收到/usr/local/lib/python2.7/dist-packages/scipy/spatial/__init__.py:91: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility from .qhull import * 当我使用 pip 而不是 conda 时,此修复对我有效。

以上是关于无法导入 Scikit-Learn的主要内容,如果未能解决你的问题,请参考以下文章

mysql 表导入向导无法导入 csv 文件

导入 theano 时出错“无法导入名称 gof”

无法从'@angular/forms'导入“导入FormGroup,FormControl [重复]

无法在春季导入 org.apache.poi,因此无法编译

ImportError:无法导入名称“评估”(来自意外导入评估)

vulfocus无法导入镜像