Python 安装for循环后如何保存sklearn模型

Python 安装for循环后如何保存sklearn模型,python,pandas,scikit-learn,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): step

我将两个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\u 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)
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)

name=[Linear,Elastic]和model_fit=[x+'fit'表示名称中的x],这两行导致model_fit成为字符串列表。也许你想用模型列表来代替。你能用上面的例子解释一下吗?你的意思是指我,枚举模型中的模型吗?模型:不,因为这不考虑我的管道。我试图给每一种管道起一个新的名字,如果我理解正确,model_fit就是管道的名字。名字无法预测,因为它不是模型。因此,您需要将拟合模型存储在另一个数组中,并在第二个循环中使用它们。name=[Linear,Elastic]和model_fit=[x+'fit'表示名称中的x],这两行导致model_fit成为字符串列表。也许你想用模型列表来代替。你能用上面的例子解释一下吗?你的意思是指我,枚举模型中的模型吗?模型:不,因为这不考虑我的管道。我试图给每一种管道起一个新的名字,如果我理解正确,model_fit就是管道的名字。名字无法预测,因为它不是模型。因此,您需要将安装的模型存储在另一个阵列中,并在第二个循环中使用它们。完美!谢谢,我错过了一些完美的东西!谢谢,我错过了一些东西