Scikit-learn: 更新后:ImportError: Windows 计算机上没有名为 model_selection 的模块

创建于 2016-01-13  ·  17评论  ·  资料来源: scikit-learn/scikit-learn

成功更新后
conda 更新 scikit-learn
在 Windows 计算机上
从 sklearn.model_selection 导入 GridSearchCV
或者
从 sklearn.model_selection 导入 train_test_split

导入错误:没有名为 model_selection 的模块
但是,scikit-learn 在更新后才开始工作
conda install -f scipy

http://stackoverflow.com/questions/31012216/updated-anaconda-why-arent-my-ipython-notebooks-working-anymore
顺便说一下,这个例子运行正常
http://scikit-learn.org/stable/auto_examples/text/document_classification_20newsgroups.html#example -text-document-classification-20newsgroups-py

最有用的评论

model_selection模块将仅在下一个版本 (0.18) 中可用。 您将不得不使用旧的cross_validation模块!

所有17条评论

model_selection模块将仅在下一个版本 (0.18) 中可用。 您将不得不使用旧的cross_validation模块!

关闭,因为这不是错误。

好的,但请您帮忙获取文件execution_02_sentiment.py的工作代码
来自http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html
如所写
本教程的源代码可以在您的 scikit-learn 文件夹中找到:
scikit-learn/doc/tutorial/text_analytics/

你可以从 stable doc 网站下载代码或在你的 repo 中签出 0.17.X 分支。

此问题已于 2016 年 1 月关闭,但它仍然具有相关性(2016 年 10 月)。 解决方案:

 ## [2016-Oct-19] Python 3.5 虚拟环境
 (py35) [victoria @victoria ~]$ conda install scikit-learn
 ...
 将安装以下新软件包:
 scikit 学习:0.18-np111py35_0
 ...
 (py35) [victoria @victoria ~]$ conda list | grep scikit
 scikit-learn 0.18 np111py35_0 
 ## Python 3.5:
 >>> 从 sklearn.model_selection 导入 train_test_split
 回溯(最近一次调用最后一次):
 文件 ”",第 1 行,在
 导入错误:没有名为“sklearn.model_selection”的模块
 ## 贝壳:
 $ conda install -f scipy
 ...
 将安装以下新软件包:
 scipy: 0.18.1-np111py35_0
 ...
 ## Python:同样的导入错误!! 呜呜呜呜……
 ## http://scikit-learn.org/stable/install.html
 “如果您已经安装了 numpy 和 scipy,那么安装 scikit-learn 的最简单方法是使用 pip

 pip install -U scikit-learn

 或康达:

 conda 安装 scikit-learn”
 $ pip install -U scikit-learn
 收集 scikit-learn
 下载 scikit_learn-0.18-cp35-cp35m-manylinux1_x86_64.whl (11.3MB)
 100% |████████████████████████████████| 11.3MB 162kB/秒 
 安装收集的包:scikit-learn
 找到现有安装:scikit-learn 0.17.1
 弃用:卸载已安装的 distutils 项目 (scikit-learn) 已被弃用,并将在未来版本中删除。 这是因为卸载 distutils 项目只会部分卸载该项目。
 卸载 scikit-learn-0.17.1:
 成功卸载 scikit-learn-0.17.1
 成功安装scikit-learn-0.18
 ## 现在可以成功导入:
 (py35) [维多利亚@victoria ~]$ P
 [P:蟒蛇]
 Python 3.5.2(默认,2016 年 6 月 28 日,08:46:01) 
 [GCC 6.1.1 20160602] 在 linux 上
 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
 >>> 从 sklearn.model_selection 导入 train_test_split
 >>> 
 >>> [Ctrl-D / 退出]
 (py35) [维多利亚@victoria ~]$ ## :-D

 QED

嗯,我似乎没有你@victoriastuart的问题。 你确定你正在激活环境/在你conda install scikit-learn的环境中有 python 吗?

nfliu at kilauea in ~
$ conda create -n test python=3
Fetching package metadata .......
Solving package specifications: ..........

Package plan for installation in environment /Users/nfliu/miniconda2/envs/test:

