【问题标题】:Hyperparameters tuning using GridSearchCV使用 GridSearchCV 调整超参数
【发布时间】:2020-04-07 07:39:24
【问题描述】:

我是机器学习的新手,我正在尝试在给定标签数据集的情况下预测一篇文章的主题,每个数据集都包含一篇文章中的所有单词。共有 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 的超参数? 另外,您建议哪些超参数值得针对我的问题进行调整?

【问题讨论】:

    标签: python machine-learning scikit-learn xgbclassifier


    【解决方案1】:

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

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

    【讨论】:

    • 现在我觉得我很傻哈哈。是否有任何特定的超参数值得您针对我的问题进行调整?
    • @SuShiS 不是 - 这是一个标准的混淆点,并且文档在这方面相当模糊;)
    猜你喜欢
    • 2021-10-12
    • 2021-08-11
    • 2017-11-28
    • 2021-03-29
    • 2016-05-11
    • 2023-03-05
    • 1970-01-01
    • 2020-09-12
    • 2018-02-02
    相关资源
    最近更新 更多