【问题标题】:How to select hyper parameters for SVC estimator in scikit learn?如何在 scikit learn 中为 SVC 估计器选择超参数?
【发布时间】:2015-03-14 17:39:54
【问题描述】:

我正在使用 SVC 对一些文本进行分类,并且我想运行网格搜索,因此我按照documentation 提供的示例进行操作。在示例中,他们使用带有以下参数的 SGDClassifier:

parameters = {
    'vect__max_df': (0.5, 0.75, 1.0),
    #'vect__max_features': (None, 5000, 10000, 50000),
    'vect__ngram_range': ((1, 1), (1, 2)),  # unigrams or bigrams
    #'tfidf__use_idf': (True, False),
    #'tfidf__norm': ('l1', 'l2'),
    'clf__alpha': (0.00001, 0.000001),
    'clf__penalty': ('l2', 'elasticnet'),
    #'clf__n_iter': (10, 50, 80),
}

我的问题是,我应该为 SVC 分类器、tfidf、散列向量器和 CountVectorizer 尝试什么样的参数?如果这是一个多类分类问题,我应该如何选择这个参数?

【问题讨论】:

    标签: python machine-learning nlp scikit-learn


    【解决方案1】:

    您应该阅读这些参数的含义并自行决定。

    我优化了以下内容: SVC:伽玛和 C TFIDF: max_features, max_df, min_df

    这实际上取决于您的数据和模型。如果您不知道对许多参数和许多可能的值运行非常广泛的优化以缩小范围。 这很耗时,因此您可能需要对数据进行二次抽样。

    【讨论】:

    • 感谢您的反馈,我意识到这需要时间,因为当我运行 gridsearch 时需要很长时间。我的数据只是字符串、5 个类和 3000 个实例。通过对您引用的数据进行二次采样,让我们​​说一半的实例?我用的参数对吗?
    • 对它们进行洗牌和二次抽样以说 500 并运行第一个宽参数搜索。矢量化器的参数似乎有点极端:你真的想删除 50% 的最常用词吗?我对 max_df 使用 0.99 来删除几乎每个样本中存在的单词或 ngram。至于SGDClassifier我不知道,我用不同的分类器。
    • 我正在使用 SVC,您建议我为这个任务测试哪些参数?谢谢!
    • 我之前说的 C 和 gamma
    猜你喜欢
    • 2014-02-18
    • 2016-07-30
    • 2017-07-23
    • 2020-09-25
    • 2013-06-04
    • 2021-08-17
    • 2023-01-20
    • 2017-01-05
    • 2016-04-09
    相关资源
    最近更新 更多