ValueError:此解算器需要数据中至少两个类的样本,但数据仅包含一个类:1.0

2024-04-26 07:50:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个8670个试验的训练数据集,每个试验有125个时间样本,而我的试验集有578个试验。当我应用scikit-learn中的支持向量机算法时,得到了很好的结果。

但是,当我应用logistic回归时,会出现以下错误:

"ValueError: This solver needs samples of at least 2 classes in the data, but the data contains only one class: 1.0" .

我的问题是为什么支持向量机能够给出预测,而logistic回归却给出了这个错误?

可能是数据集有问题,或者是因为训练样本看起来很相似,逻辑回归无法分类?


Tags: the数据算法data错误时间scikitthis
1条回答
网友
1楼 · 发布于 2024-04-26 07:50:18

我在下一期的类似线性模块中读到了这个:https://github.com/lensacom/sparkit-learn/issues/49

“不幸的是,这确实是一只虫子。Sparkit并行地训练sklearn的线性模型,然后在一个reduce步骤中将它们平均。至少有一个块,其中仅包含一个标签。要检查,请尝试以下操作:

train_Z[:, 'y']._rdd.map(lambda x: np.unique(x).size).filter(lambda x: x < 2).count()

要解决这个问题,您可以随机化列车数据,以避免使用一个标签的数据块,但这仍在等待一个聪明的解决方案。”

编辑:我找到了一个解决方案,上面分析的错误是正确的。这将是一个解决办法。

要按照与使用scikitlearn utils模块相同的顺序排列数组:

from sklearn.utils import shuffle
X_shuf, Y_shuf = shuffle(X_transformed, Y)

然后用那些洗牌数组再次训练你的模型,它会起作用的!

相关问题 更多 >