Algoritmo KNN con GridSearchCV
Estoy intentando crear un modelo KNN con GridSearchCV, pero estoy obteniendo un error relacionado con el parámetro “classifier_leaf_size” no válido para el estimador KNeighborsClassifier(). Verifica la lista de parámetros disponibles con estimator.get_params().keys()
.
knn = KNeighborsClassifier()
knn.fit(x_train, y_train)
y_pred = knn.predict(x_test)
scores = cross_val_score(knn, x_train, y_train, scoring='accuracy', cv=cv, n_jobs=-1)
print('Precisión de entrenamiento - Clasificación KNN: ', knn.score(x_train, y_train))
print('Precisión de prueba - Clasificación KNN: ', knn.score(x_test, y_test))
plt.show()
Informe de clasificación:
cr = classification_report(y_test, y_pred)
print(cr, "\n")
Grid:
estimador_KNN = KNeighborsClassifier(algorithm='auto')
knn_grid_setup = {'n_neighbors': (1,10,1),
'classifier_leaf_size': (20,40,1), 'p': (1,2),
'classifier_weights': ('uniform', 'distance')
}
grid_search_KNN = GridSearchCV(
estimator=estimador_KNN,
param_grid=knn_grid_setup,
scoring = 'accuracy',
n_jobs = -1,
cv = 5
)
knn_grid.fit(x_train, y_train)
¿Qué causa el error? He leído la documentación, he intentado varios métodos, pero aún no puedo entender qué está sucediendo.
davy.ai
El error es causado por especificar un parámetro en la búsqueda en cuadrícula
param_grid
que no es un parámetro válido para el estimadorKNeighborsClassifier()
. En este caso, el parámetroclassifier_leaf_size
no es un parámetro válido paraKNeighborsClassifier()
, de ahí el mensaje de error. Para solucionar esto, debes reemplazarclassifier_leaf_size
con un parámetro válido paraKNeighborsClassifier()
. Puedes usarn_neighbors
en su lugar. Además, el nombre del parámetro tiene un error de escritura, debería sern_neighbors
en lugar den_neigbors
.