2017-07-20 1 views
0

Dans h2o flow, existe-t-il un moyen de garantir que les fractionnements de ma base de données ont un rapport contrôlé de classes de réponse.Échantillonnage stratifié sur les catégories de réponse dans les divisions de données de flux h2o

Par exemple, disons que je prévois de former un classificateur binaire sur une trame de données X où 0_class_ratio% des échantillons sont en classe 0 et 1_class_ratio% sont en classe 1. Je veux diviser X en grand écart de cadre X_train et X_test par les ratios 0,75 et 0,25, respectivement. Comment serais-je en mesure de garantir que X_train et X_test sont compris 0_class_ratio% d'échantillons de la catégorie 0 et 1_class_ratio% d'échantillons de la catégorie 1?

Dans le paquet scikit-learn de python je ferais quelque chose comme:

from sklearn.model_selection import StratifiedShuffleSplit 

split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=rng_seed_) 
# go thru all (split and shuffled) indices of my_data dataframe stratified by response_class values 
for train_index, test_index in split.split(my_data, my_data["response_class"]): 
    strat_train_set = my_data.loc[train_index] 
    strat_test_set = my_data.loc[test_index] 

Je suis au courant des hyper-paramètres h2osample_rate et sample_rate_per_class, mais je ne suis pas entièrement sûr de savoir comment les utiliser dans cette situation .

Répondre

0

Définissez fold_assignment sur "Stratifié".

enter image description here.

+0

Ce lien pour "fold_assignment" est légèrement meilleur (il ne fuit jamais): http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/fold_assignment.html –