员工晋升预测ML模型调用RFECV.predict触发TypeError错误如何解决
报错原因
这个报错本质是你调用predict方法的主体不是合法的scikit-learn估计器实例,结合你给出的代码,常见原因有3个:
- 你直接调用了
RFECV类的predict方法,而非已经初始化并拟合完成的RFECV实例的方法 - RFECV初始化时传入的
estimator参数为None,没有指定合法的基分类器/基回归器 - 拟合RFECV时没有将拟合后的实例赋值给变量,导致调用
predict的对象是空值
解决方法
按顺序检查修正你的代码即可:
- 先导入所需依赖,初始化合法的基估计器和RFECV实例:
from sklearn.feature_selection import RFECV from sklearn.ensemble import RandomForestClassifier import numpy as np # 初始化基分类器,可根据你的任务替换为其他符合sklearn规范的估计器 base_estimator = RandomForestClassifier() # 初始化RFECV实例,必须传入estimator参数 rfecv = RFECV(estimator=base_estimator, cv=5, scoring='roc_auc')
- 必须先用你的训练数据拟合RFECV实例,拟合完成后才能调用预测方法:
# X_train、y_train替换为你自己的训练特征、训练标签 rfecv.fit(X_train, y_train)
- 调用预测方法时使用拟合完成的RFECV实例,不要直接用RFECV类:
prediction = rfecv.predict(np.array([[2, #department code 3, #masters degree 1, #male 1, #1 training 30, #30 years old 5, #previous year rating 10, #length of service 1, #KPIs met >80% 1, #awards won 95, #avg training score 7, #sum of metric 700 #total score ]])) print("Whether the Employee should get a Promotion : 1-> Promotion, and 0-> No Promotion :", prediction)
内容的提问来源于stack exchange,提问作者Shubham Singh
相关产品推荐
相关产品推荐

