j_x*_* li 4 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
Run Code Online (Sandbox Code Playgroud)
我用的是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
Run Code Online (Sandbox Code Playgroud)
这是我第一次提问
请帮助解决它.
DSM*_*DSM 13
你的numpy版本是numpy-1.12.0b1.那个"b1"导致了这个问题.如果你看看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__)
Run Code Online (Sandbox Code Playgroud)
但在"0b1"的情况下,我们将采用ValueError路径.所以这一行
if np_version < (1, 12, 0):
Run Code Online (Sandbox Code Playgroud)
比较
>>> (1, 12, '0b1') < (1, 12, 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() < int()
Run Code Online (Sandbox Code Playgroud)
哪个不行.虽然这肯定是他们的错误,但最简单的解决方案是更改你的numpy版本(例如,通过切换回1.11.2).但是如果你想保留当前版本的numpy,你可以fixes.py手动编辑来改变
if np_version < (1, 12, 0):
Run Code Online (Sandbox Code Playgroud)
成
if np_version < (1, 12):
Run Code Online (Sandbox Code Playgroud)
所以它不会尝试比较0有"0b1",但将返回False代替.