【问题标题】:Alternative to Using Repeated Stratified K Fold with Multiple Outputs?替代使用具有多个输出的重复分层 K 折叠?
【发布时间】:2022-11-28 19:31:57
【问题描述】:

我正在探索最适合我的模型的功能数量。我知道重复分层 K 折叠需要 1 个一维数组输出,而我正在尝试评估具有多个输出的输出的特征数量。有没有办法将 Repeated Stratified K Fold 与多个输出一起使用?或者是否有替代方案来完成我需要的?

from sklearn import datasets
from numpy import mean, std
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_score, RepeatedStratifiedKFold, KFold
from sklearn.feature_selection import RFE
from sklearn.tree import DecisionTreeClassifier
from sklearn.pipeline import Pipeline
from matplotlib import pyplot
def get_models():
   models = dict()
   for i in range(4,20):
      rfe = RFE(estimator = DecisionTreeClassifier(), n_features_to_select = i)
      model = DecisionTreeClassifier()
      models[str(i)] = Pipeline(steps=[('s', rfe), ('m', model)])
   return models
from sklearn.utils.multiclass import type_of_target
x = imp_data.iloc[:,:34]
y = imp_data.iloc[:,39]
model = DecisionTreeClassifier()
def evaluate_model(model,x,y):
   cv = RepeatedStratifiedKFold(n_splits=5, n_repeats=3, random_state=0)
   scores = cross_val_score(model, x, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score = 'raise')
return scores
models = get_models()
results, names = list(), list()
for name,model in models.items():
   scores = evaluate_model(model,x,y)
   results.append(scores)
   names.append(name)
   print('>%s %.3f (%.3f)' % (name, mean(scores), std(scores)))

【问题讨论】:

    标签: python feature-selection k-fold


    【解决方案1】:

    据我所知,您可以使用 cross_validate() 作为具有多个输出的 StratifiedKFold 的替代方法。您可以根据自己的喜好使用 StratifiedKFold 和评分指标来定义交叉验证技术。您可以查看下面的链接了解更多详情!

    https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_validate.html

    【讨论】:

      猜你喜欢
      • 2017-12-09
      • 2021-01-17
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 2021-02-17
      • 2015-12-13
      • 2017-06-04
      • 2020-03-19
      相关资源
      最近更新 更多