如何在字典中存储sklearn管道?

时间:2019-10-05 23:49:05

标签: python scikit-learn

我试图适应各种管道并将它们存储在字典中,但是每当我从字典中调用特定模型时,它总是返回最后一个管道。如何将管道正确存储在字典中?

for var in vars:

    X = X_train[X_train.columns[X_train.columns.str.contains(var)]]
    y = Y_train[var] 

    pipe = Pipeline([('scaler', scaler), ('clf', classifier)])
    models[var] = [X.columns,pipe.fit(X,y)]

1 个答案:

答案 0 :(得分:0)

在字典中存储模型的一般方法:

__len__()

您的代码:

from sklearn.linear_model import LinearRegression from sklearn import svm X = [some features] y = [some labels] models_dictionary = {} clf_1 = LinearRegression() clf_2 = svm.SVR() models_dictionary["Linear_Regression"] = clf_1 models_dictionary["Support_Vector _Machine"] = clf_2 # training all models: for model in models_dictionary: models_dictionay[model].fit(X, y) 是一个就位功能,这就是您的问题出处。

代替此行:

pipe.fit(X,y)

使用此:

models[var] = [X.columns,pipe.fit(X,y)]

因为pipe.fit(X,y) models[var] = [X.columns,pipe] 不返回模型,所以它只适合存储在pipe.fit(X,y)中的管道。

然后,您将可以使用任何管道直接从pipe预测值,做到这一点:

models