Proyectos de ciencia de datos de código abierto para contribuir

15

La contribución a los proyectos de código abierto suele ser una buena forma de obtener algo de práctica para los novatos y probar una nueva área para científicos y analistas de datos con experiencia.

¿Qué proyectos aportas? Proporcione alguna introducción + enlace en Github.

IharS
fuente
2
Echa un vistazo a ELKI (en github, Java; ver también Wikipedia). Lo uso mucho porque es el proyecto más completo para la agrupación y la detección de anomalías; y generalmente mucho más rápido que R también.
HA SALIDO - Anony-Mousse

Respuestas:

15

El proyecto Julia es uno al que contribuyo activamente, incluidas las bibliotecas de informática avanzada y XGBoost. Por lo tanto, definitivamente puedo garantizar su mantenimiento y la calidad de la comunidad.

Algunos proyectos de ciencia de datos de código abierto realmente buenos en los que incluso los principiantes pueden contribuir son:

  • Sklearn : siempre desarrollándose a un ritmo rápido, la comunidad sklearn siempre está abierta a nuevos desarrolladores y colaboradores.
  • H2O : H2O es otro proyecto de ciencia de datos de rápido crecimiento, que trabaja en soluciones de aprendizaje automático escalables y aprendizaje profundo.
  • Ir : Mapa de ruta de ciencia de datos de código abierto y recursos. No es realmente un proyecto técnico, pero es muy útil para principiantes absolutos y analistas aspirantes.
  • Pylearn2 : otro proyecto de aprendizaje automático y aprendizaje profundo de rápido crecimiento.
  • Vowpal Wabbit : El proyecto Vowpal Wabbit (VW) es un sistema de aprendizaje rápido fuera del núcleo patrocinado por Microsoft Research y (anteriormente) Yahoo! Investigación.

Aquí hay una discusión de Quora sobre tales proyectos y algunos más que no se mencionan en esta respuesta.

Aquí hay otra buena discusión sobre los proyectos de código abierto de Data Science y ML en Python.

Dawny33
fuente
2
Confirmo: es muy fácil comprometerse a sklearn, solo abra una solicitud de extracción y listo.
Alexey Grigorev
Pylearn2 ya no está activo. Keras, lasaña y bloques son una mejor opción para contribuir.
SHASHANK GUPTA
6

Hay muchos de ellos disponibles. No sé si se me permite hacer esto (por favor, avíseme si está mal), pero desarrollo uno y ya lleva más de 2 años en git hub (en realidad comenzó un año antes que github). El proyecto se llama rapaio, está en git hub aquí y recientemente comencé a escribir un manual para ello (algunos de mis amigos me preguntaron sobre eso). El manual se puede encontrar aquí .

Se ajusta a sus necesidades si está dispuesto a desarrollar en Java 8, si le gusta hacer alguna herramienta y si le gusta experimentar. Solo hay dos principios que hago cumplir. El primero es escribir algo solo cuando lo necesites . Esto se debe a que creo firmemente que solo cuando necesita una herramienta, también sabe lo que realmente quiere de ella en términos de rendimiento, rendimiento e información. El segundo principio es que solo depende de jdk, si necesita algo lo escribirá . Estoy de acuerdo en que estoy pasado de moda, pero puede adaptar cualquier función para su propósito de esta manera.

Si no se me permite hacer eso como respuesta, por favor avíseme. Aunque, dado que se trata de una iniciativa de código abierto, devuelvo algo a las personas sin ningún tipo de proyecto de lucro. No veo razón por la que no podría hacerlo.

