¿Cuál es el mejor lenguaje de programación para implementar algoritmos de aprendizaje automático?

Python es ahora mi primera opción para comenzar con un problema de aprendizaje automático, numpy, pandas y scikit-learn lo convirtieron en un excelente entorno que puede usarse en conjuntos de datos de tamaño mediano, llamados en un servidor, etc.

R es más mi herramienta de análisis de datos, la uso para analizar los efectos de las variables en profundidad, hacer pruebas estadísticas, etc. Además, sigo encontrando que ggplot2 de R es mucho más cómodo para trabajar que todos los equivalentes de Python (hasta ahora he usado matplotlib, ggplot, seaborn).

Julia es la herramienta que he descargado, probado, pero todavía no soy competente. Se dice que es eficiente y tiene buenas abstracciones (además puede ser paralelo, lo que será vital en los próximos años). Sin embargo, si está trabajando como yo en una empresa tradicional en la que cambiar una pieza de una pila tecnológica requiere tiempo y esfuerzo, no lo recomendaría todavía (al menos para grandes proyectos en la fase de implementación).

Scala / Spark tiene excelentes capacidades de aprendizaje automático y es una excelente herramienta para escalar la computación hasta miles de nodos. Tiene la gran ventaja de un REPL y Jupyter Notebook para pruebas y creación de prototipos, y puede compilarse para producción.

No lo sé.

La eficiencia es sin duda una preocupación principal para muchas implementaciones, lo que implica que un lenguaje de nivel inferior es bastante importante. En todo caso, esto ha estado cambiando aún más recientemente con la programación de Cuda en GPU. Al mismo tiempo, las mejoras algorítmicas continúan dominando la implementación en términos de su valor (computacional). En general, es una decisión difícil, con muchos de los mejores sistemas implementados en C ++ pero vinculantes en lenguajes más avanzados para admitir interfaces más fáciles.

Si está escribiendo algoritmos personalizados, Julia llega al punto óptimo de productividad y rendimiento. Aquí hay diapositivas de una charla llamada “Implementación de algoritmos de aprendizaje automático en Julia”:

http://jamesporter.me/static/mis

Use python u octave para crear prototipos rápidamente de sus ideas. Una vez que tenga algo que funcione y necesite optimizar la velocidad, probablemente quiera implementarlo en C / C ++. Si realizó un prototipo en Python, es posible que desee utilizar Cython para la implementación de C: http://docs.cython.org/src/quick

Python obviamente.
Con la ayuda de scikit learn, ml.py es bastante fácil concentrarse en el algoritmo.
También hay otras bibliotecas específicas.
Pero Scikit-learn cubre la mayoría de los algoritmos.

“Lo mejor” tiende a ser subjetivo, pero Python es muy popular hoy en día, especialmente en combinación con scikit-learn.

Python sería una buena opción para comenzar con la creación rápida de prototipos. Hay muchos paquetes disponibles en Python como scikit-learn, PyML.