调用sklearn中的classification_report,ValueError: Mix type of y not allowed, got types set(['binary', 'continuous'])

  统计/机器学习 模型验证 Python    浏览次数:15626        分享
0

最近在学习机器学习的一些算法,在弄决策树的时候报了错

print classification_report(y,answer,target_names=['up','down'])


 File "G:\Anaconda2\lib\site-packages\sklearn\metrics\classification.py", line 1391, in classification_report

    labels = unique_labels(y_true, y_pred)

  File "G:\Anaconda2\lib\site-packages\sklearn\utils\multiclass.py", line 84, in unique_labels

    raise ValueError("Mix type of y not allowed, got types %s" % ys_types)

ValueError: Mix type of y not allowed, got types set(['binary', 'continuous'])


我google一下,发现是说y的元素值类型都要一致才可以,但是我遍历了y,所有的元素都是

np.float64的类型,并不存在类型不一致的问题呀

 

莫斯   2017-05-13 20:05



   1个回答 
3

classification_report(y,answer,target_names=['up','down'])中y必须是整数型,answer也必须是整数型,估计你里面有小数。

你可以这样试试

>>> y = list(map(lambda x: int(x), y))
>>> answer = list(map(lambda x: int(x), answer))
>>> print(classification_report(y,answer,target_names=['up','down']))
SofaSofa数据科学社区DS面试题库 DS面经

派大星   2017-05-13 21:41

感谢,确实可以了,确实不清楚必须要整数型,因为在前面的一个练习里面是没有问题的,刚刚看了他的数据类型也是float64的,不懂是不是他数据量才10个的原因,我自己这个例子的数据量是30万,然后就出错了,我将y转换为np.int64也不行,用你的方法可以了,非常感谢 - 莫斯   2017-05-13 22:53


  相关讨论

sklearn cross_val_score中的参数pre_dispatch

sklearn GridSearchCV中的refit是什么意思

sklearn计算MAPE

sklearn.model_selection.cross_val_predict怎么固定random_state?

sklearn cross_val_score怎么同时对多个scoring进行验证

sklearn无法加载kfold

怎么自定义sklearn GridSearchCV中评估函数的阈值

关于sklearn.model_selection.PredefinedSplit的用法

sklearn classification_report里的support是什么意思

sklearn里LogisticRegressionCV中的参量Cs什么意思

  随便看看

什么是SMOTE sampling方法?

python(matplotlib)中如何把折线图和柱状图画在一起?

两个独立的正态随机变量的乘积服从什么分布?

keras里sparse_categorical_crossentropy和categorical_crossentropy什么不同?

怎么在已有的dataframe中插入一个新列(Pandas)