Общий способ хранения моделей в словаре:
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
, делая это:
y_predictions = models[some_var][1].predict(X_test)