Estoy empezando a desarrollar una aplicación de aprendizaje automático para fines académicos. Actualmente estoy usando R y entrenándome en ello. Sin embargo, en muchos lugares, he visto personas que usan Python .
¿Qué utilizan las personas en la academia y la industria, y cuál es la recomendación?
machine-learning
r
python
Peter Mortensen
fuente
fuente
Respuestas:
Algunas diferencias realmente importantes a tener en cuenta al elegir R o Python sobre el otro:
Entonces, ambos idiomas son igualmente buenos. Por lo tanto, dependiendo de su dominio y el lugar donde trabaje, debe elegir inteligentemente el idioma correcto. El mundo de la tecnología generalmente prefiere usar un solo idioma. Los usuarios comerciales (análisis de marketing, análisis minorista) generalmente utilizan lenguajes de programación estadística como R, ya que con frecuencia realizan prototipos rápidos y crean visualizaciones (que se realiza más rápido en R que en Python).
fuente
No hay nada como "Python es mejor" o "R es mucho mejor que x".
Lo único que sé es que en la industria muchas personas se apegan a Python porque eso es lo que aprendieron en la universidad. La comunidad de Python es realmente activa y tiene algunos marcos excelentes para ML y minería de datos, etc.
Pero para ser honesto, si obtienes un buen programador c, él puede hacer lo mismo que la gente hace en python or r, si tienes un buen programador java, él también puede hacer (casi) todo en java.
Así que quédate con el idioma con el que te sientas cómodo.
fuente
Algunos pensamientos adicionales.
El lenguaje de programación 'per se' es solo una herramienta. Todos los lenguajes fueron diseñados para hacer que algunos tipos de construcciones sean más fáciles de construir que otros. Y el conocimiento y dominio de un lenguaje de programación es más importante y efectivo que las características de ese lenguaje en comparación con otros.
Hasta donde puedo ver, hay dos dimensiones de esta pregunta. La primera dimensión es la capacidad de explorar, construir pruebas de conceptos o modelos a un ritmo rápido, eventualmente teniendo a la mano suficientes herramientas para estudiar lo que está sucediendo (como pruebas estadísticas, gráficos, herramientas de medición, etc.). Los investigadores y los científicos de datos suelen preferir este tipo de actividad (siempre me pregunto qué significa eso, pero utilizo este término para su definición general). Tienden a depender de instrumentos conocidos y verificados, que pueden usarse para pruebas o argumentos.
La segunda dimensión es la capacidad de extender, cambiar, mejorar o incluso crear herramientas, algoritmos o modelos. Para lograrlo, necesita un lenguaje de programación adecuado. Aproximadamente todos son iguales. Si trabajas para una empresa, dependes mucho de la infraestructura de la empresa, la cultura interna y tus opciones disminuyen significativamente. Además, cuando desea implementar un algoritmo para uso en producción, debe confiar en la implementación. E implementar en otro idioma que no domines no te ayudará mucho.
Tiendo a favorecer para el primer tipo de actividad el ecosistema R. Tiene una gran comunidad, un gran conjunto de herramientas, pruebas de que estas herramientas funcionan como se esperaba. Además, puede considerar Python, Octave (por nombrar algunos), que son candidatos confiables.
Para la segunda tarea, debes pensar antes en lo que realmente quieres. Si desea herramientas listas para la producción robustas, entonces C / C ++, Java, C # son excelentes candidatos. Considero a Python como un segundo ciudadano en esta categoría, junto con Scala y sus amigos. No quiero comenzar una guerra de llamas, es solo mi opinión. Pero después de más de 17 años como desarrollador, tiendo a preferir un contrato estricto y mi conocimiento, que la libertad de hacer lo que pienses (como sucede con muchos lenguajes dinámicos).
Personalmente, quiero aprender tanto como sea posible. Decidí que tenía que elegir el camino difícil, lo que significa implementar todo desde cero. Yo uso R como modelo e inspiración. Tiene grandes tesoros en bibliotecas y mucha experiencia destilada. Sin embargo, R como lenguaje de programación es una pesadilla para mí. Así que decidí usar Java y no usar una biblioteca adicional. Eso es solo por mi experiencia, y nada más.
Si tiene tiempo, lo mejor que puede hacer es pasar un tiempo con todas estas cosas. De esta forma, obtendrá la mejor respuesta posible, adecuada para usted. Dijkstra dijo una vez que las herramientas influyen en su forma de pensar, por lo que es aconsejable conocer sus herramientas antes de permitirles modelar cómo piensa. Puedes leer más sobre eso en su famoso artículo llamado The Humble Programmer
fuente
Me gustaría añadir a lo que otros han dicho hasta ahora. No hay una respuesta única de que un idioma es mejor que otro.
Dicho esto, R tiene una mejor comunidad para la exploración y el aprendizaje de datos. Tiene amplias capacidades de visualización. Python, por otro lado, ha mejorado en el manejo de datos desde la introducción de los pandas. El tiempo de aprendizaje y desarrollo es muy menor en Python, en comparación con R (R es un lenguaje de bajo nivel).
Creo que en última instancia se reduce al ecosistema en el que se encuentra y a las preferencias personales. Para más detalles, puede ver esta comparación aquí .
fuente
No hay un lenguaje de bala de plata que pueda usarse para resolver todos y cada uno de los problemas relacionados con los datos. La elección del idioma depende del contexto del problema, el tamaño de los datos y si está trabajando en un lugar de trabajo, debe atenerse a lo que usan.
Personalmente, uso R con más frecuencia que Python debido a sus bibliotecas de visualización y su estilo interactivo. Pero si necesito más rendimiento o código estructurado, definitivamente uso Python ya que tiene algunas de las mejores bibliotecas como SciKit-Learn, numpy, scipy, etc. Utilizo R y Python en mis proyectos de manera intercambiable.
Entonces, si está comenzando con el trabajo de ciencia de datos, le sugiero que aprenda ambos y no es difícil ya que Python también proporciona una interfaz similar a R con Pandas .
Si tiene que lidiar con conjuntos de datos mucho más grandes, no puede escapar de los ecosistemas construidos con Java (Hadoop, Pig, Hbase, etc.).
fuente
No hay un lenguaje "mejor". He probado los dos y estoy cómodo con Python, así que trabajo solo con Python. Aunque todavía estoy aprendiendo cosas, pero hasta ahora no he encontrado ningún obstáculo con Python. Lo bueno de Python es que la comunidad es demasiado buena y puedes obtener mucha ayuda en Internet fácilmente. Aparte de eso, yo diría que vaya con el idioma que le gusta, no el que la gente recomienda.
fuente
En mi experiencia, la respuesta depende del proyecto en cuestión. Para la investigación pura, prefiero R por dos razones: 1) amplia variedad de bibliotecas y 2) gran parte de la literatura de ciencia de datos incluye muestras de R.
Si el proyecto requiere que los laicos usen una interfaz interactiva, he encontrado que R es demasiado limitado. Shiny es un gran comienzo, pero aún no es lo suficientemente flexible. En estos casos, comenzaré a considerar portar mi trabajo R a Python o js.
fuente
Un problema que todas las otras respuestas no abordan es la licencia .
La mayoría de las bibliotecas R maravillosos antes mencionados son GPL (por ejemplo ggplot2 , data.table ). Esto le impide distribuir su software de forma patentada.
Aunque muchos usos de esas bibliotecas no implican la distribución del software (por ejemplo, para entrenar modelos fuera de línea), la GPL por sí sola puede atraer a las empresas para que no los usen. Al menos en mi experiencia.
En el reino de Python, por otro lado, la mayoría de las bibliotecas tienen licencias de distribución amigables para las empresas, como BSD o MIT.
En la academia, los problemas de licencia normalmente no son problemas.
fuente
No hay mucho que agregar a los comentarios proporcionados. Lo único es que tal vez esta infografía que compara R vs Python para fines de ciencia de datos http://blog.datacamp.com/r-or-python-for-data-analysis/
fuente
Uno de los desafíos reales, me enfrenté con R es diferentes paquetes compatibles con diferentes versiones ... muchos paquetes R no están disponibles para la última versión de R ... Y R muchas veces da error debido a que la biblioteca o el paquete se escribió para versiones anteriores versión..
fuente
No he probado R (bueno, un poco, pero no lo suficiente como para hacer una buena comparación). Sin embargo, estas son algunas de las fortalezas de Pythons:
element in a_list
,for element in sequence
,matrix_a * matrix_b
(para la multiplicación de matrices), ...fuente
Prefiero Python sobre R porque Python es un lenguaje de programación completo, por lo que puedo realizar tareas de aprendizaje automático de extremo a extremo, como recopilar datos utilizando un servidor HTTP escrito en Python, realizar tareas avanzadas de ML y luego publicar los resultados en línea. Todo esto se puede hacer en Python. En realidad, encontré que R es más difícil de aprender y los beneficios para aprender Python son mucho mayores porque se puede usar para casi cualquier tarea de programación.
fuente
R: R es la contraparte de código abierto. que tradicionalmente se ha utilizado en la academia y la investigación. Debido a su naturaleza de código abierto, las últimas técnicas se lanzan rápidamente. Hay mucha documentación disponible en Internet y es una opción muy rentable. Python: con el origen como un lenguaje de script de código abierto, el uso de Python ha crecido con el tiempo. Hoy en día, tiene bibliotecas deportivas (numpy, scipy y matplotlib) y funciones para casi cualquier operación estadística / construcción de modelos que desee realizar. Desde la introducción de los pandas, se ha vuelto muy fuerte en las operaciones sobre datos estructurados.
Código de Python
Biblioteca de importación
Importa otras bibliotecas necesarias como pandas, numpy ...
de sklearn import linear_model
Conjuntos de datos de tren de carga y prueba
Las características y los valores de identificación y respuesta deben ser matrices numéricas y numpy
x_train = input_variables_values_training_datasets y_train = target_variables_values_training_datasets x_test = input_variables_values_test_datasets
Crear objeto de regresión lineal
linear = linear_model.LinearRegression ()
Entrene al modelo usando los conjuntos de entrenamiento y verifique el puntaje
linear.fit (x_train, y_train) linear.score (x_train, y_train)
Coeficiente de ecuación e intersección
print ('Coeficiente: \ n', linear.coef_) print ('Intercepción: \ n', linear.intercept_)
Predecir salida
predicted = linear.predict (x_test) Código R
Conjuntos de datos de tren de carga y prueba
Las características y los valores de identificación y respuesta deben ser matrices numéricas y numpy
x_train <- input_variables_values_training_datasets y_train <- target_variables_values_training_datasets x_test <- input_variables_values_test_datasets x <- cbind (x_train, y_train)
Entrene al modelo usando los conjuntos de entrenamiento y verifique el puntaje
lineal <- lm (y_train ~., data = x) resumen (lineal)
Predecir salida
predicho = predecir (lineal, x_test)
fuente
No creo que Python tenga GUI de apuntar y hacer clic que lo convierta en SPSS y SAS. Jugar con ellos es realmente divertido.
fuente
Tengo esta imagen en una publicación de linkedin. Cada vez que tengo dudas sobre el uso de Python o R, lo busco y resulta muy útil.
fuente