TypeError:“ NoneType”和“ int”的实例之间不支持“ <”

时间:2019-03-23 14:38:59

标签: python-3.x

我想在拔除后加载一个预测,但出现此错误

  

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/ensemble/weight_boosting.py:29:   DeprecationWarning:numpy.core.umath_tests是一个内部NumPy模块   并且不应该导入。它将在以后的NumPy中删除   发布。从numpy.core.umath_tests导入inner1d   /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/base.py:311:   UserWarning:尝试释放估算器DecisionTreeClassifier从   使用0.19.2版本时为0.20.2版本。这可能会导致破裂   代码或无效结果。使用风险自负。用户警告)   /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/base.py:311:   UserWarning:尝试释放估算器RandomForestClassifier从   使用0.19.2版本时为0.20.2版本。这可能会导致破裂   代码或无效结果。使用风险自负。用户警告)   追溯(最近一次通话):文件“ rf_pred_model_tester.py”,   第7行       print('Class:',int(rf.predict(xx)))文件“ /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/ensemble/forest.py” ,   预测中的第538行       proba = self.predict_proba(X)文件“ /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/ensemble/forest.py”,   第581行,位于predict_proba中       n_jobs,_,_ = _partition_estimators(self.n_estimators,self.n_jobs)文件   “ /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/ensemble/base.py”,   第153行,在_partition_estimators中       n_jobs = min(_get_n_jobs(n_jobs),n_estimators)文件“ /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/utils/init.py ”,   第464行,在_get_n_jobs中       如果n_jobs <0:TypeError:在'NoneType'和'int'的实例之间不支持'<'

这是我要运行的代码

import pickle
import numpy as np
with open('rf_model_1','rb') as f:
    rf=pickle.load(f)

xx = np.array([67, 17832, 1, 1, 0, 33, 1941902452, 36, 33011.0, 19, 18, 0, 2, 1]).reshape(1,-1)
print('Class: ',int(rf.predict(xx)))

我期望这样的结果:

Class:  [0]

如果我在jupyter上运行代码可以正常工作,但是,当我尝试在终端上运行时出现错误。

1 个答案:

答案 0 :(得分:0)

您的错误直言不讳:

  

UserWarning:使用0.19.2版时,尝试释放0.20.2版中的估算器RandomForestClassifier。这可能会导致代码破裂或无效结果。使用风险自负。

的确是这样。腌制时,您的RandomForestClassifier的属性 n_jobs 保持为。这是初始化的默认值,但通常在后台将其设置为1。您可以在此处找到有关n_jobs的更多详细信息:https://scikit-learn.org/stable/glossary.html#term-n-jobs

对您来说,将rf的n_jobs设置为1可以解决问题:

import pickle
import numpy as np
with open('rf_model_1','rb') as f:
    rf=pickle.load(f)

rf.n_jobs = 1

xx = np.array([67, 17832, 1, 1, 0, 33, 1941902452, 36, 33011.0, 19, 18, 0, 2, 1]).reshape(1,-1)
print('Class: ',int(rf.predict(xx)))