The following NEW packages will be INSTALLED:

    openssl:    1.0.2j-0
    pip:        8.1.2-py35_0
    python:     3.5.2-0
    readline:   6.2-2
    setuptools: 27.2.0-py35_0
    sqlite:     3.13.0-0
    tk:         8.5.18-0
    wheel:      0.29.0-py35_0
    xz:         5.2.2-0
    zlib:       1.2.8-3

Proceed ([y]/n)? y

Linking packages ...
[      COMPLETE      ]|###################################################| 100%
#
# To activate this environment, use:
# > source activate test
#
# To deactivate this environment, use:
# > source deactivate test
#

nfliu at kilauea in ~
$ source activate test
(test) nfliu at kilauea in ~
$ conda install scikit-learn
Fetching package metadata .......
Solving package specifications: ..........

Package plan for installation in environment /Users/nfliu/miniconda2/envs/test:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    numpy-1.11.2               |           py35_0         2.7 MB
    scipy-0.18.1               |      np111py35_0        12.3 MB
    scikit-learn-0.18          |      np111py35_0         4.6 MB
    ------------------------------------------------------------
                                           Total:        19.6 MB

The following NEW packages will be INSTALLED:

    mkl:          11.3.3-0
    numpy:        1.11.2-py35_0
    scikit-learn: 0.18-np111py35_0
    scipy:        0.18.1-np111py35_0

Proceed ([y]/n)? y

Fetching packages ...
numpy-1.11.2-p 100% |#############################################################################################################################################################################################| Time: 0:00:01   1.57 MB/s
scipy-0.18.1-n 100% |#############################################################################################################################################################################################| Time: 0:00:02   6.30 MB/s
scikit-learn-0 100% |#############################################################################################################################################################################################| Time: 0:00:01   2.66 MB/s
Extracting packages ...
[      COMPLETE      ]|################################################################################################################################################################################################################| 100%
Linking packages ...
[      COMPLETE      ]|################################################################################################################################################################################################################| 100%
(test) nfliu at kilauea in ~
$ python
Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:52:12)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from sklearn.model_selection import train_test_split
>>>

@nelson-liu:谢谢你的建议......是的:我一直在我的 Python 3.5 虚拟环境中工作(终端;Python)。 根据我的回答,现在工作。 :-)

@victoriastuart很确定这发生在你身上(见大红框):
http://scikit-learn.org/dev/install.html#canopy -and-anaconda-for-all-supported-platforms

不要尝试使用 pip 安装的 conda 升级包。 不起作用。 这是一个设置工具错误。

@amueller——事情是这样的:我在安装了 CONDA 的 venv:一开始我很确定 sklearn 不存在(我以前没有在这个 venv 中使用过它,所以以前不会安装它,例如通过 pip;无论如何,我总是更喜欢 conda 而不是 pip——首先,在我的 venv 中——使用 pip 作为最后的手段):

 (py35) [victoria @victoria ~]$ conda install scikit-learn
获取包元数据.......
解决封装规格:........
安装在环境/home/victoria/anaconda3/envs/py35中的包计划:
将下载以下软件包:
 包| 建造
 ---------------------------|-----------------
 numpy-1.11.2 | py35_0 6.1 MB
 scipy-0.18.1 | np111py35_0 30.4 MB
 scikit-learn-0.18 | np111py35_0 10.8 MB
 theano-0.8.2 | py35_0 3.7 MB
 -------------------------------------------------- ----------
 总计:51.0 MB
将安装以下新软件包:
 scikit 学习:0.18-np111py35_0 
以下软件包将被更新:
 astropy: 1.1.2-np110py35_0 --> 1.2.1-np111py35_0 
 瓶颈:1.0.0-np110py35_1 --> 1.1.0-np111py35_0 
 matplotlib: 1.5.1-np110py35_0 --> 1.5.1-np111py35_0 
 numpy: 1.10.4-py35_2 --> 1.11.2-py35_0 
 scipy: 0.17.1-np110py35_1 --> 0.18.1-np111py35_0
 theano: 0.7.0-np110py35_0 --> 0.8.2-py35_0 
继续 ([y]/n)? 
 [……剪……]

注意,上面:

