Почему grid_scores_much ниже, чем оценка за полный набор тренировок? (sklearn, Python, StandardScaler, GridSearchCV) - PullRequest
0 голосов
/ 13 октября 2019

Мне нужно оптимизировать гиперпараметры LinearSVC с помощью GridSearchCV и получать очень разные результаты, касающиеся оценок лучшего оценщика и оценки, когда я снова тренирую svm с наилучшим найденным параметром (см. «Оценка, переобученная с лучшим параметром»).

Код Python выглядит следующим образом:

from sklearn.svm import LinearSVC
from sklearn.preprocessing import StandardScaler
import numpy as np
from sklearn.model_selection import GridSearchCV

def tuning_hyper_params(X, y, 
                    X_test=X_test, 
                    y_test=y_test, 
                    cv=10, 
                    scoring='accuracy', 
                    c_range=np.logspace(-16,10,14, base=2), 
                    seed=7):
    seed = seed
    np.random.seed(seed)               


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

    param_grid=[{'svm__C': c_range}]      

    clf = GridSearchCV(pipeline, param_grid=param_grid, cv=cv, scoring=scoring, n_jobs=-1)
    clf.fit(X,y)          


    print('\n Best score: ',clf.best_score_)
    print('\n Best parameter: ', clf.best_params_)            


    scaler = StandardScaler()
    scaler.fit(X)
    X = scaler.transform(X)
    X_test = scaler.transform(X_test)
    y_pred = clf.predict(X_test)
    print(classification_report(y_test, y_pred))

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

    test = LinearSVC(C= clf.best_params_['svm__C'], loss='hinge')
    test.fit(X,y)
    print("score   retrained with best parameter: ", test.score(X_test, y_test))   

Результат:

Best score: 0.784
Best parameter: {'svm__C' : 0.00390625}
Best estimator score: 0.6991
score retrained with best parameter: 0.7968

Может быть, я неправильно использую StandardScaler? А может я что-то не так делаю?

Большое спасибо за любой совет

...