TypeError:unorderable类型:str()< INT()

时间:2016-11-19 13:40:50

标签: python scikit-learn

我使用的是python 3.5,所有软件包都是以下版本

numpy-1.12.0b1+mkl-cp35-cp35m-win_amd64

scikit_learn-0.18.1-cp35-cp35m-win_amd64

scipy-0.18.1-cp35-cp35m-win_amd64

我使用的是windows os。

当我使用scikit_learn时,我收到以下消息,

Traceback (most recent call last):
  File "F:/liyulin/tf_idf2.py", line 7, in <module>
    from sklearn import feature_extraction  # sklearn是一个数据挖掘工具包
  File "C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\__init__.py", line 57, in <module>
    from .base import clone
  File "C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\base.py", line 12, in <module>
    from .utils.fixes import signature
  File "C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\utils\__init__.py", line 11, in <module>
    from .validation import (as_float_array,
  File "C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\utils\validation.py", line 18, in <module>
    from ..utils.fixes import signature
  File "C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\utils\fixes.py", line 406, in <module>
    if np_version < (1, 12, 0):
TypeError: unorderable types: str() < int()
Process finished with exit code 1

这是我第一次提问

请帮助解决它。

1 个答案:

答案 0 :(得分:13)

你的numpy版本是numpy-1.12.0b1。那&#34; b1&#34;造成了这个问题。如果您查看sklearn/utils/fixes.py,您会看到有一个parse_version函数可以尝试创建所有内容:

def _parse_version(version_string):
    version = []
    for x in version_string.split('.'):
        try:
            version.append(int(x))
        except ValueError:
            # x may be of the form dev-1ea1592
            version.append(x)
    return tuple(version)

np_version = _parse_version(np.__version__)

但是在&#34; 0b1&#34;我们将采用ValueError路径。所以这一行

 if np_version < (1, 12, 0):

比较

>>> (1, 12, '0b1') < (1, 12, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() < int()

不会起作用。虽然这肯定是他们的错误,但最简单的解决方案是更改你的numpy版本(例如,通过切换回1.11.2)。但是如果你想保留当前版本的numpy,你可以手动编辑fixes.py来改变

if np_version < (1, 12, 0):

if np_version < (1, 12):

因此它不会尝试将0"0b1"进行比较,但会返回False。