Я использую 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 >