使用 GridSearchCV 调整超参数
Hyperparameters tuning using GridSearchCV
我是机器学习的新手,我正在尝试预测一篇文章的主题,给定一个带标签的数据集,每个数据集都包含一篇文章中的所有单词。总共有 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 的超参数?
另外,您建议哪些超参数值得针对我的问题进行调整?
照原样,管道在 OneVsRestClassifier 中查找参数 learning_rate
,找不到(不出所料,因为模块没有这样的参数),并引发错误。由于您实际上想要 XGBClassifier 的参数 learning_rate
,因此您应该更深入一点,即:
parameters = {'clf__estimator__learning_rate': [0.1, 0.01, 0.001]}
我是机器学习的新手,我正在尝试预测一篇文章的主题,给定一个带标签的数据集,每个数据集都包含一篇文章中的所有单词。总共有 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 的超参数? 另外,您建议哪些超参数值得针对我的问题进行调整?
照原样,管道在 OneVsRestClassifier 中查找参数 learning_rate
,找不到(不出所料,因为模块没有这样的参数),并引发错误。由于您实际上想要 XGBClassifier 的参数 learning_rate
,因此您应该更深入一点,即:
parameters = {'clf__estimator__learning_rate': [0.1, 0.01, 0.001]}