es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obteniendo un error al intentar ajustar a GridSearchCV.

Estoy intentando ajustar un modelo de regresión de ridge a mis datos utilizando una tubería y GridSearchCV.

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline

X = transformed_data.iloc[:, :-1]
y = transformed_data['class']

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)

params = {}
params['ridge__alpha'] = np.arange(0, 100, 1).tolist()

t = [('labelenc', LabelEncoder(), [0]),
     ('stand', StandardScaler(), [1, 2, 3, 4, 5, 6]),
     ('poly', PolynomialFeatures(degree=2), [1, 2, 3, 4, 5, 6])]
transformer = ColumnTransformer(transformers=t)

pipe = Pipeline(steps=[('t', transformer), ('m', Ridge())])

grid_ridge2_r2 = GridSearchCV(pipe, params, cv=10, scoring='r2', n_jobs=-1)
results_ridge2_r2 = grid_ridge2_r2.fit(X_train, y_train)

grid_ridge2_rmse = GridSearchCV(pipe, params, cv=10, scoring='neg_root_mean_squared_error',n_jobs=-1)
results_ridge2_rmse = grid_ridge2_rmse.fit(X_train, y_train)

Sigo obteniendo

ValueError: too many values to unpack (expected 3)

en la última línea grid_ridge2_rmse.fit(X_train,y_train). Creo que hay algo mal en la forma en que estoy dividiendo el conjunto de datos.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que hay un problema con el desempaquetado de los valores en la definición de ColumnTransformer. Específicamente, el problema podría estar con el transformador de PolynomialFeatures.

    El formato correcto para definir el transformador debería ser:

    t = [('labelenc', LabelEncoder(), [0]),
         ('stand', StandardScaler(), [1,2,3,4,5,6]), 
         ('poly', PolynomialFeatures(degree=2), [1,2,3,4,5,6])]
    

    Aquí estamos especificando el nombre del transformador, el objeto del transformador en sí mismo y los índices de las columnas a las que el transformador debería aplicarse.

    Una vez que haya corregido la definición de ColumnTransformer, la canalización y GridSearchCV deberían funcionar correctamente.

Comments are closed.