gpt4 book ai didi

python - scikit-learn 中的 StratifiedKFold 与 KFold

转载 作者:行者123 更新时间:2023-12-03 23:26:19 30 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





difference between StratifiedKFold and StratifiedShuffleSplit in sklearn

(3 个回答)


10 个月前关闭。




我用这个代码来测试 KFoldStratifiedKFold .

import numpy as np
from sklearn.model_selection import KFold,StratifiedKFold

X = np.array([
[1,2,3,4],
[11,12,13,14],
[21,22,23,24],
[31,32,33,34],
[41,42,43,44],
[51,52,53,54],
[61,62,63,64],
[71,72,73,74]
])

y = np.array([0,0,0,0,1,1,1,1])

sfolder = StratifiedKFold(n_splits=4,random_state=0,shuffle=False)
floder = KFold(n_splits=4,random_state=0,shuffle=False)

for train, test in sfolder.split(X,y):
print('Train: %s | test: %s' % (train, test))
print("StratifiedKFold done")

for train, test in floder.split(X,y):
print('Train: %s | test: %s' % (train, test))
print("KFold done")
我发现 StratifiedKFold可以保持标签的比例,但是 KFold不能。
Train: [1 2 3 5 6 7] | test: [0 4]
Train: [0 2 3 4 6 7] | test: [1 5]
Train: [0 1 3 4 5 7] | test: [2 6]
Train: [0 1 2 4 5 6] | test: [3 7]
StratifiedKFold done
Train: [2 3 4 5 6 7] | test: [0 1]
Train: [0 1 4 5 6 7] | test: [2 3]
Train: [0 1 2 3 6 7] | test: [4 5]
Train: [0 1 2 3 4 5] | test: [6 7]
KFold done
看来 StratifiedKFold更好,所以应该 KFold不被使用?
何时使用 KFold而不是 StratifiedKFold ?

最佳答案

我想你应该问“ 何时使用 StratifiedKFold 而不是 KFold? ”。
你首先需要知道什么是“KFold”和“分层”。

KFold is a cross-validator that divides the dataset into k folds.


Stratified is to ensure that each fold of dataset has the sameproportion of observations with a given label.


所以,这意味着 分层KFold 的改进版KFold
因此,这个问题的答案是 在处理类分布不平衡的分类任务时,我们应该更喜欢 StratifiedKFold 而不是 KFold .

例如
假设有一个包含 16 个数据点且类别分布不平衡的数据集。在数据集中,12 个数据点属于 A 类,其余(即 4 个)属于 B 类。 B 类与 A 类的比率为 1/3。如果我们使用 分层KFold 并且设置 k = 4,那么训练集将包括来自 A 类的 3 个数据点和来自 B 类的 9 个数据点,测试集将包括来自 A 类的 3 个数据点和来自 B 类的 1 个数据点。
正如我们所看到的,数据集的类分布通过 保留在分割中。分层KFold KFold 不考虑这一点。

关于python - scikit-learn 中的 StratifiedKFold 与 KFold,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65318931/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com