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.
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 dePolynomialFeatures
.El formato correcto para definir el transformador debería ser:
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 yGridSearchCV
deberían funcionar correctamente.