为了账号安全,请及时绑定邮箱和手机立即绑定

使用 joblib 加载的 sklearn 模型时出错。类型错误:

使用 joblib 加载的 sklearn 模型时出错。类型错误:

德玛西亚99 2021-12-21 15:00:24
我使用 sklearn创建了一个VotingClassifier()对象。后来,我使用joblib将其保存到voting_predictor.pkl文件。当我成功加载它时,当我尝试预测一些数据时,voting_predictor.predict(X_test)出现以下错误:类型错误:无法根据规则“安全”将数组数据从 dtype('O') 转换为 dtype('int64')我试图用泡菜转储/加载对象,但我得到了完全相同的错误。代码如下所示:eclf1 = VotingClassifier(estimators=estimators, voting='hard')eclf1 = eclf1.fit(X_train, y_train)y_pred = eclf1.predict(X_test)report = classification_report(y_test, y_pred)poll_accuracy = accuracy_score(y_test, y_pred)print(report)print(poll_accuracy)# successful object dumpfilename = 'voting_predictor.pkl'joblib.dump(eclf1, filename)#successful object loadvoting_predictor = joblib.load(filename)# this prints the object correctly, showing all its parameters print(voting_predictor)#error shows herey_pred = voting_predictor.predict(X_test)report = classification_report(y_test, y_pred)poll_accuracy = accuracy_score(y_test, y_pred)在print(voting_predictor)成功地打印出对象及其所有参数。关于为什么会发生这种情况的任何想法?
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

我在将 catbooster 与其他预测器结合时遇到了同样的错误。我找到了这个解决方案,但是我正在寻找一个更优雅的解决方案。


查看完整回答
反对 回复 2021-12-21
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

问题是目标列是类的名称,作为字符串。似乎在没有将字符串值标签编码为某个整数的情况下将其保留为导致此错误的原因。但是,在其他任何情况下,sklearn 都正确处理了每个类的字符串名称,提供了诸如分类报告和准确度分数之类的所有指标而没有错误。只有当我从文件加载对象时才会发生错误。


查看完整回答
反对 回复 2021-12-21
  • 2 回答
  • 0 关注
  • 570 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号