StratifiedKFoldとscikit-learnのKFold

CR7

私はこのコードを使用してテスト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いつ使用するか?

JayPeerachai

KFoldの代わりにStratifiedKFoldを使用するのはいつですか?」と尋ねるべきだと思います

KFold」と「Stratified」が最初に何であるかを知る必要があります。

KFoldは、データセットをk個のフォールドに分割するクロスバリデーターです。

階層化とは、データセットの各フォールドが、特定のラベルで同じ割合の観測値を持つようにすることです。

つまり、StratifiedKFoldKFoldの改良版であることを意味します

したがって、この質問に対する答えは、クラス分布が不均衡な分類タスクを処理する場合、KFoldよりもStratifiedKFoldを優先する必要があるということです。


例えば

16個のデータポイントと不均衡なクラス分布を持つデータセットがあるとします。データセットでは、12個のデータポイントがクラスAに属し、残り(つまり、4個)がクラスBに属しています。クラスBとクラスAの比率は1/3です。StratifiedKFoldを使用してk = 4に設定すると、トレーニングセットにはクラスAの3つのデータポイントとクラスBの9つのデータポイントが含まれ、テストセットにはクラスAの3つのデータポイントとクラスBの1つのデータポイントが含まれます。

ご覧のとおり、データセットのクラス分布はStratifiedKFoldによる分割で保持されますがKFoldはこれを考慮していません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

StratifiedKFold vs KFold in scikit-learn

分類Dev

scikit-learn StratifiedKFold implementation

分類Dev

Scikit-Learn:KFold CVの予測確率を取得する方法は?

分類Dev

scikit-StratifiedKFoldの実装を学ぶ

分類Dev

scikit learnのRandomForestClassifierとExtraTreesClassifier

分類Dev

sklearnのStratifiedKFoldとStratifiedShuffleSplitの違い

分類Dev

scikit-learnのDictionaryLearningとMiniBatchDictionaryLearningの違い

分類Dev

scikit-learnとsklearnの違い

分類Dev

scikit-learnでのSpectralClusteringとspectrum_clustering

分類Dev

StratifiedKFold分割トレインと検証セットのサイズ

分類Dev

「OneVsRestClassifier」(Scikit-learn)と「BinaryRelevance」(Scikit-multilearn)の違いは何ですか?

分類Dev

scikit learnのOneVsRestClassifierとMultiOutputClassifierの違いは何ですか?

分類Dev

scikit-learnのSVCとSVMの違いは何ですか?

分類Dev

scikit-learnのpredictとpredict_probaの違い

分類Dev

kerasとscikit-learnの精度計算の違い

分類Dev

Scikit-learnのOneHotEncoderとKNNImpute間の循環ループ

分類Dev

scikit-learnでのPCA投影と再構成

分類Dev

scikit-learn:SVCとSGDの違いは何ですか?

分類Dev

XGBoostError:パイプラインとscikit.learnの問題

分類Dev

KFoldとShuffleSplit CVの違いは何ですか?

分類Dev

Scikit-learn:preprocessing.scale()とpreprocessing.StandardScalar()

分類Dev

conda update scikit-learn(scipyとnumpyも)

分類Dev

get_dummies(Pandas)とOneHotEncoder(Scikit-learn)の長所と短所は何ですか?

分類Dev

ApacheSparkとscikit_learnの間のKMeansで一貫性のない結果

分類Dev

MacOSでのscikit-learnとのibm_boto3互換性の問題

分類Dev

PycharmとSpyderの間のkfoldでの異なるサンプルサイズ

分類Dev

GridsearchとKfoldのデフォルトのCVの違いは何ですか

分類Dev

scikit-learnのpredict_probaとdecision_functionの違いは何ですか?

分類Dev

scikit-learnのpredict_probaとdecision_functionの違いは何ですか?

Related 関連記事

  1. 1

    StratifiedKFold vs KFold in scikit-learn

  2. 2

    scikit-learn StratifiedKFold implementation

  3. 3

    Scikit-Learn:KFold CVの予測確率を取得する方法は?

  4. 4

    scikit-StratifiedKFoldの実装を学ぶ

  5. 5

    scikit learnのRandomForestClassifierとExtraTreesClassifier

  6. 6

    sklearnのStratifiedKFoldとStratifiedShuffleSplitの違い

  7. 7

    scikit-learnのDictionaryLearningとMiniBatchDictionaryLearningの違い

  8. 8

    scikit-learnとsklearnの違い

  9. 9

    scikit-learnでのSpectralClusteringとspectrum_clustering

  10. 10

    StratifiedKFold分割トレインと検証セットのサイズ

  11. 11

    「OneVsRestClassifier」(Scikit-learn)と「BinaryRelevance」(Scikit-multilearn)の違いは何ですか?

  12. 12

    scikit learnのOneVsRestClassifierとMultiOutputClassifierの違いは何ですか?

  13. 13

    scikit-learnのSVCとSVMの違いは何ですか?

  14. 14

    scikit-learnのpredictとpredict_probaの違い

  15. 15

    kerasとscikit-learnの精度計算の違い

  16. 16

    Scikit-learnのOneHotEncoderとKNNImpute間の循環ループ

  17. 17

    scikit-learnでのPCA投影と再構成

  18. 18

    scikit-learn:SVCとSGDの違いは何ですか?

  19. 19

    XGBoostError:パイプラインとscikit.learnの問題

  20. 20

    KFoldとShuffleSplit CVの違いは何ですか?

  21. 21

    Scikit-learn:preprocessing.scale()とpreprocessing.StandardScalar()

  22. 22

    conda update scikit-learn(scipyとnumpyも)

  23. 23

    get_dummies(Pandas)とOneHotEncoder(Scikit-learn)の長所と短所は何ですか?

  24. 24

    ApacheSparkとscikit_learnの間のKMeansで一貫性のない結果

  25. 25

    MacOSでのscikit-learnとのibm_boto3互換性の問題

  26. 26

    PycharmとSpyderの間のkfoldでの異なるサンプルサイズ

  27. 27

    GridsearchとKfoldのデフォルトのCVの違いは何ですか

  28. 28

    scikit-learnのpredict_probaとdecision_functionの違いは何ですか?

  29. 29

    scikit-learnのpredict_probaとdecision_functionの違いは何ですか?

ホットタグ

アーカイブ