使用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]}

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注