6 python svm scikit-learn logistic-regression
我有8670个试验的训练数据集,每个试验的样本长度为125次,而我的测试集包含578个试验.当我从scikit-learn应用SVM算法时,我得到了相当不错的结果.
但是,当我应用逻辑回归时,会发生以下错误:
"ValueError:此解算器需要数据中至少有2个类的样本,但数据只包含一个类:1.0".
我的问题是为什么SVM能够给出预测,但逻辑回归给出了这个错误?
数据集中是否有可能出现问题,或者只是因为训练样本看起来类似于逻辑回归而无法进行分类?
我在类似的线性模块的以下问题中读到了这个:https://github.com/lensacom/sparkit-learn/issues/49
"遗憾的是,这确实是一个错误.Sparkit并行训练sklearn的线性模型,然后在减少步骤中对它们进行平均.至少有一个块,其中只包含一个标签.要检查,请尝试以下方法:
train_Z[:, 'y']._rdd.map(lambda x: np.unique(x).size).filter(lambda x: x < 2).count()
Run Code Online (Sandbox Code Playgroud)
要解决你可以随机化列车数据以避免带有一个标签的街区,但这仍然在等待一个聪明的解决方案."
编辑:我找到了解决方案,上面的错误分析是正确的.这将是一个解决方案.
要以相同的顺序对数组进行洗牌,我使用了scikitlearn utils模块:
from sklearn.utils import shuffle
X_shuf, Y_shuf = shuffle(X_transformed, Y)
Run Code Online (Sandbox Code Playgroud)
然后使用那些改组的阵列再次训练你的模型,它会工作!
| 归档时间: |
|
| 查看次数: |
6330 次 |
| 最近记录: |