类型错误:无法排序的类型:str() <整数() [英] TypeError: unorderable types: str() &lt; int()

查看:37
本文介绍了类型错误:无法排序的类型:str() <整数()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