Цикл Python для поиска лучших значений для SVC (C и гамма)

У меня есть набор данных X и метки y для обучения и оценки модели sklearn.SVC. Данные разбиты на X_train и X_test. Я запускаю for-loop, чтобы найти наилучшую возможную комбинацию значений (т. е. лучший результат) для двух параметров SVC: C и gamma. Я могу распечатать наивысшую оценку, но как распечатать значения C и гаммы, которые использовались для этой конкретной оценки?

for C in np.arange(0.05, 2.05, 0.05):
    for gamma in np.arange(0.001, 0.101, 0.001):
        model = SVC(kernel='rbf', gamma=gamma, C=C)
        model.fit(X_train, y_train)
        score = model.score(X_test, y_test)
        if score > best_score:
            best_score = score
print('Highest Accuracy Score: ', best_score)   

person Alex K.    schedule 27.02.2018    source источник
comment
Для этого можно использовать GridSearch.   -  person Vivek Kumar    schedule 27.02.2018


Ответы (2)


Вы можете изменить его на:

   if score > best_score:
        best_score = score
        best_C = C
        best_gamma = gamma 

Или создайте кортеж:

if score > best_score:
    best_score = score, C, gamma 
person macro_controller    schedule 27.02.2018

Хранить их?

best_C = None
best_gamma = None
for C in np.arange(0.05, 2.05, 0.05):
    for gamma in np.arange(0.001, 0.101, 0.001):
        model = SVC(kernel='rbf', gamma=gamma, C=C)
        model.fit(X_train, y_train)
        score = model.score(X_test, y_test)
        if score > best_score:
            best_score = score
            best_C = C
            best_gamma = gamma
print('Highest Accuracy Score: ', best_score)  
print(best_C)
print(best_gamma)
person Mathieu    schedule 27.02.2018