类型错误:无法排序的类型:str() <整数() [英] TypeError: unorderable types: str() < int()
问题描述
我使用的是 python 3.5,所有包都是以下版本
numpy-1.12.0b1+mkl-cp35-cp35m-win_amd64scikit_learn-0.18.1-cp35-cp35m-win_amd64scipy-0.18.1-cp35-cp35m-win_amd64
我使用 Windows 操作系统.
当我使用 scikit_learn 时,我收到以下消息,
回溯(最近一次调用最后一次):文件F:/liyulin/tf_idf2.py",第 7 行,在 <module> 中from sklearn import feature_extraction # sklearn 是一个数据挖掘工具包文件C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\__init__.py",第57行,在<module>从 .base 导入克隆文件C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\base.py",第 12 行,从 .utils.fixes 导入签名文件C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\utils\__init__.py",第11行,在<module>从 .validation 导入 (as_float_array,文件C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\utils\validation.py",第18行,在<module>从 ..utils.fixes 导入签名文件C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\utils\fixes.py",第406行,在<module>如果 np_version <(1, 12, 0):类型错误:无法排序的类型:str() <整数()进程以退出代码 1 结束
这是我第一次提问
请帮忙解决.
你的 numpy 版本是 numpy-1.12.0b1.那个b1"导致了问题.如果你看看 sklearn/utils/fixes.py 你看到有一个 parse_version 函数,它试图使所有的东西都是整数:
def _parse_version(version_string):版本 = []对于 version_string.split('.') 中的 x:尝试:version.append(int(x))除了值错误:# x 可能是 dev-1ea1592 的形式version.append(x)返回元组(版本)np_version = _parse_version(np.__version__)
但在0b1"的情况下,我们将采用 ValueError 路径.所以这一行
如果 np_version <(1, 12, 0):
比较
<预><代码>>>>(1, 12, '0b1') <(1, 12, 0)回溯(最近一次调用最后一次):文件<stdin>",第 1 行,在 <module> 中类型错误:无法排序的类型:str() <整数()这行不通.虽然这绝对是他们的一个错误,但最简单的解决方案是更改您的 numpy 版本(例如,切换回 1.11.2).但是如果你想保留当前版本的 numpy,你可以手动编辑 fixes.py
来改变
如果 np_version <(1, 12, 0):
进入
如果 np_version <(1, 12):
这样它就不会尝试将 0
与 "0b1"
进行比较,而是返回 False.
I was using python 3.5 and all packages were the following versions
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
I use the windows os.
when I use scikit_learn, I got the following message ,
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
This is my first time to ask questions
Kindly help in solving it.
Your version of numpy is numpy-1.12.0b1. That "b1" is causing the problem. If you look at sklearn/utils/fixes.py you see there's a parse_version function which tries to make everything ints:
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__)
but in the case of "0b1" we'll take the ValueError path. So this line
if np_version < (1, 12, 0):
compares
>>> (1, 12, '0b1') < (1, 12, 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() < int()
which won't work. While this is definitely a bug on their part, the easiest solution is to change your version of numpy (say, by switching back to 1.11.2). But if you want to keep your current version of numpy, you could just edit fixes.py
manually to change
if np_version < (1, 12, 0):
into
if np_version < (1, 12):
so that it won't try to compare 0
with "0b1"
, but will return False instead.
这篇关于类型错误:无法排序的类型:str() <整数()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!