【问题标题】:Forcing sklearn cross val score to use stratified k fold?强制sklearn交叉val分数使用分层k折?
【发布时间】:2020-03-19 00:34:56
【问题描述】:

基于Sklearn Docs:

  • 是否可以强制使用StratifiedKFold
  • 我怎么知道哪个KFold被使用了?

【问题讨论】:

    标签: python scikit-learn k-fold


    【解决方案1】:

    使用这个:

     cross_val_score(estimator, X, y, cv=YOURCHOICE)
    

    例子:

    from sklearn import datasets, linear_model
    from sklearn.model_selection import cross_val_score
    diabetes = datasets.load_diabetes()
    from sklearn.model_selection import StratifiedKFold
    
    X = diabetes.data[:150]
    y = diabetes.target[:150]
    lasso = linear_model.Lasso()
    
    skf = StratifiedKFold(n_splits=2)
    results = cross_val_score(lasso, X, y, cv=skf) 
    
    

    【讨论】:

    • 你如何检查它是否是我想要的方法
    • 你不能明确地检查这一点,但它是由内部源代码保证的
    【解决方案2】:

    sklearn documentation 中写道:

    "对于int/None 输入,如果估计器是分类器并且y 是二进制或 多类,StratifiedKFold 被使用。在所有其他情况下,KFold 是 用过。”...

    如果您的模型是分类器,则只需使用整数来使用StratifiedKFold

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    猜你喜欢
    • 2013-05-03
    • 2017-01-11
    • 2019-07-23
    • 2015-12-13
    • 1970-01-01
    • 2012-05-11
    • 2017-02-07
    • 2021-03-22
    • 2018-04-25
    相关资源
    最近更新 更多