如何在Scikit Learn中对训练和测试数据进行分层



我正在尝试实现虹膜数据集的分类算法(从Kaggle下载(。在"物种"列中,类别(刚毛鸢尾、杂色鸢尾、弗吉尼亚鸢尾(按顺序排列。如何使用Scikit Learn对训练和测试数据进行分层?

如果你想以0.3的测试比例对数据进行洗牌和拆分,你可以使用

sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, shuffle=True)

其中X是您的数据,y是相应的标签,testrongize是应保留用于测试的数据的百分比,shuffle=True在拆分之前对数据进行搅乱

为了确保数据按列平均分割,可以将其提供给分层参数。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, 
shuffle=True, 
stratify = X['YOUR_COLUMN_LABEL'])

为了确保这三个类在训练和测试中得到平等的表示,您可以使用train_testrongplit函数的layery参数。

from sklearn.model_selection import train_test_split
X_train, y_train, X_test, y_test  = train_test_split(X, y, stratify = y)

这将确保所有类的比例保持相等。

使用sklearn.model_selection.train_testrongplit并使用Shuffle参数。

shuffle:布尔值,可选(默认值=True(是否在拆分前对数据进行混洗。如果shuffle=False,则分层必须为None。

相关内容

  • 没有找到相关文章

最新更新