0

K 分割検証を使用せずに、sklearn でハイパーパラメーターをグリッド検索する方法を探しています。つまり、グリッドを特定のデータセット (以下の例では X1、y1) でトレーニングし、特定のホールドアウト データセット (以下の例では X2、y2) で検証する必要があります。

X1,y2 = トレーニング データ
X2,y2 = 検証データ

clf_ = SVC(kernel='rbf',cache_size=1000)
Cs = [1,10.0,50,100.0,]
Gammas = [ 0.4,0.42,0.44,0.46,0.48,0.5,0.52,0.54,0.56]
clf = GridSearchCV(clf_,dict(C=Cs,gamma=Gammas),
                 cv=???, # validate on X2,y2
                 n_jobs=8,verbose=10)
clf.fit(X1, y1)
4

2 に答える 2

0
clf = GridSearchCV(clf_,dict(C=Cs,gamma=Gammas),cv=???, # validate on X2,y2,n_jobs=8,verbose=10)
  1. n_jobs>1 は意味がありません。n_jobs=-1 の場合、処理がマシン上のすべてのコアを使用することを意味します。1 の場合、1 つのコアのみが使用されます。

  2. cv =5 の場合、反復ごとに 5 つの相互検証が実行されます。

  3. あなたの場合、反復の総数は9(Cのサイズ)* 5(ガンマのサイズ)* 5(CVの値)になります

    1. 相互検証を使用している場合、モデルを再チェックするためにデータを保持することは意味がありません。パフォーマンスに自信がない場合は、cv を増やして適合度を高めることができます。

これは、特に SVM の場合、非常に時間がかかります。むしろ、モデルがランダムに選択する反復回数を指定できる RandomSearchCV を使用することをお勧めします。

于 2016-07-04T09:12:45.237 に答える