如何安装scikit-learn

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何安装scikit-learn相关的知识,希望对你有一定的参考价值。

参考技术A   首先,windows7 32位的系统。

  首先安装python2.7,官网下载的,安装路径是c:\python2.7

  因为之前虽然安装的不完整,但是我已经配置好环境变量等参数了。具体Path添加 C:\Python27;C:\Python27\Scripts,而PYTHONPATH添加C:\Python27;C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk;了这些。

  然后安装setuptools,下载的是setuptools-0.6c11.win32-py2.7.exe

  运行后,在控制台看一下是否安装成功,

  easy_install
  virtualenv

  出现以下类似消息:

  Searching
  for virtualenv

  Best match: virtualenv 1.7.2

  Processing virtualenv-1.7.2-py2.7.egg

  virtualenv 1.7.2 is already the active version in easy-install.pth

  Installing virtualenv-script.py script to D:\Program Files\Python2.7\Scripts

  Installing virtualenv.exe script to D:\Program Files\Python2.7\Scripts

  Installing virtualenv.exe.manifest script to D:\Program Files\Python2.7\Scripts

  Installing virtualenv-2.7-script.py script to D:\Program Files\Python2.7\Scripts

  Installing
  virtualenv-2.7.exe script to D:\Program Files\Python2.7\Scripts

  Installing virtualenv-2.7.exe.manifest script to D:\Program Files\Python2.7\Scri

  pts

  Using d:\program files\python2.7\lib\site-packages\virtualenv-1.7.2-py2.7.egg

  Processing dependencies for virtualenv

  Finished processing dependencies for virtualenv

  安装numpy

  easy_install
  numpy

  等等其它的依赖包,基本上都是这么装的,即
  easy_install libname

  网上很多人说安装matplotlib时出现依赖包,我这里下载时,我看到的消息是自动下载和安装的,所以之前下载的包都没有用到。还是很好的。

  所以我就安装了numpy,scipy,matplotlib 然后就是

  easy_install scikit-learn

SciKit-Learn 的分解模块中没有安装 LatentDirichletAllocation

【中文标题】SciKit-Learn 的分解模块中没有安装 LatentDirichletAllocation【英文标题】:LatentDirichletAllocation was not installed in decomposition module of SciKit-Learn 【发布时间】:2020-04-02 01:34:03 【问题描述】:

我在 SciKit-Learn 软件包中遇到了一些奇怪的问题。 SciKit-Learn 包内有“分解”模块,其中应包含 LatentDirichletAllocation([…]) 函数。请参阅此处的文档: "https://scikit-learn.org/stable/modules/classes.html#module-sklearn.decomposition"

当我尝试导入“分解”模块时: from sklearn import as decomposition 它给出了错误:

Traceback (most recent call last):
  File "tf_1_day_scikit_dnn.py", line 12, in <module>
    from sklearn import decomposition
  File "/home/developer1/.local/lib/python3.6/site-packages/sklearn/decomposition/__init__.py", line 19, in <module>
    from ._online_lda import LatentDirichletAllocation
ImportError: cannot import name 'LatentDirichletAllocation'

命令: ls -al ~/.local/lib/python3.6/site-packages/sklearn/decomposition 显示:

drwxr-xr-x  4 developer1 developer1   4096 Dec  9 00:45 .
drwxr-xr-x 33 developer1 developer1   4096 Dec  9 00:45 ..
-rw-r--r--  1 developer1 developer1   5490 Dec  9 00:44 _base.py
-rw-r--r--  1 developer1 developer1    480 Dec  9 00:44 base.py
-rwxr-xr-x  1 developer1 developer1 179440 Dec  9 00:44 _cdnmf_fast.cpython-36m-x86_64-linux-gnu.so
-rwxr-xr-x  1 developer1 developer1 175344 Dec  3 00:09 cdnmf_fast.cpython-36m-x86_64-linux-gnu.so
-rw-r--r--  1 developer1 developer1    498 Dec  9 00:44 cdnmf_fast.py
-rw-r--r--  1 developer1 developer1  54528 Dec  9 00:44 _dict_learning.py
-rw-r--r--  1 developer1 developer1    507 Dec  9 00:44 dict_learning.py
-rw-r--r--  1 developer1 developer1  12572 Dec  9 00:44 _factor_analysis.py
-rw-r--r--  1 developer1 developer1    513 Dec  9 00:44 factor_analysis.py
-rw-r--r--  1 developer1 developer1  20866 Dec  9 00:44 _fastica.py
-rw-r--r--  1 developer1 developer1    490 Dec  9 00:44 fastica_.py
-rw-r--r--  1 developer1 developer1  14076 Dec  9 00:44 _incremental_pca.py
-rw-r--r--  1 developer1 developer1    513 Dec  9 00:44 incremental_pca.py
-rw-r--r--  1 developer1 developer1   1401 Dec  9 00:44 __init__.py
-rw-r--r--  1 developer1 developer1  13597 Dec  9 00:44 _kernel_pca.py
-rw-r--r--  1 developer1 developer1    498 Dec  9 00:44 kernel_pca.py
-rw-r--r--  1 developer1 developer1  47255 Dec  9 00:44 _nmf.py
-rw-r--r--  1 developer1 developer1    477 Dec  9 00:44 nmf.py
-rwxr-xr-x  1 developer1 developer1  62056 Dec  3 00:09 _online_lda.cpython-36m-x86_64-linux-gnu.so
-rwxr-xr-x  1 developer1 developer1  62064 Dec  9 00:44 _online_lda_fast.cpython-36m-x86_64-linux-gnu.so
-rw-r--r--  1 developer1 developer1    513 Dec  9 00:44 online_lda_fast.py
-rw-r--r--  1 developer1 developer1  30471 Dec  9 00:44 _online_lda.py
-rw-r--r--  1 developer1 developer1    498 Dec  9 00:44 online_lda.py
-rw-r--r--  1 developer1 developer1  22807 Dec  9 00:44 _pca.py
-rw-r--r--  1 developer1 developer1    477 Dec  9 00:44 pca.py
drwxr-xr-x  2 developer1 developer1   4096 Dec  9 00:45 __pycache__
-rw-r--r--  1 developer1 developer1    855 Dec  9 00:44 setup.py
-rw-r--r--  1 developer1 developer1  13654 Dec  9 00:44 _sparse_pca.py
-rw-r--r--  1 developer1 developer1    498 Dec  9 00:44 sparse_pca.py
drwxr-xr-x  3 developer1 developer1   4096 Dec  9 00:45 tests
-rw-r--r--  1 developer1 developer1   8346 Dec  9 00:44 _truncated_svd.py
-rw-r--r--  1 developer1 developer1    507 Dec  9 00:44 truncated_svd.py

