首页 > 解决方案 > 使用 for 循环创建不同的列表变量名称

问题描述

我希望对 3 个不同的 ML 分类器使用交叉验证,并希望在没有重复代码的情况下获得所有结果

model_01 = RandomForestClassifier(max_depth = 2, random_state = 0)
model_02 = XGBClassifier(max_depth = 2, n_estimators=200)
model_03 = LogisticRegression()
classifier= [model_01,model_02,model_03] 

for i in classifier: 
  kf = StratifiedKFold(n_splits=5, random_state=random_seed)
  cross_val_f1_score_lst = []
  cross_val_accuracy_lst = []
  cross_val_recall_lst = []
  cross_val_precision_lst = []

我不会通过 ML 代码,因为这个问题没有必要。但我想为上面给出的每个列表附加 5 个条目。有了上面建议的所有条目,我想要上面提到的所有三个不同分类器的单独列表集(列表名称,例如 cross_val_f1_score_lst_model_01/02/03 等)。下面给出了一个分类器迭代的其余相关代码。

  #mean values for all metrics
  cross_val_recall_lst.append(recall_score(target_val, validation_preds))
  cross_val_accuracy_lst.append(accuracy_score(target_val, validation_preds))
  cross_val_precision_lst.append(precision_score(target_val, validation_preds))
  cross_val_f1_score_lst.append(f1_score(target_val, validation_preds))

  print('Cross validated overall financial loss: {}'.format(np.mean(cross_val_financial_loss_lst)))
  print('Cross validated accuracy: {}'.format(np.mean(cross_val_accuracy_lst)))
  print('Cross validated recall score: {}'.format(np.mean(cross_val_recall_lst)))
  print('Cross validated precision score: {}'.format(np.mean(cross_val_precision_lst)))
  print('Cross validated f1_score: {}'.format(np.mean(cross_val_f1_score_lst)))

任何解决方案都将受到高度赞赏。如果我使用了任何不正确的术语,请随意。

标签: pythonfor-loopsyntaxiteration

解决方案


推荐阅读