使用GridSearchCV进行超参数调整

时间:2020-04-07 07:39:24

标签: python machine-learning scikit-learn xgbclassifier

我是机器学习的新手,我试图根据给定的标记数据集来预测文章的主题,每个数据集包含一篇文章中的所有单词。总共有11个不同的主题,每篇文章只有一个主题。 我已经建立了流程管道:

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 个答案:

答案 0 :(得分:2)

照原样,管道在OneVsRestClassifier中寻找参数learning_rate,找不到一个(不奇怪,因为模块没有这样的参数),并引发错误。由于您实际上需要XGBClassifier的参数learning_rate,因此您应该更深入一点,即:

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