rapaio
fuente
2
+1 Creo que es un gran proyecto para que alguien contribuya. Gracias por compartir. Al menos, no creo que sea irrelevante :)
Dawny33
1
¿Has considerado unir tus esfuerzos con uno de los muchos proyectos similares? Digamos, ELKI, Weka, JSAT, Smile, Hubminer, ... ¿te has comparado? De un vistazo rápido, vi algunas construcciones que me parecen muy caras (aunque probablemente no sean tan malas como R).
HA SALIDO - Anony-Mousse
Mi objetivo era tener un buen conjunto de herramientas amigables para el programador, el rendimiento no era un objetivo. Pero comencé a reevaluar eso. Con respecto a otros proyectos: debido a cuestiones legales, no puedo comprometerme con cosas distribuidas y puedo contribuir solo a proyectos con algún tipo de licencias de código abierto. De todos modos, gracias por echar un vistazo, estaría muy feliz si me puede dar más detalles sobre las construcciones que mencionó. Espero que su tiempo sea limitado, y no me atrevo a tener una discusión completa
rapaio
1
ELKI es AGPL-3. No se distribuye, pero tiene algunas optimizaciones de bajo nivel para un alto rendimiento "local" (aún no Java 8). JSAT, Smile, Hubminer: todos son de código abierto, probablemente en su mayoría apache, no distribuidos y no tan optimizados si no me equivoco (uso principalmente ELKI).
HA SALIDO - Anony-Mousse
4

ELKI (también en GitHub ) es un proyecto de código abierto de minería de datos y ciencia de datos. Es único con respecto a su arquitectura modular: puede combinar algoritmos, funciones de distancia e índices de aceleración con muy pocas limitaciones (por supuesto, los algoritmos que no usan distancias no se pueden combinar con distancias). No es el código más fácil debido a la eficiencia. Para la minería de datos, debe tener cuidado con la memoria: no se debe usar ArrayList<Integer>si desea escalabilidad.

Debido a la arquitectura modular, es fácil contribuir con módulos pequeños, como una función o algoritmo de distancia única.

Mantenemos una lista de ideas de proyectos de minería de datos , aproximadamente agrupadas por dificultad. La mayoría de los proyectos son la implementación de alguna variante de un algoritmo. ELKI tiene como objetivo permitir estudios comparativos de algoritmos, por lo que tratamos de permitir cualquier combinación y cubrir también variantes de algoritmos. Por ejemplo, con k-means, no solo tenemos el algoritmo Lloyds, sino 10 variantes del tema general k-means. Más de 220 artículos han sido (al menos parcialmente) reimplementados en ELKI.

Al implementar todo en la misma herramienta, obtenemos resultados mucho más comparables. Si usa R para la evaluación comparativa, generalmente está comparando manzanas y naranjas. k-means en R en sí mismo es en realidad un viejo programa Fortran, y muy rápido. k-significa en R pero en el paquete "flexclust" es 100 veces más lento, porque está escrito en código R real. Por lo tanto, no confíe en un punto de referencia en R ... también, los módulos R tienden a ser incompatibles, por lo que a menudo no puede usar la distancia A desde los módulos A con el algoritmo B desde el módulo B. En ELKI intentamos compartir tanto código como posible a través de las implementaciones para reducir tales artefactos (por supuesto, nunca será posible tener un punto de referencia 100% justo, siempre hay espacio para la optimización), sino también para permitir la combinación de módulos fácilmente.

Puede comenzar con algo pequeño, como la variante k-means de Hartigan & Wong, y luego continuar con k-means esféricos (que están destinados a datos escasos, donde pueden ser necesarias diferentes optimizaciones de rendimiento) y continuar agregando un mejor soporte para datos categóricos; o agregando funcionalidad de indexación.

También me encantaría ver una mejor interfaz de usuario para ELKI , pero eso es un gran esfuerzo.

Erich Schubert
fuente
4

Si a uno le gustan las herramientas de programación visual multiplataforma, Orange es una opción. Tras haberse mudado recientemente a Python 3, todavía no tienen todos los widgets portados. Lleva la pila PyData (NumPy, SciPy, SciKit Learn, ...) a Python 3, PyQt, PyQtGraph, y es GPL en GitHub .

Espectáculo naranja

K3 --- rnc
fuente