¿Debo usar Python o Scala para construir un sistema de aprendizaje automático para mi aplicación?

Python es el lenguaje de facto y mainstream para ML en estos días. Probablemente deberías estar usándolo en su mayor parte.

¿Qué tan grande será tu aplicación? Si de hecho es más que una aplicación, tal vez una plataforma, creo que realmente debería considerar Scala y C ++. La mayoría de las bibliotecas ML en Python son envoltorios para bibliotecas C ++. Por lo tanto, aprender a desarrollar y ampliar la fuente C ++ puede ser una gran ventaja.

Actualmente también hay un proyecto de etapas iniciales llamado Scala-native que tiene la capacidad de compilar un subconjunto moderadamente grande de código Scala existente en binarios nativos. Creo que este proyecto se puede adaptar para escribir bibliotecas nativas rápidas de manera similar a cómo se crean las bibliotecas de envoltura C / C ++ para Python.

Envolviendo C / C ++ para Python

http: // advanced-software-carpent …

Usando este enfoque, casi todo su código frontal se puede desarrollar en Python, y tendría más opciones de idioma para sus bibliotecas de contenedor. Python es un buen lenguaje de desarrollo rápido, y tiene una buena variedad de herramientas, y tiene una gran base de usuarios contribuyentes.

Probablemente debería usar Python ya que hay más bibliotecas de aprendizaje automático y bibliotecas de manipulación de datos generales. Si está creando algo que necesita trabajar inmediatamente a escala y particularmente si está construyendo sobre el marco de Spark, es posible que desee comenzar con Scala. Sin embargo, un lugar común en el que podría terminar es donde la mayor parte del código repetitivo que tiene está en Python y luego tiene algunos servicios específicos que se implementan en otros lenguajes como Scala o Go o C ++.

Sugeriría usar el lenguaje con el que se sienta cómodo. Un sistema ML es un objetivo en movimiento; lo reescribirás de todos modos, así que la comodidad y la velocidad son más importantes, creo.

Personalmente uso Scala para todo, pero eso es porque tengo experiencia con Scala. Si, en su caso, la mayoría de las personas son principiantes o programadores de Python, es mejor usar Python.

Además, si hablamos de ML y si tiene que lidiar con vectores / matrices, desafortunadamente no hay mucha diferencia entre Scala y Python al trabajar con ellos.

¿”Aplicación” como en una aplicación de teléfono? o aplicación de escritorio?

Para aplicaciones de escritorio: puede escribirlo en Python y luego transferirlo fácilmente a Scala según sea necesario (la mayor parte de la pila de aprendizaje automático de Python se replica en Scala, por lo que a menudo solo se necesitan unas pocas líneas de código para el puerto).

Para aplicaciones de Android: depende de lo que esté escribiendo. Puede entrenar redes de Tensorflow en el escritorio y luego exportarlas a Android para su uso, en cuyo caso use python.

Cuando escuchas la palabra aprendizaje automático comienza a pensar en Python.

Ignora todo lo demás.

En un futuro muy cercano, los modelos de aprendizaje automático del mundo se construirán con Python.

Incluso en este momento, la mayoría de los ingenieros de aprendizaje automático no se pueden distinguir de los programadores de Python.

Si eres nuevo en ML, aquí hay un curso gratuito para que comiences.

Una introducción al aprendizaje automático para ingenieros de datos

Pitón. En algún momento, querrá usar alguna biblioteca para hacer algo súper estándar en lugar de codificarlo usted mismo, y es más probable que Python lo tenga que Scala.