Точность и отзыв в отчете о классификации SVM отличаются от значений, указанных в «cv_results». Почему? - PullRequest
0 голосов
/ 13 октября 2019

Я использую SVM для бинарной классификации.

Результаты, показанные в отчете о классификации, отличаются от тех, которые я получаю из функции cv_results_.

Я смотрю на значения под названием mean_test_precision, mean_test_recall и mean_test_f1 в строке 8 выходных данных (строка наилучшего параметра с C = 4).

Чего мне не хватает?

X_train, X_test, y_train, y_test = train_test_split(X_data, y_data, test_size = 0.20, random_state = 200)

tuned_parameters = [{'kernel': ['linear'], 'C': [2**(-5), 2**(-4), 2**(-3), 2**(-2), 2**(-1), 2**(0), 2**(1), 2**(1.5), 2**(2), 2**(2.5), 2**(3), 2**(3.5), 2**(4), 2**(4.5), 2**(5), 2**(5.5), 2**(6), 2**(7), 2**(8), 2**(9), 2**(11), 2**(13), 2**(15)]}]

scores = ['precision', 'recall', 'f1']

clf = GridSearchCV(SVC(), tuned_parameters, cv=5, refit='recall', error_score=0, n_jobs=-1, scoring=scores, return_train_score=False)

clf.fit(X_train, y_train)

print("Best parameters set found on development set:")

print(clf.best_params_)
print("Grid scores on development set:")


print("Detailed classification report:")
print("The model is trained on the full development set.")
print("The scores are computed on the full evaluation set.")
y_true, y_pred = y_test, clf.predict(X_test)
print(classification_report(y_true, y_pred))

print(y_pred)
print(y_true)

results = pd.DataFrame(clf.cv_results_)
pd.set_option('display.max_columns', 500)
results.round(3).head


Best parameters set found on development set:

{'C': 4, 'kernel': 'linear'}

Grid scores on development set:


Detailed classification report:

The model is trained on the full development set.
The scores are computed on the full evaluation set.

              precision    recall  f1-score   support

           0       0.78      0.74      0.76        19
           1       0.67      0.71      0.69        14

   micro avg       0.73      0.73      0.73        33
   macro avg       0.72      0.73      0.72        33
weighted avg       0.73      0.73      0.73        33


[1 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0]
[1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0]

И это значения, которые я получаю изcv_results_:

    mean_fit_time  std_fit_time  mean_score_time  std_score_time  param_C  \
0           0.004         0.001            0.016           0.010  0.03125   
1           0.008         0.002            0.028           0.009   0.0625   
2           0.007         0.001            0.010           0.002    0.125   
3           0.006         0.001            0.012           0.008     0.25   
4           0.005         0.000            0.011           0.004      0.5   
5           0.005         0.001            0.008           0.002        1   
6           0.010         0.010            0.009           0.002        2   
7           0.008         0.004            0.009           0.003  2.82843   
8           0.005         0.000            0.012           0.006        4   
9           0.007         0.004            0.010           0.007  5.65685   
10          0.007         0.004            0.008           0.001        8   
11          0.007         0.003            0.009           0.002  11.3137   
12          0.007         0.002            0.007           0.001       16   
13          0.005         0.001            0.009           0.002  22.6274   
14          0.006         0.001            0.007           0.001       32   
15          0.007         0.002            0.008           0.002  45.2548   
16          0.007         0.003            0.009           0.004       64   
17          0.005         0.001            0.010           0.004      128   
18          0.006         0.001            0.013           0.005      256   
19          0.005         0.001            0.009           0.003      512   
20          0.009         0.004            0.010           0.004     2048   
21          0.007         0.003            0.009           0.002     8192   
22          0.007         0.001            0.009           0.003    32768   

   param_kernel                                         params  \
0        linear             {'C': 0.03125, 'kernel': 'linear'}   
1        linear              {'C': 0.0625, 'kernel': 'linear'}   
2        linear               {'C': 0.125, 'kernel': 'linear'}   
3        linear                {'C': 0.25, 'kernel': 'linear'}   
4        linear                 {'C': 0.5, 'kernel': 'linear'}   
5        linear                   {'C': 1, 'kernel': 'linear'}   
6        linear                   {'C': 2, 'kernel': 'linear'}   
7        linear  {'C': 2.8284271247461903, 'kernel': 'linear'}   
8        linear                   {'C': 4, 'kernel': 'linear'}   
9        linear   {'C': 5.656854249492381, 'kernel': 'linear'}   
10       linear                   {'C': 8, 'kernel': 'linear'}   
11       linear  {'C': 11.313708498984761, 'kernel': 'linear'}   
12       linear                  {'C': 16, 'kernel': 'linear'}   
13       linear  {'C': 22.627416997969522, 'kernel': 'linear'}   
14       linear                  {'C': 32, 'kernel': 'linear'}   
15       linear  {'C': 45.254833995939045, 'kernel': 'linear'}   
16       linear                  {'C': 64, 'kernel': 'linear'}   
17       linear                 {'C': 128, 'kernel': 'linear'}   
18       linear                 {'C': 256, 'kernel': 'linear'}   
19       linear                 {'C': 512, 'kernel': 'linear'}   
20       linear                {'C': 2048, 'kernel': 'linear'}   
21       linear                {'C': 8192, 'kernel': 'linear'}   
22       linear               {'C': 32768, 'kernel': 'linear'}   

