scikit Mixtypes的Y错误

时间:2013-09-30 21:13:58

标签: python scikit-learn

嗨,我在这里是一个scikit新手。我正在尝试训练计算机给出一系列浮动决定在3个类之间。我把类分类为0,0.5和1.我也试过0,1.0和2.0。我仍然收到以下错误:

File "/Library/Python/2.7/site-packages/sklearn/utils/multiclass.py", line 85, 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(['continuous', 'multiclass'])

我不知道那个错误意味着什么

2 个答案:

答案 0 :(得分:6)

尝试为目标标签使用整数类型。或者,或许更好,使用['a', 'b', 'c']之类的字符串标签,但使用更具描述性的名称。

如果您检查此文件的代码multiclass.pycode is here)并查找函数type_of_target,您会发现此案例已有详细记录。

由于某些数据被视为float类型(当包含0.5时),因此它会相信您有连续值输出,这对于多类离散分类无效。

另一方面,它会看[0, 1.0, 2.0],就像它是一个整数和两个floats,这就是为什么你同时得到continuousmulticlass的原因。将最后一个示例切换为[0, 1, 2]应该有效。文档也让人觉得切换到[0.0, 1.0. 2.0]也会起作用,但要小心并先测试一下。

答案 1 :(得分:0)

没有代码很难确定,但是我的猜测是您y数据的形状不是预期的。

例如,当我的代码引发此错误时,这是​​因为我试图将y数据期望以(60000,10)的形式传递给分类为(60000,10,2)的数据

我正在重新运行不止一次调用to_categorical(y_test)的单元...当我将代码加载到适当的脚本中并运行它时,它可以正常工作:)