将安装以下新软件包:scikit-learn: 0.18-np111py35_0

所以,总而言之:根据标准和 sklearn-recommended (http://scikit-learn.org/stable/install.html) 程序,我安装 sklearn——显然安装正常(没有警告),然后尝试使用它:失败导入深奥的错误消息 >> 谷歌搜索 >> 此页面。 我很欣赏关于这个或那个 (sklearn viz-a-viz NumPy 或 SciPy, ...) 的所有细节,但主要的一点是,作为一个用户,我需要努力解决这个问题,这显然(顶部线程)对某些用户来说一直在进行中。

问题实际上是 stackoverflow 的答案引用了尚未发布到 conda/pip 的代码(我们两周前刚刚发布了,所以很自然,在那之前,代码在 conda/pip 安装的版本上不起作用)。 你的问题似乎有点无关,但我很高兴你无论如何都能让它工作。

@nelson-liu:哈哈,谢谢你——以及所有参与这个项目/开发的人。 我知道这非常复杂,而且像这里报告的那样的并发症是不可避免的现实。 无论如何,我的 sklearn 安装现在似乎正在运行,如上所述。 [我将在几个小时后开始使用它。] 希望上面的讨论能告知/帮助其他人。 再次,非常感谢! :-)

@victoriastuart我假设您不再有 conda 环境/无法再次重现它,但我很想知道是什么:

>>> import sklearn
>>> sklearn.__version__

会产生(我期望它不是我们认为的那样,即不是 0.18)。
我怀疑这是 $PYTHONPATH 的问题,也许是从其他位置绘制 scikit-learn; 修复此类错误有望避免与其他软件包一起出现此类错误。

@nelson-liu:当然,没问题! ;-)

 -----------------------------
蟒蛇 3.5 VENV (py35 | p3):
 -----------------------------
 [维多利亚@维多利亚温哥华]$ p3
 【Anaconda Python 3.5 venv(源码激活py35)】
 (py35) [victoria @victoria Vancouver]$ which python
 /home/victoria/anaconda3/envs/py35/bin/python
 (py35) [victoria @victoria Vancouver]$ conda list | egrep -wi 'scikit|numpy|scipy'
 麻木 1.11.2 py35_0
 scikit-learn 0.18 np111py35_0
 scipy 0.18.1 np111py35_0
 (py35) [victoria @victoria Vancouver]$ pip list | egrep -wi 'scikit|numpy|scipy'
 麻木 (1.11.1)
 scikit 图像 (0.12.3)
 scikit-learn (0.18)
 scipy (0.17.0)
 (py35) [维多利亚@维多利亚温哥华]$ P
 [P:蟒蛇]
 Python 3.5.2(默认,2016 年 6 月 28 日,08:46:01)
 [GCC 6.1.1 20160602] 在 linux 上
 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
 >>> 从 sklearn.model_selection 导入 train_test_split
 >>> 导入 sklearn
 >>> sklearn.__version__
 '0.18'
 >>> 退出()
 (py35) [维多利亚@维多利亚温哥华]$ sd
 【Anaconda venv 停用(源码停用)】
 [维多利亚@维多利亚温哥华]$
 ---------------------------------------------
