我想在拔除后加载一个预测,但出现此错误
/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上运行代码可以正常工作,但是,当我尝试在终端上运行时出现错误。
答案 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)))