python - 拟合for循环后如何保存sklearn模型

标签 python pandas scikit-learn

我正在使用管道将两个 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/

相关文章:

python - Matplotlib Boxplot 和 pandas 数据框数据类型

python - 如何准备字符串以使用不明确的数组进行格式化?

python - 从 vim 中测试单个函数

python - 如何在 Python 中根据列值聚合一些行

python - Pandas 比较两列并根据条件获得具有三个不同推理的另一列

python - ValueError:未知标签类型: 'continuous'

Python 子进程.CalledProcessError : returned non-zero exit status 2

python - 如何更改包含字符串的日期时间格式列

numpy - 将 numpy 稀疏矩阵保存到文件中

python - StandardScaler 如何不破坏数据完整性?