将数据集分为训练和测试数据,保持比例

时间:2018-10-02 14:18:59

标签: split dataset data-science python-iris iris-dataset

我有Iris数据集(可以在这里找到:https://www.kaggle.com/uciml/iris),我应该将其分为测试集和训练集。但是,我需要对其进行拆分,以使训练和测试集中的类分布与完整数据集中的类分布相同。

我已经看到了这个问题的最高答案:how to split a dataset into training and validation set keeping ratio between classes?,但是由于我对数据科学和python还是陌生的,所以我很迷茫。

对于虹膜数据集,前50行是一种花,接下来的50行是第二种花,后50行是第三种花。我怎么写,这样我会得到例如。每三分之一有50%的测试数据?在上面链接的问题中,我真的无法理解他们在哪里以及如何做到这一点。如果您能像孩子一样解释这一点,我将不胜感激。

x_train代表花朵的4种不同特征,y_train代表我们拥有的花朵的那种特征吗?

提前谢谢!

编辑:我尝试过

  

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.5,random_state = 65)

但这是一种公平的方法吗?我选择了不同数量的随机状态,直到我在测试和训练集中获得每种花型的正好25个(总是大约1/3,但有了65个我就精确了)。感觉有点像在欺骗……

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

  

sklearn.model_selection.train_test_split

具有shufflestratify参数。

默认shuffle = Truestratify=None

如果您要处理回归问题,则默认情况下,train_test_split将为您重新整理数据。

如果要处理分类,则需要指定stratify = << your response variable >>

有关更多信息,请检查documentation

谢谢