Настройка гиперпараметров с помощью GridSearchCV - PullRequest
0 голосов
/ 07 апреля 2020

Я новичок в машинном обучении и пытаюсь предсказать топику c статьи, учитывая помеченные наборы данных, каждый из которых содержит все слова в одной статье. Всего есть 11 различных тем, и каждая статья имеет только одну топи c. Я построил конвейер процесса:

classifier = Pipeline([
    ('vectorizer', CountVectorizer()),
    ('tfidf', TfidfTransformer()),
    ('clf', OneVsRestClassifier(XGBClassifier(objective="multi:softmax", num_class=11), n_jobs=-1)),
])

Я пытаюсь реализовать GridsearchCV, чтобы найти лучшие гиперпараметры:

parameters = {'vectorizer__ngram_range': [(1, 1), (1, 2),(2,2)],
               'tfidf__use_idf': (True, False)}
gs_clf_svm = GridSearchCV(classifier, parameters, n_jobs=-1, cv=10, scoring='f1_micro')
gs_clf_svm = gs_clf_svm.fit(X, Y)

Это прекрасно работает, однако, как мне настроить гиперпараметры XGBClassifier? Я попытался использовать нотацию:

parameters = {'clf__learning_rate': [0.1, 0.01, 0.001]}

Это не работает, потому что GridSearchCV ищет гиперпараметры OneVsRestClassifier. Как на самом деле настроить гиперпараметры XGBClassifier? Кроме того, какие гиперпараметры вы предлагаете настроить для моей проблемы?

1 Ответ

1 голос
/ 07 апреля 2020

Как есть, конвейер ищет параметр learning_rate в OneVsRestClassifier, не может его найти (что неудивительно, поскольку модуль не имеет такого параметра) и выдает ошибку. Поскольку вы действительно хотите параметр learning_rate XGBClassifier, вам следует go уровень глубже, то есть:

parameters = {'clf__estimator__learning_rate': [0.1, 0.01, 0.001]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...