Pipeline hyperparameter tunning with optuna

Viewed 17

I'm trying to find the best parameter for the lasso polynomial especially : the degree of the polynomial, alpha and max_iteration, using OPTUNA, however i'm getting this error message :

ValueError: Invalid parameter degree for estimator Pipeline(steps=[('poly', PolynomialFeatures()), ('linear', Lasso())]). Check the list of available parameters with `estimator.get_params().keys()`.

I used K-cross-validation and this is the code :

model = Pipeline([('poly', PolynomialFeatures()),('linear',Lasso())])```


def run(trial): scores =[] for fold in range(5): param_grid = { "degree": trial.suggest_int("degree", 2, 5), 'alpha': trial.suggest_float("alpha", 0.01, 0.3), 'max_iter':trial.suggest_int('max_iter', 1000, 4000)

    }

    xtrain = df[df.kfold != fold].reset_index(drop=True)
    xvalid = df[df.kfold == fold].reset_index(drop=True)

    ytrain = xtrain.target
    yvalid = xvalid.target

    xtrain = xtrain[useful_features]
    xvalid = xvalid[useful_features]
    
    model.set_params(**param_grid) 

    model.fit(xtrain, ytrain)
    preds_valid = model.predict(xvalid)
    rmse =  mean_squared_error(yvalid, preds_valid, squared=False)
    scores.append(rmse)
return np.mean(scores)
study = optuna.create_study(direction="minimize")
study.optimize(run, n_trials=100)
0 Answers
Related