从 JSON 加载 Scikit-Learn 管道步骤
Loading Scikit-Learn Pipeline Steps from JSON
我是Python和ML的新手,所以请多多包涵。
我正在尝试根据 JSON 文件中的参数以编程方式生成 scikit-learn 管道步骤。
参数如下:
{
"scaler": ["STAN", "MINMAX", "MAXABS", "ROBUST", "PT"],
"imbalance": ["SMOTE", "RUS", "SMOTEENN"],
"classifier": ["SVM", "RF", "GBC"]
}
我试图遍历每个列表,从缩放器开始,并在每次迭代中添加流水线步骤。
目标是为每种可能的组合提供一个管道。
以下循环将为我提供一些输出:
complete_pipelines = []
pipeline_steps = []
for scaler in scalerList:
pipeline_steps.append(scaler)
for imbalancer in imbalancerList:
pipeline_steps.append(imbalancer)
for classifier in classifierList:
pipeline_steps.append(classifier)
if (len(pipeline_steps) == 3):
complete_pipelines.append(pipeline_steps)
pipeline_steps = []
pipeline_steps.append(scaler)
pipeline_steps.append(imbalancer)
我用上述方法得到的是:
[
['STAN', 'SMOTE', 'SVM'],
['STAN', 'SMOTE', 'RF'],
['STAN', 'SMOTE', 'GBC']
]
这是一个开始,但我正在寻找的是:
[
[“STAN”, “SMOTE”, “SVM”]
[“STAN”, “SMOTE”, “RF”]
[“STAN”, “SMOTE”, “GBC”]
[“STAN”, “RUS”, “SVM”]
[“STAN”, “RUS”, “RF”]
[“STAN”, “RUS”, “GBC”]
[“STAN”, “SMOTEENN”, “SVM”]
[“STAN”, “SMOTEENN”, “RF”]
[“STAN”, “SMOTEENN”, “GBC”]
[“MINMAX”, “SMOTE”, “SVM”]
[“MINMAX”, “SMOTE”, “RF”]
[“MINMAX”, “SMOTE”, “GBC”]
.
.
.
[“PT”, “SMOTEENN”, “SVM”]
[“PT”, “SMOTEENN”, “RF”]
[“PT”, “SMOTEENN”, “GBC”]
]
生成这些列表后,我将浏览每个列表并相应地设置管道。
但是只是让这个工作已经难倒了我......
如果有任何关于如何实现这样的循环的指示,或者是否有任何函数可以创建已经“内置”的这样的集合,我将不胜感激。
谢谢
史蒂夫
可能是这样的
complete_pipelines = []
for scaler in scalerList:
for imbalancer in imbalancerList:
for classifier in classifierList:
complete_pipelines.append([scaler,imbalancer,classifier ])
print(complete_pipelines)
我是Python和ML的新手,所以请多多包涵。
我正在尝试根据 JSON 文件中的参数以编程方式生成 scikit-learn 管道步骤。
参数如下:
{
"scaler": ["STAN", "MINMAX", "MAXABS", "ROBUST", "PT"],
"imbalance": ["SMOTE", "RUS", "SMOTEENN"],
"classifier": ["SVM", "RF", "GBC"]
}
我试图遍历每个列表,从缩放器开始,并在每次迭代中添加流水线步骤。 目标是为每种可能的组合提供一个管道。
以下循环将为我提供一些输出:
complete_pipelines = []
pipeline_steps = []
for scaler in scalerList:
pipeline_steps.append(scaler)
for imbalancer in imbalancerList:
pipeline_steps.append(imbalancer)
for classifier in classifierList:
pipeline_steps.append(classifier)
if (len(pipeline_steps) == 3):
complete_pipelines.append(pipeline_steps)
pipeline_steps = []
pipeline_steps.append(scaler)
pipeline_steps.append(imbalancer)
我用上述方法得到的是:
[
['STAN', 'SMOTE', 'SVM'],
['STAN', 'SMOTE', 'RF'],
['STAN', 'SMOTE', 'GBC']
]
这是一个开始,但我正在寻找的是:
[
[“STAN”, “SMOTE”, “SVM”]
[“STAN”, “SMOTE”, “RF”]
[“STAN”, “SMOTE”, “GBC”]
[“STAN”, “RUS”, “SVM”]
[“STAN”, “RUS”, “RF”]
[“STAN”, “RUS”, “GBC”]
[“STAN”, “SMOTEENN”, “SVM”]
[“STAN”, “SMOTEENN”, “RF”]
[“STAN”, “SMOTEENN”, “GBC”]
[“MINMAX”, “SMOTE”, “SVM”]
[“MINMAX”, “SMOTE”, “RF”]
[“MINMAX”, “SMOTE”, “GBC”]
.
.
.
[“PT”, “SMOTEENN”, “SVM”]
[“PT”, “SMOTEENN”, “RF”]
[“PT”, “SMOTEENN”, “GBC”]
]
生成这些列表后,我将浏览每个列表并相应地设置管道。 但是只是让这个工作已经难倒了我......
如果有任何关于如何实现这样的循环的指示,或者是否有任何函数可以创建已经“内置”的这样的集合,我将不胜感激。
谢谢 史蒂夫
可能是这样的
complete_pipelines = []
for scaler in scalerList:
for imbalancer in imbalancerList:
for classifier in classifierList:
complete_pipelines.append([scaler,imbalancer,classifier ])
print(complete_pipelines)