【问题标题】:is it possible to set the splitting strategy for GridSearchCv?是否可以为 GridSearchCv 设置拆分策略?
【发布时间】:2022-01-13 13:27:23
【问题描述】:

我正在通过 GridSearchCv 优化模型的超参数。而且由于我正在处理的数据非常不平衡,我需要“选择”算法拆分训练集/测试集的方式,以确保代表性不足的点在两个集中。

通过阅读 scikit-learn 的文档,我知道可以为 GridSearch 设置拆分策略,但我不确定如何或是否是这种情况。

如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

    标签: scikit-learn hyperparameters gridsearchcv


    【解决方案1】:

    是的,将GridSearchCV 作为cv 传递给StratifiedKFold 对象。

    from sklearn.model_selection import StratifiedKFold
    from sklearn import svm, datasets
    from sklearn.model_selection import GridSearchCV
    
    iris = datasets.load_iris()
    parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
    svc = svm.SVC()
    skf = StratifiedKFold(n_splits=5)
    
    clf = GridSearchCV(svc, parameters, cv = skf)
    clf.fit(iris.data, iris.target)
    

    【讨论】:

      【解决方案2】:

      默认情况下,如果您使用 GridSearchCV 训练分类模型,则拆分数据集的默认方法是 StratifiedKFold,它负责根据目标变量平衡数据集。

      如果您的数据集由于某些其他原因(不是目标变量)不平衡,您可以选择其他标准来执行拆分。仔细阅读GridSearchCV的文档,选择合适的CV splitter

      model selection 的 scikit-learn 文档中,您可以使用许多拆分器类。或者您可以根据您的标准定义自己的拆分器类,但这会更困难。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-17
        • 2020-04-15
        • 1970-01-01
        • 2018-07-17
        • 1970-01-01
        • 2014-11-26
        • 2015-11-14
        • 2020-05-18
        相关资源
        最近更新 更多