如何在sklearn中将数据均衡分割为训练集和测试集

我在使用sklearn进行多分类任务。我需要将所有数据(alldata)分割成训练集(train_set)和测试集(test_set)。我想从每个类别中随机抽取相同数量的样本。实际上,我正在使用这个函数

X_train, X_test, y_train, y_test = cross_validation.train_test_split(Data, Target, test_size=0.3, random_state=0)

但是它产生了不均衡的数据集!有什么建议吗?


回答:

你可以使用StratifiedShuffleSplit来创建与原始数据集相同比例的类别数据集:

import numpy as npfrom sklearn.model_selection import StratifiedShuffleSplitX = np.array([[1, 3], [3, 7], [2, 4], [4, 8]])y = np.array([0, 1, 0, 1])stratSplit = StratifiedShuffleSplit(y, n_iter=1, test_size=0.5, random_state=42)for train_idx, test_idx in stratSplit:    X_train=X[train_idx]    y_train=y[train_idx]print(X_train)# [[3 7]#  [2 4]]print(y_train)# [1 0]

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注