【发布时间】:2020-12-15 13:39:40
【问题描述】:
我正在使用管道在 for 循环中拟合两个 sklearn 模型,并尝试将它们分开命名并稍后使用此管道进行预测,
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'
如何以不同的名称拟合和检索这两个模型?
【问题讨论】:
-
names = ["Linear", "Elastic"]和model_fit = [x + 'fit' for x in names],这两行导致model_fit是一个字符串列表。也许您想改用models列表。 -
你能用上面的例子解释一下吗
-
你是说
for i, model in enumerate(models): -
不,因为这不能照顾我的管道。我正在尝试给每个管道类型一个新名称
-
如果我理解正确,
model_fit是管道的名称。名称无法预测,因为它不是模型。因此,您需要将拟合好的模型存储在另一个数组中,并在第二个循环中使用它们。
标签: python pandas scikit-learn