我正在使用管道将两个 sklearn 模型放入 for 循环中,并尝试将它们单独命名并稍后使用此管道进行预测,
names = ["Linear", "Elastic"]
models = [LinearRegression(),ElasticNet()]
model_fit = [x + 'fit' for x in names]
for name, model, fits in zip(names, models, model_fit):
steps = [('scaler', MinMaxScaler()),(name, model)]
pipe = Pipeline(steps)
fits = pipe.fit(x_train, y_train)
但我无法在不同的循环中预测它。
for i, model in enumerate(model_fit):
predictions = model.predict(x_test)
收到以下错误
'str' object has no attribute 'predict'
如何以不同的名称拟合和检索这两个模型?
最佳答案
您的 model_fit
变量是一个字符串数组,因此您不应在第二个 for 循环中使用它。您应该做的是将模型存储在另一个数组中并使用它。
names = ["Linear", "Elastic"]
models = [LinearRegression(),ElasticNet()]
model_fit = [x + 'fit' for x in names]
fitted_models = []
for name, model, fits in zip(names, models, model_fit):
steps = [('scaler', MinMaxScaler()),(name, model)]
pipe = Pipeline(steps)
fits = pipe.fit(x_train, y_train)
fitted_models.append(fits)
for i, model in enumerate(fitted_models):
predictions = model.predict(x_test)
关于python - 拟合for循环后如何保存sklearn模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63602975/