今天在做机器学习实验的时候疯狂报错,修复了一个又一个的bug。这个错误也是比较典型的一个,于是就记录下来。
这是一个决策树的预剪枝问题,当我想要用accuracy_score等sklearn自带函数进行评估时,出现了报错ValueError: Classification metrics can’t handle a mix of binary and continuous targets。
在检查了predict和label的维数等之后,发现并不是维数的问题。
最终解决这个问题是发现predict和label的数据类型不同,predict还是float类型,表示分类类别的概率。label是int类型,代表的是类别标签。
有博主提示说: classifier的model在predict的时候 输出的是各个分类的概率,所以是float类型。
因此我们使用如下代码进行转化

predictions2=predictions2.astype(np.int64)

于是成功解决。
但是,我后来有尝试了对未减枝的数据进行预测的数据类型,发现仍旧是float类型,但是没有报错?好奇怪?

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