return_estimator
возвращает «кортеж» ВСЕХ установленных моделей.
Чтобы решить эту проблему, вам нужно выбрать нужную модель, сохранить ее, загрузить и затем предсказать.
Пример:
from sklearn import datasets, linear_model
from sklearn.model_selection import cross_validate
diabetes = datasets.load_diabetes()
X = diabetes.data[:150]
y = diabetes.target[:150]
lasso = linear_model.Lasso()
cv_results = cross_validate(lasso, X, y, cv=3, return_estimator=True)
rfc_fit = cv_results['estimator']
print(rfc_fit)
Выше указаны 3 модели:
(Лассо (альфа = 1,0, copy_X = True, fit_intercept = True, max_iter = 1000,
normalize = False, положительный = False, предварительный расчет = False, random_state = None,
selection = 'циклический', tol = 0,0001, warm_start = False), лассо (альфа = 1,0,
copy_X = True, fit_intercept = True, max_iter = 1000, normalize = False,
положительный = ложный, предварительный расчет = ложный, случайное состояние = нет,
selection = 'циклический', tol = 0,0001, warm_start = False), лассо (альфа = 1,0,
copy_X = True, fit_intercept = True, max_iter = 1000, normalize = False,
положительный = ложный, предварительный расчет = ложный, случайное состояние = нет,
selection = 'циклический', tol = 0.0001, warm_start = False))
Чтобы узнать, сколько моделей это содержит, сделайте следующее:
print(len(rfc_fit))
# 3
Допустим, вы хотите выбрать первую модель:
# select the first model
rfc_fit = rfc_fit[0]
# save it
from sklearn.externals import joblib
filename = os.path.join(savedir, 'final_model.joblib')
joblib.dump(rfc_fit,filename)
# load it
rfc_model2 = joblib.load(filename)
Predict
теперь работает нормально:
predicted = rfc_model2.predict(X)