- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是在 sklearn 的 train_test_split 函数中尝试“分层”参数。我的数据集不平衡,以下是类别的比例:
0级:8,9021级:1,605
第 1 类占数据集的 15%。
这是不使用分层的默认分割:
x_train, x_test, y_train, y_test = train_test_split(df['image'], df['class'], test_size=0.2,random_state=5)
Training set balance:
0 7,116
1 1,289
Test set balance:
0 1,786
1 316
下面我使用分层:
x_train, x_test, y_train, y_test = train_test_split(df['image'], df['class'], test_size=0.2,random_state=5,stratify=df['class'])
Training set balance:
0 7121
1 1284
Test set balance:
0 1781
1 321
两者的比例大致相同:第 1 类为 18%。添加“分层”没有任何作用。
所以这让我有点困惑。我做错了什么吗?
谢谢
最佳答案
添加stratify
将保证1的比例与原始数据相同。
计算1的比例:
原文:
Total: print(1605/(1605+8902)) = 0.1527553059864852
没有分层
:
Train: print(1289/(1289+7116)) = 0.1533610945865556
Test: print(316/(316+1786)) = 0.15033301617507136
正如你所看到的,1的比例与原始数据不一样,当你再次采样时,比例可能会不同! (因为是随机抽样所以很相似)
分层:
Train: print(1284/(1284+7121)) = 0.15276621058893516
Test: print(321/(321+1781)) = 0.1527117031398668
与原始数据一样,即使再次采样,比例也不会改变。那么分层就发挥了它的作用,不是吗?
关于python - 在 train_test_split 中使用 'stratify' 没有什么区别。它是干什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56042109/
有人可以帮助我吗?我很难知道它们之间的区别 from sklearn.model_selection import train_test_split from sklearn.cross_valida
有一个dataframe,共有14列,最后一列是目标标签,整数值为0或1。 我已经定义了: X = df.iloc[:,1:13] ---- 这由特征值组成 y = df.iloc[:,-1] ---
根据在线资源,sklearn.cross_validation 模块中的“train_test_split”函数返回随机状态的数据。 这是否意味着如果我用相同的数据训练一个模型两次,我会得到两个不同的
我正在尝试以分层方式分割数据。我认为 sklearn 中的 train_test_split 在不平衡数据集上无法按预期方式工作。 这是一个例子: from sklearn.model_selecti
我目前正在尝试使用决策树分类器训练数据集,但我无法让 train_test_split 起作用。 从下面的代码来看,CS 是目标输出,EN SN JT FT PW YR LO LA 是特征输入。 所有
我正在使用 Google colab,并且正在尝试训练卷积神经网络。用于拆分大约 11,500 张图像的数据集,每个数据的形状为 63x63x63。我使用了 sklearn 中的 train_test
我有一个问题,我一直在寻找答案,但找不到答案。 如果我有一个使用三个或更多类标记的数据集,其中每个类代表 33% 的数据。当我拆分数据时,训练/验证/测试集是否在类之间保持相同的平衡? 如果没有,有办
我刚开始使用 Python 实现机器学习,目前正在按照 YouTube 教程尝试 KNN 分类。这是代码。 import numpy as np #from sklearn.model_selecti
我已从本地目录读取图像,如下所示: from PIL import Image import os root = '/Users/xyz/Desktop/data' for path, subdirs
密切关注 scikit-learn 文档,我正在尝试安装一个虚拟分类器。但是,运行时会引发值错误。这是出乎意料的,因为之前我使用相同的数据:X = vector_data(稀疏矩阵),y = vect
我是 python 和 Keras 新手,请耐心解答我的问题。 我最近在 Keras 中创建了一个模型,对其进行了训练并获得了“均方误差 MSE”后预测。我在所使用的数据集上使用了train_test
我可以使用 train_test_split() 而不是传递 test_size 来根据索引值将数据集拆分为训练集和测试集(每 10 行作为训练数据,其余作为测试数据) 和 random_state
我有一个 pandas 数据框,我想对其进行预测并获取每个特征的均方根误差。我正在遵循手动拆分数据集的在线指南,但我认为使用 sklearn.model_selection 中的 train_test
我的数据集有 42000 行 我需要将数据集分为训练、交叉验证和测试 集,分割比例为60%、20% 和20%。这是根据 Andrew Ng 教授在他的 ml-class 讲座中的建议。 我意识到 sc
我正在使用矩阵 X 和该矩阵 y 中每一行的标签。X 定义为: df = pd.read_csv("./data/svm_matrix_0.csv", sep=',',header=None, enc
我有一个按日期索引的 pandas 数据框。让我们假设它是从 1 月 1 日到 1 月 30 日。我想将此数据集拆分为 X_train、X_test、y_train、y_test,但我不想混合日期,所
如果我计划使用交叉验证 (KFold),我是否仍应将数据集拆分为训练数据和测试数据并仅在训练集上执行训练(包括交叉验证)?或者简历会为我做一切吗?例如 选项1 X_train, X_test, y_t
我今天刚刚构建了我的第一个随机森林分类器,我正在努力提高它的性能。我正在阅读有关交叉验证对于避免数据过度拟合并因此获得更好结果的重要性。我使用 sklearn 实现了 StratifiedKFold,
有没有办法使用sklearn.model_selection.train_test_split保留训练集中特定列的所有唯一值。 让我举个例子。我知道的最常见的矩阵分解问题是预测用户在 Netflix
我是 sklearn 的新用户,对使用 sklearn.model_selection 中的 train_test_split 有疑问。我有一个形状为 (96350, 156) 的大型数据框。在我的数
我是一名优秀的程序员,十分优秀!