Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError: unorderable types: str() < int()

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.

like image 982
j_x li Avatar asked Dec 10 '22 14:12

j_x li


1 Answers

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.

like image 130
DSM Avatar answered Dec 28 '22 13:12

DSM