我试图适应各种管道并将它们存储在字典中,但是每当我从字典中调用特定模型时,它总是返回最后一个管道。如何将管道正确存储在字典中?
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)]
答案 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