...

    split3_test_precision  split4_test_precision  mean_test_precision  \
0                    0.00                    0.0                0.000   
1                    1.00                    0.0                0.195   
2                    1.00                    0.0                0.703   
3                    0.50                    0.0                0.572   
4                    0.25                    0.0                0.507   
5                    0.25                    1.0                0.698   
6                    0.50                    1.0                0.680   
7                    0.60                    1.0                0.675   
8                    0.80                    1.0                0.704   
9                    1.00                    1.0                0.743   
10                   1.00                    1.0                0.743   
11                   1.00                    1.0                0.743   
12                   1.00                    1.0                0.743   
13                   1.00                    1.0                0.743   
14                   1.00                    1.0                0.743   
15                   1.00                    1.0                0.743   
16                   1.00                    1.0                0.743   
17                   1.00                    1.0                0.743   
18                   1.00                    1.0                0.743   
19                   1.00                    1.0                0.743   
20                   1.00                    1.0                0.743   
21                   1.00                    1.0                0.743   
22                   1.00                    1.0                0.743   

    std_test_precision  rank_test_precision  split0_test_recall  \
0                0.000                   23               0.000   
1                0.396                   22               0.000   
2                0.397                   16               0.250   
3                0.388                   20               0.500   
4                0.366                   21               0.625   
5                0.305                   17               0.500   
6                0.217                   18               0.625   
7                0.193                   19               0.625   
8                0.177                   15               0.500   
9                0.212                    1               0.500   
10               0.212                    1               0.500   
11               0.212                    1               0.500   
12               0.212                    1               0.500   
13               0.212                    1               0.500   
14               0.212                    1               0.500   
15               0.212                    1               0.500   
16               0.212                    1               0.500   
17               0.212                    1               0.500   
18               0.212                    1               0.500   
19               0.212                    1               0.500   
20               0.212                    1               0.500   
21               0.212                    1               0.500   
22               0.212                    1               0.500   

...
    split4_test_recall  mean_test_recall  std_test_recall  rank_test_recall  \
0                0.000             0.000            0.000                23   
1                0.000             0.028            0.057                22   
2                0.000             0.134            0.080                21   
3                0.000             0.242            0.192                20   
4                0.000             0.320            0.221                19   
5                0.143             0.349            0.177                18   
6                0.143             0.378            0.190                17   
7                0.143             0.406            0.184                16   
8                0.286             0.435            0.140                 1   
9                0.286             0.435            0.140                 1   
10               0.286             0.435            0.140                 1   
11               0.286             0.435            0.140                 1   
12               0.286             0.435            0.140                 1   
13               0.286             0.435            0.140                 1   
14               0.286             0.435            0.140                 1   
15               0.286             0.435            0.140                 1   
16               0.286             0.435            0.140                 1   
17               0.286             0.435            0.140                 1   
18               0.286             0.435            0.140                 1   
19               0.286             0.435            0.140                 1   
20               0.286             0.435            0.140                 1   
21               0.286             0.435            0.140                 1   
22               0.286             0.435            0.140                 1   

    split4_test_f1  mean_test_f1  std_test_f1  rank_test_f1  
0            0.000         0.000        0.000            23  
1            0.000         0.049        0.099            22  
2            0.000         0.223        0.129            21  
3            0.000         0.338        0.257            20  
4            0.000         0.385        0.263            19  
5            0.250         0.436        0.203            18  
6            0.250         0.453        0.183            17  
7            0.250         0.470        0.165            16  
8            0.444         0.517        0.119            15  
9            0.444         0.529        0.135             1  
10           0.444         0.529        0.135             1  
11           0.444         0.529        0.135             1  
12           0.444         0.529        0.135             1  
13           0.444         0.529        0.135             1  
14           0.444         0.529        0.135             1  
15           0.444         0.529        0.135             1  
16           0.444         0.529        0.135             1  
17           0.444         0.529        0.135             1  
18           0.444         0.529        0.135             1  
19           0.444         0.529        0.135             1  
20           0.444         0.529        0.135             1  
21           0.444         0.529        0.135             1  
22           0.444         0.529        0.135             1  >
...