Al considerar los algoritmos de clasificación, scikit-learn proporciona una docena de opciones. Dependiendo de la situación, algunas son mejores opciones que otras. Pero un buen algoritmo de propósito general es K-Nearest Neighbors. Aunque una explicación completa de K-Nearest Neighbors (de aquí en adelante referido como KNN) está más allá del alcance de esta guía, aquí hay una breve introducción.
Mantengamos las cosas simples y asumamos por el momento que las observaciones tienen dos características. De esta manera podemos visualizarlas fácilmente usando un gráfico de dispersión en 2D.
Añadiré nuevos datos para clasificar con un gran punto verde.
Para clasificar estos nuevos datos usando KNN, el algoritmo medirá la distancia desde el nuevo punto a un número de puntos más cercanos al nuevo punto, o vecinos. Usando estas medidas, contará cuántos vecinos pertenecen a cada clase, y la clase con el mayor número es la etiqueta prevista del nuevo punto. En este caso, predecirá la clase representada por los puntos naranjas.
¿Cómo hacer esto con el aprendizaje de la ciencia? Como dije antes, hay clases para cada algoritmo de clasificación. Para KNN, la clase es KNeighborsClassifier del módulo sklearn.neighbors.
de sklearn.neighbors importar KNeighborsClassifier
Ahora puedo crear una instancia de la clase.
modelo = KNeighborsClassifier()
Y entrenar el modelo usando el método fit(). Los parámetros para fit() son las características y objetivos en el conjunto de datos de entrenamiento, que está en el marco wine_data_frame.
model.fit(marco_de_datos_de_vino[marco_de_datos_de_vino.columnas[:-1]].valores, marco_de_datos_de_vino[marco_de_datos_de_vino.columnas[-1]])
Finalmente, usando el método predict(), podemos pasar nuevos datos al modelo y obtener una predicción.
model.predict(testing_data[0][:-1].reshape(1, -1)
Como esto devuelve 0, que corresponde al objetivo de la primera fila de pruebas, el modelo funciona bien hasta ahora. Dejaré el resto de los datos de prueba como un ejercicio para el lector. En caso de que se lo pregunte, el método reshape() transforma los valores de los datos de prueba de un vector de fila a un vector de columna.
Te preguntarás, ¿cuántos vecinos utiliza el Clasificador de Vecinos para hacer predicciones? La respuesta es cuantos le digas. Por defecto, este número es 5, pero puedes cambiarlo con el argumento n_neighbors= palabra clave en el inicializador del KNeighborsClassifier. Ya que esto está siendo usado para configurar el KNeighborsClassifier, es un hiperparámetro.
modelo = KNeighborsClassifier(n_neighbors=3)
Existen muchos otros algoritmos de clasificación en el aprendizaje de la ciencia, como los Bayes Ingenuos y las Máquinas Vectoriales de Apoyo (SVM). Determinar cuál es el mejor para usar está fuera del alcance de esta guía. Sin embargo, el proceso de usarlos es básicamente el mismo que el de KNeighborsClassifier:
- Crear una nueva instancia de una clase
- Poner los hiperparámetros
- Entrenar el modelo
- Hacer predicciones
Y este API consistente es la belleza de la ciencia-ficción.