在 Python scikit learn 中为 12 个随机森林创建循环
Posted
技术标签:
【中文标题】在 Python scikit learn 中为 12 个随机森林创建循环【英文标题】:Create loop for 12 randomforests in Python scikit learn 【发布时间】:2021-10-19 21:25:16 【问题描述】:我有十二个不同的数据集,旨在创建十二个不同的随机森林模型。我想创建一个 for 循环,但我不知道如何存储每个模型并根据相关数据集命名每个模型(代码如下所示)。我正处于使用 Scikit learn 学习 python 和机器学习的学习阶段。欢迎任何cmets或建议。
data = [df_AFC,df_AF,df_ESF,df_EXF,df_F,df_GF,df_KRFC,df_KRF,df_MF,df_PF,df_SFC,df_SF]
name = ['AFC','AF','ESF','EXF','F','GF','KRFC','KRF','MF','PF','SFC','SF']
#fix_random_state=42
result = []
for i,j in zip(data,name):
x = i.drop('class', axis=1)
y = i['class']
# rus = RandomUnderSampler(sampling_strategy="not minority") # String
rus = RandomUnderSampler(sampling_strategy=1, random_state=41) # Numerical value
x_res, y_res = rus.fit_resample(x, y)
#Remove low variance features
#replace with x_res, y_res from now on
remove_low_variance(x_res, threshold=0.1)
#Data splitting
x_train, x_test, y_train, y_test = train_test_split(x_res, y_res, test_size=0.2, random_state=42)
x_train.shape, x_test.shape
#Model building
model = RandomForestClassifier(n_estimators=500, random_state=42)
model.fit(x_train, y_train)
result.append(model_i)
预期产出
y_train_pred_AFC = model_AFC.predict(unknown)
y_train_pred_AF = model_AF.predict(unknown)
...
【问题讨论】:
【参考方案1】:我建议将模型存储在这样的字典中:
data_sets = [df_AFC,df_AF,df_ESF,df_EXF,df_F,df_GF,df_KRFC,df_KRF,df_MF,df_PF,df_SFC,df_SF]
names = ['AFC','AF','ESF','EXF','F','GF','KRFC','KRF','MF','PF','SFC','SF']
#fix_random_state=42
models =
for data, name in zip(data_sets, names):
# <<< REMOVED CODE >>>
#Model building
model = RandomForestClassifier(n_estimators=500, random_state=42)
model.fit(x_train, y_train)
models[name] = model
然后你可以调用训练好的模型在另一个循环中进行预测,如下所示:
predictions =
for name, model in models.items():
predictions[name] = model.predict(test_data)
或一一:
y_train_pred_AFC = models['AFC'].predict(test_data)
#...
【讨论】:
以上是关于在 Python scikit learn 中为 12 个随机森林创建循环的主要内容,如果未能解决你的问题,请参考以下文章
如何在 scikit-learn 中为 OneVsRestClassifier 设置类权重?
如何在 scikit-learn 的分类问题中为 F1 分数做 GridSearchCV?
scikit-learn 中为文本分类排列文本数据的标准方法是啥?
如何在 scikit learn 中为 cross_validate 制作自定义评分指标?