主机(非虚拟)环境(PYTHON 3.5):
 ---------------------------------------------
 [victoria @victoria Vancouver]$ which python
 /usr/bin/python
 [victoria @victoria Vancouver]$ conda list | egrep -wi 'scikit|numpy|scipy'
 麻木 1.11.1
 麻木 1.10.4 py35_1
 scikit 图像 0.12.3 np110py35_0
 scikit-learn 0.18
 scikit-learn 0.17.1 np110py35_0
 scipy 0.17.0 np110py35_2
 [victoria @victoria Vancouver]$ pip list | egrep -wi 'scikit|numpy|scipy'
 [维多利亚@维多利亚温哥华]$ P
 [P:蟒蛇]
 Python 3.5.2(默认,2016 年 6 月 28 日,08:46:01)
 [GCC 6.1.1 20160602] 在 linux 上
 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
 >>> sklearn.__version__
 回溯(最近一次调用最后一次):
 文件 ”",第 1 行,在
 NameError:未定义名称“sklearn”
 >>> 导入 sklearn
 回溯(最近一次调用最后一次):
 文件 ”",第 1 行,在
 导入错误:没有名为“sklearn”的模块
 >>>
 -----------------------------
 Python 2.7 VENV (py27 | p2):
 -----------------------------
 [维多利亚@维多利亚温哥华]$ p2
 【Anaconda Python 2.7 venv(源码激活py27)】
 (py27) [victoria @victoria Vancouver]$ conda list | egrep -wi 'scikit|numpy|scipy'
 麻木 1.11.1
 麻木 1.10.4 py27_1
 scikit 图像 0.12.3 np110py27_0
 scikit-learn 0.17.1 np110py27_0
 scipy 0.17.1
 scipy 0.17.0 np110py27_0
 (py27) [victoria @victoria Vancouver]$ pip list | egrep -wi 'scikit|numpy|scipy'
 麻木 (1.11.1)
 scikit 图像 (0.12.3)
 scikit-learn (0.17.1)
 scipy (0.17.1)
 (py27) [维多利亚@维多利亚温哥华]$ P
 [P:蟒蛇]
 Python 2.7.12 |Anaconda 自定义(64 位)| (默认,2016 年 7 月 2 日,17:42:40)
 [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] 在 linux2
 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
 Anaconda 由 Continuum Analytics 提供。
 请查看:http://continuum.io/thanks 和 https://anaconda.org
 >>> 导入 sklearn
 >>> sklearn.__version__
 '0.17.1'
 >>>
 (py27) [维多利亚@维多利亚温哥华]$

AFAIK,我的 Python 2.7 venv 将与我的 Python 3.5 venv“相似”,昨天,在我安装那个 (py35) venv 之前。

抱歉,我的意思是您之前遇到问题的 conda 安装的 scikit-learn。 这是 pip 安装的一个,你把它放在上面来解决你的问题。 由于您似乎可以在此处导入train_test_split ,因此 python 可能是从 pip 绘制的。 我很想知道如果你卸载了你通过 pip 安装的东西会是什么样子(从而恢复到你有 ImportError 的状态)。

@nelson-liu:是的/哎呀! 我意识到,在我发布该输出后立即。 更新,现在,上面。 ;-)

您正在绘制的 python3.5 env 上仍然有 scikit-learn from pip,这使水域变得相当混乱。 不太确定您的机器上发生了什么,特别是因为您甚至无法在根环境中导入 scikit-learn; 我认为 py35 环境中的 scikit-learn 是从你不希望它成为的其他地方提取的。 我会检查你的 $PATH 和 $PYTHONPATH 如果你想避免其他包的未来出现这样的问题,但很高兴看到它无论如何都“工作”。

啊……好点! ;-)

更新:嘿——好球(聪明的人;;-)! 我的 $PYTHONPATH 出现了问题,这是由于今年早些时候我将 PyCharm 用作我的 Python IDE 而引起的。 为了解决这些问题,我在我的 PyCharm 根目录中创建了一个 my_script.pth,它列出了我的 PYTHONPATHS,在我的 conda 安装的 Pyhton 包文件夹中带有指向那个 *.pth 文件的符号链接; 例如

/home/victoria/.local/lib/python3.5/site-packages/my_scripts.pth
# symlink to: /home/victoria/PycharmProjects/scripts/my_scripts.pth

[我知道:这很复杂,但我需要这样做。] 长话短说,我实际上更喜欢 Geany 作为我的(多平台)IDE/编辑器,所以我后来复制/更新了这些路径,例如

/home/victoria/.local/lib/python3.5/site-packages/my_scripts.pth
# symlink (now!) to: /home/victoria/GeanyProjects/Victoria/scripts/my_scripts.pth

我的(Geany)my_scripts.pth($PYTHONPATH)文件指向

/home/victoria/.local/lib/python2.7

......我相信,这可能是问题所在?

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

tdomhan picture tdomhan  ·  58评论

thomasjpfan picture thomasjpfan  ·  60评论

jhennrich picture jhennrich  ·  61评论

jnothman picture jnothman  ·  68评论

naught101 picture naught101  ·  59评论