Me gustaría calcular el vecino más cercano a K en python. ¿Qué biblioteca debería usar?K vecino más cercano en python
Respuesta
Creo que deberías usar scikit ann.
Hay un buen tutorial sobre el más cercano 0ightybour here.
De acuerdo con la documentación:
Ann es una envoltura pitón generada TRAGO-aproximado para el vecino más cercano (ANN) Biblioteca (http://www.cs.umd.edu/~mount/ANN/), desarrollado por David M. Monte y Sunil Arya. ann proporciona una implementación kdtree inmutable (a través de ANN) que puede realizar k-vecino más cercano y k aproximado
scipy.spatial.cKDTree es rápido y sólido. Para obtener un ejemplo de su uso para la interpolación NN, consulte (ejem) inverse-distance-weighted-idw-interpolation-with-python en SO.
(si se puede decir por ejemplo: "Tengo puntos 1M en 3D, y quiero k = 5 vecinos más cercanos de 1k nuevos puntos", que podría obtener mejores respuestas o ejemplos de código.
¿Qué desea hacer con los vecinos una vez que los has encontrado?)
Escribí un script para comparar FLANN y scipy.spatial.cKDTree, no pude obtener el contenedor ANN para compilar. Puede probar esto por su cuenta para ver qué funcionará para su aplicación. El cKDTree tuvo un tiempo de ejecución comparable para mi caso de prueba con FLANN, FLANN fue ~ 1.25x más rápido. Cuando aumenté testSize, FLANN fue ~ 2 veces más rápido que cKDTree. Parece que FLANN sería más difícil de integrar dependiendo del proyecto, ya que no forma parte de un paquete python estándar.
import cProfile
from numpy import random
from pyflann import *
from scipy import spatial
# Config params
dim = 4
knn = 5
dataSize = 1000
testSize = 1
# Generate data
random.seed(1)
dataset = random.rand(dataSize, dim)
testset = random.rand(testSize, dim)
def test1(numIter=1000):
'''Test tree build time.'''
flann = FLANN()
for k in range(numIter):
kdtree = spatial.cKDTree(dataset, leafsize=10)
params = flann.build_index(dataset, target_precision=0.0, log_level = 'info')
def test2(numIter=100):
kdtree = spatial.cKDTree(dataset, leafsize=10)
flann = FLANN()
params = flann.build_index(dataset, target_precision=0.0, log_level = 'info')
for k in range(numIter):
result1 = kdtree.query(testset, 5)
result2 = flann.nn_index(testset, 5, checks=params['checks'])
import cProfile
cProfile.run('test2()', 'out.prof')
Es nativa en scipy si usted está mirando para hacer un enfoque kd-árbol: http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.KDTree.html#scipy.spatial.KDTree
- 1. Vecino más cercano Buscar en Python sin árbol k-d
- 2. K Algoritmo del vecino más cercano duda
- 3. K Algoritmo de vecino más cercano
- 4. vecino más cercano - árbol k-d - prueba de wikipedia
- 5. 'Vecino más cercano' zoom
- 6. Búsqueda de vecino más cercano en D3
- 7. La determinación de la mejor k de k vecino más cercano
- 8. Representación de vecino más cercano en lienzo
- 9. cómo encontrar k-ésimo vecino más cercano de un punto en un conjunto de punto
- 10. Búsqueda de vecino más cercano con condiciones de contorno periódicas
- 11. Distancia de separación del círculo - Vecino más cercano Problema
- 12. Búsqueda del vecino más cercano 2D para mover puntos
- 13. ¿Cómo funciona la búsqueda del vecino KD más cercano?
- 14. Algoritmo de interpolación de vecino más cercano en MATLAB
- 15. Búsqueda de vecino más cercano utilizando diagramas de Voronoi
- 16. ¿Cómo puedo usar una medida de distancia diferente para el vecino k-más cercano en Java/Weka?
- 17. Algoritmo o biblioteca de vecino más cercano basado en palabras clave
- 18. K-vecinos más cercanos consulta en PostGIS
- 19. Cómo rotar Imagen de interpolación por el vecino más cercano en Matlab
- 20. Mejor estructura de datos para el vecino más cercano en 1 dimensión
- 21. ¿Completa los valores que faltan con el vecino más cercano en las matrices enmascaradas de Python nuked?
- 22. Ronda a la 500 más cercano, Python
- 23. ¿Beneficios de la búsqueda del vecino más cercano con el pedido de Morton?
- 24. El mejor algoritmo de rendimiento crítico para resolver al vecino más cercano
- 25. Alto nivel vecino más cercano Búsqueda y sensibilidad de localidad Hashing
- 26. ¿Cómo hago para que un PictureBox use el remuestreo del vecino más cercano?
- 27. Redondea al entero más cercano
- 28. Cuarto más cercano completado
- 29. Punto más cercano a un punto dado
- 30. Python -. Localización de la marca de tiempo más cercano
1 esta biblioteca es muy fácil trabajar con él. –
+1, enlaces muy útiles! – juanchopanza
uno para enlaces útiles – pylover