大部分函数都在这里,但没有“LatentDirichletAllocation”函数的痕迹。但是我确实看到了在 _online_lda.py 文件中定义的 LatentDirichletAllocation 类。

命令python3 -c "import sklearn; sklearn.show_versions()" 打印所有需要的版本:

System:
    python: 3.6.8 (default, Oct  7 2019, 12:59:55)  [GCC 8.3.0]
executable: /usr/bin/python3
   machine: Linux-4.15.0-65-generic-x86_64-with-Ubuntu-18.04-bionic

Python dependencies:
       pip: 9.0.1
setuptools: 42.0.2
   sklearn: 0.22
     numpy: 1.17.4
     scipy: 1.3.3
    Cython: None
    pandas: 0.25.3
matplotlib: 3.1.2
    joblib: 0.14.0

Built with OpenMP: True

所以我假设这里满足了所有要求。 (顺便说一句,在我尝试导入“分解”模块之前,SciKit-Learn 运行良好)。

我安装了 SciKit-Learn 软件包,如下所述: “https://scikit-learn.org/stable/install.html” 使用命令pip3 install -U scikit-learn 我确实重新安装了几次,但得到了相同的结果。

我做错了什么?我是否需要将缺少的“LatentDirichletAllocation”函数添加到“分解”模块中?如果是这样 - 如何?我应该以不同的方式安装整个软件包吗?

谢谢。

【问题讨论】:

sklearn 在 0.22 中损坏.. 将其更改为 0.21.3 或更低 我做到了。请参阅下面的“接受的答案”。让 0.22 版也能正常工作还是很棒的。看起来“glemaitre”家伙(见他的回答)虽然找到了解决方法...... 【参考方案1】:

我今天也遇到了同样的问题。我通过回到 scikit-learn 之前的 0.21 版本解决了这个问题:

pip3 install scikit-learn==0.21

编辑:我认为 glemaitre (https://***.com/a/59328446/10429267) 的回答显示了更好的解决方案。

【讨论】:

谢谢你的回答......我仍然希望有一些其他的解决方法。 这确实解决了问题 - 再次感谢您。虽然最新的 0.22 版本不可用,但这并不好 :( 感谢您的回答。这也解决了我的问题。想知道是否有任何其他替代解决方案?【参考方案2】:

经过验证的“已回答”不是正确的解决方法,因为它只会降级 scikit-learn。您将无法从新功能和错误修复中受益。

在问题跟踪器中报告和提供反馈会有所帮助:https://github.com/scikit-learn/scikit-learn/issues/15884

这将使我们能够找到问题的根源并提出似乎会影响到几个人的适当解决方案。

编辑: 经过一番调查,您需要删除以下文件:

~/.local/lib/python3.6/site-packages/sklearn/decomposition/_online_lda.cpython-36m-x86_64-linux-gnu.so ~/.local/lib/python3.6/site-packages/sklearn/feature_extraction/_hashing.cpython-36m-x86_64-linux-gnu.so ~/.local/lib/python3.6/site-packages/sklearn/datasets/_svmlight_format.cpython-36m-x86_64-linux-gnu.so

显然,更新到 scikit-learn 时,so 文件不会被删除。这可能是由于旧的pip 版本造成的。

【讨论】:

确实 - 我接受的答案是有效的不是正确的答案。但到那时,这是我得到的唯一答案。有了这个答案,我就可以使用 SciKit-learn。这是我第一次体验 SciKit 学习,我对最新版本 0.22 中的这个问题感到沮丧。 我不完全确定我应该在哪里删除 _online_lda.cpython-36m-x86_64-linux-gnu.so - 你能澄清一下吗? 根据您提供的信息,它应该位于:~/.local/lib/python3.6/site-packages/sklearn/decomposition/_online_lda.cpython-36m-x86_64-linux-gnu.so 请注意,FeatureHasher 也发生了类似的事情,需要手动删除 _hashing.cpython-*****.so 文件。【参考方案3】:

试试:


对于 Python 3

pip3 uninstall scikit-learn
pip3 install -U scikit-learn==0.21.3

对于 Python 2

pip uninstall scikit-learn
pip install -U scikit-learn==0.20.4

【讨论】:

版本 0.22 没有损坏,这是目前最后一个稳定版本。出了问题的是使用pip 系统更新包。

以上是关于如何安装scikit-learn的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu下安装scikit-learn库

Ubuntu下安装scikit-learn

如何在 python 虚拟环境中导入 scikit-learn?

无法安装 scikit-learn

在windows上安装scikit-learn开发环境

Pip 选择要求版本