Veo muchas veces en la descripción del trabajo de un científico de datos que solicita experiencia en Python / Java y no tengo en cuenta a R. A continuación se muestra un correo electrónico personal que recibí del científico de datos en jefe de una empresa que solicité a través de linkedin.
X, gracias por conectar y expresar interés. Tienes buenas habilidades analíticas. Sin embargo, todos nuestros científicos de datos deben tener buenas habilidades de programación en Java / Python, ya que somos una organización de Internet / móvil y todo lo que hacemos está en línea.
Si bien respeto la decisión del principal científico de datos, no puedo obtener una idea clara de cuáles son las tareas que Python puede hacer que R no puede hacer. ¿A alguien le puede interesar elaborar? De hecho, estoy interesado en aprender Python / Java, siempre que tenga un poco más de detalle.
Editar: encontré una discusión interesante sobre Quora. ¿Por qué Python es un lenguaje de elección para los científicos de datos?
Edit2: Blog de Udacity sobre idiomas y bibliotecas para el aprendizaje automático
fuente
Respuestas:
Para que pueda integrarse con el resto de la base de código. Parece que su empresa utiliza una combinación de Java y Python. ¿Qué vas a hacer si un pequeño rincón del sitio necesita aprendizaje automático? pasar los datos con una base de datos o caché, soltar en R, y así sucesivamente ¿Por qué no hacerlo todo en el mismo idioma? Es más rápido, más limpio y más fácil de mantener.
¿Conoces alguna compañía en línea que se ejecute únicamente en R? Yo tampoco...
Todo lo que dijo que Java es el último lenguaje en el que haría ciencia de datos.
fuente
Puede haber muchas razones como:
Flexibilidad de la fuerza laboral: un programador de Java / Python puede moverse fácilmente a otras tareas o proyectos.
Disponibilidad de candidatos: hay muchos programadores Java / Python. No desea introducir un nuevo lenguaje de programación para luego descubrir que no hay trabajadores calificados o que son demasiado caros.
Integración y ETL: a veces obtener los datos con la calidad adecuada es la parte más difícil del proyecto. Por lo tanto, es natural usar el mismo lenguaje que el resto de los sistemas.
Definición del modelo comercial: la mayoría de las reglas comerciales y los modelos comerciales ya están escritos en estos idiomas.
Simplemente manteniendo las cosas simples. Ya es bastante difícil estar al día con las tecnologías. Una base diversa de lenguaje puede ser caótica. R para esto, Ruby para eso, Scala, Clojure, F #, Swift, Dart ... Pueden necesitar diferentes servidores, diferentes parches, un infierno para administrar. Todos tienen sus propios IDE con herramientas y complementos (no siempre gratuitos). Vea algunos puntos del tío Bob sobre la elección de idiomas y las nuevas tecnologías.
Entonces, incluso si tiene una ventaja de productividad del 5% al 15% utilizando R para la tarea específica, pueden preferir una herramienta que simplemente haga el trabajo, incluso si no es de la manera más eficiente.
fuente
.csv
archivos, para lo cual R es en realidad la mejor herramienta adecuada en el mercado. Disponibilidad de candidatos: que haya más programadores Java que programadores R no implica que tenga que descartar un candidato R si tiene uno. Realmente no importa cómo el científico realice sus ejercicios siempre que implementen código legible que pueda ser ejecutado por algunos servidores (o cualquier otra cosa que la compañía esté ejecutando).En general, es cierto que para los ejercicios puramente de ciencia de datos y estadística, R ofrece las mejores y más rápidas
data.table
herramientas y métodos (especialmente si se usa el paquete), que de otro modo serían más pesados de implementar en Python (supongo que por Python todos queremos decir Pandas, sin embargo ) De hecho, la mayoría de los científicos de datos usan R para realizar sus modelos y cálculos, o simplemente para ver cómo se comportan los datos.Una vez que se completa el ejercicio, es hora de ponerlo a disposición del resto de las personas que tienen que usarlo (es decir, desplegarlo); Para este objetivo, a menudo se prefiere enviar el código en Python por dos razones principales:
Dicho lo anterior, todavía es cierto que uno puede traducir fácilmente el código R a cualquier otro idioma, siempre que haya métodos, bibliotecas y paquetes disponibles (en Python la mayoría de ellos lo están, por lo que no hay ningún problema). Muchas infraestructuras y bases de datos admiten el código R subyacente, por lo tanto, la portabilidad no es realmente un problema, especialmente si uno solo tiene que enviar los resultados de los cálculos (hasta ese punto, nadie realmente ve el código subyacente de todos modos).
Java es casi inútil para la ciencia de datos pura en sí misma (aunque la Universidad de Stanford tiene una colección de bibliotecas de aprendizaje automático de PNL escritas en Java, por lo que recuerdo, pero por favor verifique). La única razón por la que se puede requerir es que el resto de la compañía lo usa en gran medida y no quiere reemplazarlo por algo nuevo.
fuente
data.table
ofrece; scikit-learn, como mencionaste, es otro ejemplo, pero hay muchos más según el caso en cuestión.He visto bastantes compañías que usan el título de Científico de Datos para roles tipo "Ingeniero de Datos". Particularmente en el espacio de big data.
Si la empresa está utilizando Hadoop o un marco distribuido como Spark para realizar sus análisis en Java, Python (o probablemente Scala) serían los lenguajes que tendrían más sentido.
fuente
Java
Tendría que estar en desacuerdo con los otros carteles sobre la pregunta de Java. Hay ciertas bases de datos noSQL (como hadoop) que uno necesita para escribir trabajos mapreduce en java . Ahora puede usar HIVE para lograr el mismo resultado.
Pitón
El debate python / R continúa. Ambos son lenguajes extensibles, por lo que potencialmente ambos podrían tener la misma capacidad de procesamiento. Solo sé R y mi conocimiento de Python es bastante superficial. Hablando como propietario de una pequeña empresa, no desea tener demasiadas herramientas en su negocio, de lo contrario habrá una falta general de profundidad en ellas y dificultades para apoyarlas. Creo que se reducirá al conocimiento profundo de la herramienta en el equipo. Si el equipo está enfocado en Python, entonces contratar a otro científico de datos de Python tendrá sentido ya que pueden interactuar con la base de código existente y el código de experimento histórico.
fuente
Al menos para mi equipo actual (~ 80 científicos e ingenieros de datos), no tenemos tanta preferencia. La mitad de los científicos de datos aquí usan R y otra mitad usa Python. Muchos pueden codificar en ambos. Implementamos código Python y R en producción.
No creo que ninguno de nuestros científicos de datos use Java en absoluto. Si necesitan lidiar con big data, pueden usar SparkSQL o PySpark. El equipo de ingeniería de datos utiliza una combinación de Java / Scala / Python / Go.
Si usted es una de las pocas personas de datos en una pequeña empresa, puedo entender por qué requieren ciertas habilidades lingüísticas para que pueda hacer ciencia de datos e ingeniería. Pero tbh, creo que la mayoría de las pequeñas empresas no tendrán datos lo suficientemente grandes como para que Python o R no puedan manejar en la producción.
fuente
Mi punto de vista como programador de propósito general con un poco de experiencia en R: R es excelente para la ciencia de datos, pero está dirigido a personas que interpretan datos manualmente. Si desea utilizar los resultados para algo automatizado, debe interactuar con otra cosa, y esa otra cosa será difícil de hacer en un idioma específico del problema como R. ¿Puede hacer un sitio web en R? :) Por otro lado, python tiene bibliotecas preparadas para material de ciencia de datos y es un lenguaje de programación de propósito general que no se interpone en el camino de que hagas nada más con él. En cuanto a Java, es bueno para grandes proyectos de programación con cientos de miles a millones de líneas de código. Si la parte de ciencia de datos necesita interactuar con eso, entonces puede tener sentido hacer todo en Java.
Quejas aleatorias: ¿por qué tengo que iniciar sesión en cada sitio de StackExchange por separado?
fuente
Las herramientas en Python son simplemente mejores que la comunidad R. Ther R está bastante estancada mientras que la comunidad Python está evolucionando muy rápido. Especialmente en herramientas para Data Science.
También Python funciona mucho más fácilmente con todo lo que lo rodea. Puede raspar fácilmente la web, conectarse a bases de datos, etc. Eso hace que la creación de prototipos sea realmente rápida.
Y si tiene un prototipo funcional y le interesa acelerarlo o integrarlo en el flujo de trabajo de la empresa, generalmente se vuelve a implementar en Java.
R tiene algunas herramientas y visualización ordenadas, pero no es tan bueno construir cosas nuevas en él.
fuente