0

GridSearchCV で SVM のハイパーパラメータを最適化したい。しかし、最良の推定器のスコアは、最良のパラメーターで svm を実行したときのスコアとは大きく異なります。

#### Hyperparameter search with GridSearchCV###

pipeline = Pipeline([
        ("scaler", StandardScaler()), 
        ("svm", LinearSVC(loss='hinge'))])                      

param_grid=[{'svm__C': c_range}]      

clf = GridSearchCV(pipeline, param_grid=param_grid, cv=5, scoring='accuracy')
clf.fit(X,y)          
print('\n Best score: ',clf.best_score_)


#### scale train and test data  ###

sc = StandardScaler()
sc.fit(X)
X = scaler.transform(X)
X_test = sc.transform(X_test)


###### test best estimator with test data ###################

print("Best estimator score: ", clf.best_estimator_.score(X_test, y_test))


##### run SVM with the best found parameter ##### 

svc = LinearSVC(C=clf.best_params_['svm_C'])
svc.fit(X,y)
print("score with best parameter: ", svc.score(X_test,y_test))

結果は次のとおりです。

最高のスコア: 0.784

最高の推定スコア: 0.6991

最良のパラメーターのスコア: 0.7968

最良の推定器と svm のスコアが異なる理由がわかりません。これらの結果のうち、正しいテスト精度はどれですか? 0.6991 の Best estimator のスコアがこれほど悪いのはなぜですか? 私は何か間違ったことをした?

4

1 に答える 1