2016-05-15 12 views
4

kaggleの競争のためにsklearnのXgboost実装を使用しています。 しかし、この '警告' メッセージを取得イム:XgBoost:yの人口が最も少ないクラスはメンバーが1人しかなく、少なすぎる

$ pythonのScript1.py /home/sky/private/virtualenv15.0.1dev/myVE/local/lib/python2.7/site-packages/sklearn/cross_validation .py:516:

警告:yの少なくとも人口クラスが少なすぎる場合にのみ1メンバーを有しています。任意のクラスの最小ラベル数は、n_folds = 3より小さくできません。 stackoverflowの上の別の質問によると %(min_labels、self.n_folds))、警告)

: は「k個の== 3でStratifiedKFoldクロスバリデーションを行うことができるようにあなたは、クラスごとに少なくとも3つのサンプルを持っていることを確認してください(これは、分類のためにGridSearchCVによって使用されるデフォルトのCVだと思います)。

、よく、私はクラスごとに少なくとも3つのサンプルを持っていけません。

は、だから私の質問は以下のとおりです。

a)の選択肢は何ですか?

b)は、なぜ私は、クロス検証を使用することはできませんか?

C)私が代わりに何を使用することができますか?

... 
param_test1 = { 
    'max_depth': range(3, 10, 2), 
    'min_child_weight': range(1, 6, 2) 
} 

grid_search = GridSearchCV(

estimator= 
XGBClassifier(
    learning_rate=0.1, 
    n_estimators=3000, 
    max_depth=15, 
    min_child_weight=1, 
    gamma=0, 
    subsample=0.8, 
    colsample_bytree=0.8, 
    objective='multi:softmax', 
    nthread=42, 
    scale_pos_weight=1, 
    seed=27), 

    param_grid=param_test1, scoring='roc_auc', n_jobs=42, iid=False, cv=None, verbose=1) 
... 

grid_search.fit(train_x, place_id) 

参考文献:

One-shot learning with scikit-learn

Using a support vector classifier with polynomial kernel in scikit-learn

答えて

1

一つだけのサンプルでターゲット/クラスを持っている場合は、すべてのモデルのための数が少なすぎるthatsの。ほとんどのモデルがバランスの取れたセットでよりよく動作するので、可能な限りバランスのとれた別のデータセットを取得することができます。

あなたが別のデータセットを持つことができない場合は、あなたが持っているものでプレイする必要があります。私は孤独なターゲットを持つサンプルを削除することをお勧めします。だからあなたはその目標をカバーしていないモデルを持っています。それが要件に合わない場合は、新しいデータセットが必要です。

+0

Kaggleの競争のため、新しいデータセットを取得できません。 – KenobiShan

+0

だから私はちょうどその孤独なターゲットを持っているサンプルを削除します...私はcv = 3を使用する場合..どのような場合、私はサンプルの量<3、右のターゲット/クラスを削除しますか? – KenobiShan

+1

CVを使用しているので、この簡単な分析を行う必要があります(各ターゲットにサンプルがいくつあるかチェックしてください)。ベクトル/コラムのターゲットを数えたり、混乱マトリクスを使用すれば、これらの数値を持つことができます。最後に、データセットの元のバランスを維持する層別K倍CVを使用できます。これはCVの問題を解決しますが、あなたのモデルを傷つける非常に歪んだ/アンバランスなセットがまだあるかもしれません。ここでSKlearn機能は、層状K倍のCVのためである:[リンク](http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.StratifiedKFold.html)ターゲットを分析する – Rabbit

関連する問題