python - 使用sklearn.model_selection分割不平衡数据集

标签 python machine-learning scikit-learn dataset

我使用以下代码将数据集拆分为训练/验证/测试集。

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = 
        train_test_split(X_data, y_data, test_size=0.3, random_state=42)

X_test, X_val, y_test, y_val = 
        train_test_split(X_test, y_test, test_size=0.5, random_state=42)

问题是我的数据集确实不平衡。例如,有些类(class)有 500 个样本,有些则有 70 个。在这种情况下这种分割方法准确吗?采样是随机的还是sklearn使用seome方法来保持所有集合中数据的分布相同?

最佳答案

您应该使用stratify选项(请参阅docs):

X_train, X_test, y_train, y_test = 
        train_test_split(X_data, y_data, test_size=0.3, random_state=42, stratify=y_data)

X_test, X_val, y_test, y_val = 
        train_test_split(X_test, y_test, test_size=0.5, random_state=42, stratify=y_test)

关于python - 使用sklearn.model_selection分割不平衡数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56024117/

相关文章:

javascript - throw 500 错误

python - 绘制按列分组的 Pandas 数据框

Python 多处理 - 映射私有(private)方法

Python:如果字符串包含特定关键字,则从列表中删除特定字符串

python - 如何在 1d 中找到密集区域

machine-learning - 特定组/范围的 ML 准确性

machine-learning - 用于理解上下文单词的自然语言处理技术

python - 当我拥有所需的 DLL 时,为什么会出现此导入错误?

scikit-learn - 在一个网格搜索中尝试多个估计器

machine-learning - 机器学习: Weighting Training Points by Importance