Cómo construir y trazar una gráfica de vecinos más cercanos

Si no tiene muchos puntos, simplemente puede cargar todos sus puntos de datos y luego usar scikitlearn en Python o un enfoque simplista de fuerza bruta para encontrar los vecinos k más cercanos a cada uno de sus puntos de datos. A medida que encuentre los vecinos, puede crear bordes en una lista como [(1,245), (1,317), (1,1089), (2,107)….] Lo que significa que los 3 vecinos al punto 1 son 245,317 y 1089, etc.

Una vez que tenga una lista de bordes, puede exportarlos a un archivo CSV con el encabezado SOURCE, TARGET e importar este archivo a Gephi para crear la visualización del gráfico KNN. Gephi produce visualizaciones muy hermosas y no tiene que codificar nada, solo importe el gráfico y juegue con los diferentes algoritmos de visualización.

Su archivo CSV se verá así:

ORIGEN DESTINO

1,245

1,317

1,1089

2, 107

Si tiene muchos puntos, es posible que necesite algo como Descenso NN: Construcción eficiente del gráfico vecino K más cercano para medidas de similitud genéricas, que es un algoritmo muy eficiente para construir un gráfico KNN.

La muestra que tiene arriba funciona bien para datos bidimensionales o proyecciones de datos que se pueden destilar en 2-D sin perder demasiada información, por ejemplo. Mediante técnicas de reducción de dimensionalidad.

Para datos n-dimensionales (razonablemente pequeños n), un diagrama de radar funciona bien. Los puntos cercanos entre sí en un grupo tendrán una forma similar en la trama. No te vuelvas loco y hagas n demasiado grande, de lo contrario la visualización se vuelve difícil de manejar y difícil de interpretar.

Reduce las dimensiones a través de algo como SVD si es necesario para tener una visualización sensata.

Un enfoque directo:

01. Construya un modelo knn en sus datos usando scikit-learn (1.6. Vecinos más cercanos)

02. Cree un conjunto de elementos de kneighours_graph del objeto guardado (consulte el enlace anterior): esta es esencialmente su matriz de adyacencia para el gráfico knn

03. Use la biblioteca `networkx` en python para convertir esto en un gráfico y trazarlo o analizarlo como desee utilizando la gran cantidad de funciones disponibles en la biblioteca misma. Para trazarlo de acuerdo con geo-cordinates o posiciones personalizadas (como su diagrama muestra un gráfico para algunos datos en EE. UU., Supongo), en realidad también puede proporcionar las coordenadas para cada nodo. (Dibujo: documentación de NetworkX 1.10)

Puede haber enfoques más eficientes desde el punto de vista informático para hacer esto, pero mantener todo dentro de las bibliotecas de Python disponibles mantendría su código limpio y probablemente obtendrá su gráfico y diagrama dentro de aproximadamente 10 líneas, si ya tiene un conjunto de datos limpio.

Clasifique suficientes puntos espaciados uniformemente y grábelos de colores según la clase que obtengan

Ver tutoriales de sklearn sobre clasificadores knn

More Interesting

¿Se está realizando una fuerte investigación en la intersección del aprendizaje automático y la neurociencia computacional?

Como ingeniero de ASIC, ¿cómo debo prepararme para la era del aprendizaje automático?

Cómo migrar modelos de aprendizaje automático que están escritos en diferentes lenguajes de programación

¿Sigue siendo útil saber HTML hoy?

¿Cuáles son algunas trampas comunes al estudiar la clasificación en el aprendizaje automático?

¿Cómo analizaría programáticamente una oración y decidiría si responde con "eso es lo que dijo"? Resuma un algoritmo que, dada una oración, devuelve verdadero o falso para determinar si la declaración es apropiada.

¿Qué marco de trabajo en el aprendizaje automático puede manejar grandes conjuntos de datos?

¿Por qué es óptimo establecer el tamaño del paso para la regresión logística con el descenso del gradiente al recíproco de la consistencia de lipschitz?

¿Qué son las unidades recurrentes cerradas y cómo se pueden implementar con TensorFlow?

¿Qué significa el aprendizaje de características en Machine Learning?

¿Cuáles son algunos de los mejores programas de posgrado de aprendizaje automático que no requieren un título universitario de CS?

¿Qué conocimientos de matemática / estadística y CS debo dominar (no matemático / stat / CS, pero graduado en ingeniería) para carrera / investigación en aprendizaje automático?

¿Cuál es la diferencia entre la regularización y el sesgo inductivo en el aprendizaje automático?

¿Alguien puede presentar un tutorial o un documento sobre cómo elegir el valor de 'C' en la función de regresión logística scikit-learn?

¿Cuál es el plan de estudios de maestría de Stanford en AI / ML?