Pregunta

Estoy buscando una biblioteca que, idealmente, tiene las siguientes características:

  • implementos agrupación jerárquica de datos multidimensionales (idealmente en similiarity o matriz de distancia)
  • máquinas de soporte implementos vector
  • está en C ++
  • es un poco documentada (éste parece ser el más duro)

Me gustaría que esto sea en C ++, ya que estoy más cómodo con ese idioma, pero también voy a utilizar cualquier otra lengua si la biblioteca es la pena. He buscado en Google y encontró algunos, pero realmente no tienen el tiempo para probarlas todas, por lo que quiero escuchar lo que otras personas tenían experiencias. Por favor, sólo responder si tiene alguna experiencia con la biblioteca recomiendas.

P.S .: Yo también podría utilizar diferentes bibliotecas para el agrupamiento y la SVM.

¿Fue útil?

Solución 4

Ok, por el amor integridad i publicará con lo que pasé en el final. Estoy utilizando scipy-cluster para la parte de la agrupación ahora. Es la aplicación más versátil que he encontrado hasta el momento. Creo que voy a ir con libSVM (que tiene una interfaz de Python ahora) para la parte SVM. Voy con Python porque no había realmente ningún ajuste implementación de agrupamiento jerárquico en C ++ que se encuentran (la Biblioteca de C Clustering especializada para microarrays y no soporta datos multidimensional).

Otros consejos

Hay sólo unas pocas bibliotecas de LD que he utilizado lo suficiente para que yo estoy a gusto recomendarlos; dlib ml es, sin duda uno de ellos.

aquí ; y-borde de la sangría de registro de salida:

hg clone http://hg.code.sf.net/p/dclib/code dclib-code

El creador de la biblioteca original y mantenedor actual es Davis Rey.

Su lista frente al dlib relevantes características:

  • una buena documentación : para las bibliotecas libre, de código abierto dirigidos a un grupo relativamente pequeño de usuarios / desarrolladores, esto es probablemente tan bueno como se pone; Aparte de los documentos habituales, refinados durante la historia dev cinco años, hay una actualizada con frecuencia Introducción a dlib , un (poco tráfico) foro ; y un gran conjunto de excelente ejemplos (incluyendo al menos uno para SVM).

  • C ++ :. 100% en C ++ como lo que sé

  • Soporte-Vector Machine algoritmo: sip; de hecho, los módulos de SVM han sido el foco de las actualizaciones más recientes a esta biblioteca.

  • Hierarchical Clustering algoritmo: no fuera de la caja; ahí es, sin embargo, el código de empaquetado para k-medias de agrupación . Es evidente que los resultados de cada técnica son muy diferente, pero el cálculo de la métrica de similitud y la posterior recursiva / paso de particionado iterativo son en el corazón de ambos - en otras palabras, el motor de cálculo para el agrupamiento jerárquico es todo lo que hay. Para adaptar el módulo de agrupación existente para HC, tomará más de una par de líneas de código, pero también es no es una tarea importante, dado que que está trabajando casi al nivel de presentación de datos.

dlib ml tiene un par de puntos adicionales que recomendar. Es una biblioteca madura (está en la versión 17.x ahora, la versión 1.x fue lanzado en algún momento a finales de 2005, creo), sin embargo, también se mantiene en constante desarrollo, como lo demuestran los registros de pase (la última actualización, 17,27, 17 años de mayo de 2010) y la última confirmación (23 de mayo de 2010). Además, también incluye bastantes otras técnicas ml (por ejemplo., Redes bayesianas, métodos Kernel, etc.). Y en tercer lugar, dllib ml tiene excelentes bibliotecas de "apoyo" para el cálculo matricial y optimización -. Los cuales son bloques de construcción fundamentales de muchas técnicas de LD

En la fuente, me he dado cuenta de que dlib ml está licenciado bajo BSL (Boost?), Que es una licencia de código abierto, aunque no sé nada más sobre este tipo de licencia .

WEKA ( http://www.cs.waikato.ac.nz/ml / weka / ) es una excelente biblioteca de aprendizaje automático de código abierto que cumple la mayoría de sus requisitos excepto C ++ - está escrito en Java. Está muy bien documentado, implementos de máquinas de vectores soporte y la agrupación y he tenido muy buenas experiencias con ella.

Bibliotecas de aprendizaje de máquina generales:

Estos dos son similares a Weka. Sin embargo, tienen en cuenta la eficiencia.

1.Shark (LGPL)

https://github.com/Shark-ML/Shark/

2.Waffles (LGPL)

http://waffles.sourceforge.net/

SVM y otra lineales clasificadores:

1.LibSVM (estilo BSD)

2.LibLinear (estilo BSD)

http://www.csie.ntu.edu.tw/~ cjlin / libsvm /

Todos ellos son en C ++.

No es C ++, pero que considerar el uso de R. En particular, echar un vistazo a vista de la máquina de aprendizaje en CRAN , que muestra muchas de las bibliotecas anteriores incluyendo Weka y libsvm.

Un par de opciones adicionales posibles:

Los campos condicional aleatoria (CRF): http://www.chokkan.org/software/crfsuite/

Modelos Ocultos de Markov (HMM): http://www.cs.au.dk/~asand/?page_id=152

Para una biblioteca general ML, considere la antorcha (versión 7, a partir del momento de la escritura): https://github.com/andresy/torch

El sistema de Orange está implementado en C ++ y se puede utilizar como una biblioteca, pero se centra en la exposición de su funcionalidad tanto como envolturas de Python para scripting flexible, así como de programación visual: http://orange.biolab.si/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top