类型错误:无序类型:str()<int()

2024-05-18 23:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Python3.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操作系统。

当我使用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

这是我第一次提问

请帮忙解决。


Tags: infrompyimportlocallinesklearnusers
1条回答
网友
1楼 · 发布于 2024-05-18 23:27:53

你的numpy版本是numpy-1.12.0b1。是“b1”引起了这个问题。如果你看sklearn/utils/fixes.py,你会发现有一个parse_version函数,它试图使所有内容都为int:

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__)

但在“0b1”的情况下,我们将采用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()

这是行不通的。虽然这绝对是他们的一个bug,但最简单的解决方案是更改您的numpy版本(比如,切换回1.11.2)。但是如果您想保留当前版本的numpy,您可以手动编辑fixes.py来更改

if np_version < (1, 12, 0):

进入

if np_version < (1, 12):

这样它就不会试图比较0"0b1",而是返回False。

相关问题 更多 >

    热门问题