使用StratifiedShuffleSplit python时出错

时间:2018-02-17 09:02:15

标签: python python-3.x shuffle

我不知道为什么在我的代码没有工作的时候,我确信它没关系

我试图使用简单的StratifiedShuffleSplit,但它不起作用

代码

from sklearn.model_selection import StratifiedShuffleSplit

print(data_x.shape)`

(100,1)

print(data_y.shape)

(100,28)

考虑我的data_y是多y标签

stratified_split = StratifiedShuffleSplit(n_splits=2, test_size=0.33)
for train_index, test_index in stratified_split.split(data_x, data_y):
    x_train, x_test = data_x[train_index], data_x[test_index]
    y_train, y_test = data_y[train_index], data_y[test_index]

我明白了

错误

  

ValueError:y中填充最少的类只有1个成员,这个成员太少了。任何类的最小组数不能少于2.`

有人可以帮助我吗?

python3.6 - anaconda

2 个答案:

答案 0 :(得分:0)

很显然,在将数据划分为训练和测试样本时,您犯了一个错误。

您可以通过设置StratifiedShuffleSplit()的参数来解决此问题,  为n_splits=classnum, test_size=testRatio,train_size=1-testRatio, random_state=0

或者,您可以事先仔细尝试对训练和测试样本进行拆分,然后将其提供给StratifiedShuffleSplit()

答案 1 :(得分:0)

选中data.column_name.value_counts(),它将告诉您number of samples for a category。但是正如错误所说,您只有一个观察类别。并且如果category只有一个观察值,则应删除该观察值。保留一个不会有所作为,也不会为此category添加更多数据。