Progetti di scienza dei dati open source per contribuire


15

Il contributo a progetti open source è in genere un buon modo per ottenere un po 'di pratica per i neofiti e provare una nuova area per esperti data scientist e analisti.

A quali progetti contribuisci? Fornisci alcuni link introduttivi + su Github.


2
Dai un'occhiata a ELKI (su github, Java; vedi anche Wikipedia). Lo uso molto perché è il progetto più completo per il clustering e il rilevamento di anomalie; e di solito molto più veloce di R.
Ha QUIT - Anony-Mousse il

Risposte:


15

Il progetto Julia è uno a cui contribuisco attivamente, comprese le librerie di elaborazione avanzata e XGBoost. Quindi, posso sicuramente garantire per la sua manutenzione e la qualità della comunità.

Alcuni progetti di scienza dei dati open source davvero validi in cui anche i principianti possono contribuire sono:

  • Sklearn : sviluppandosi sempre a un ritmo rapido, la comunità sklearn è sempre aperta a nuovi sviluppatori e collaboratori.
  • H2O : H2O è un altro progetto di scienza dei dati in rapida crescita, che lavora su soluzioni scalabili di machine learning e Deep Learning.
  • Vai : Road map e risorse per la scienza dei dati open source. Non è davvero un progetto tecnico, ma è molto utile per i principianti assoluti e gli aspiranti analisti.
  • Pylearn2 : un altro progetto di Machine Learning e Deep Learning in rapida crescita.
  • Vowpal Wabbit : il progetto Vowpal Wabbit (VW) è un sistema di apprendimento out-of-core veloce sponsorizzato da Microsoft Research e (precedentemente) Yahoo! Ricerca.

Ecco una discussione di Quora su tali progetti e alcuni altri che non sono menzionati in questa risposta.

Ecco un'altra bella discussione su Data Science open source e progetti ML in Python.


2
Confermo: è molto facile impegnarsi in sklearn, basta aprire una richiesta pull e il gioco è fatto.
Alexey Grigorev,

Pylearn2 non è più attivo. Keras, lasagne e blocchi sono l'opzione migliore per il contributo.
SHASHANK GUPTA,

6

Ce ne sono molti disponibili. Non so se mi è permesso farlo (per favore fatemi sapere se è sbagliato), ma ne sviluppo uno e ha già oltre 2 anni su git hub (in realtà è iniziato un anno prima di github). Il progetto si chiama rapaio, è su git hub qui e recentemente ho iniziato a scrivere un manuale per questo (alcuni dei miei amici me lo hanno chiesto). Il manuale è disponibile qui .

Si adatta alle tue esigenze se sei disposto a sviluppare in Java 8, se ti piace fare qualsiasi strumento e se ti piace sperimentare. Ci sono solo due principi che impongo. Il primo è scrivere qualcosa solo quando ne hai bisogno . Questo perché credo fermamente che solo quando hai bisogno di uno strumento sai anche cosa vuoi veramente da esso in termini di output, prestazioni, informazioni. Il secondo principio è che dipendi solo da jdk, se hai bisogno di qualcosa lo scriverai . Sono d'accordo sul fatto che sono vecchio stile, ma puoi personalizzare qualsiasi funzione per il tuo scopo in questo modo.

Se non mi è permesso farlo come risposta, per favore fatemelo sapere. Anche se, poiché si tratta di un'iniziativa open source, restituire qualcosa alle persone senza un tipo di progetto senza scopo di lucro , non vedo la ragione per cui non potrei farlo.


2
+1 Penso che sia un grande progetto per qualcuno di contribuire. Grazie per aver condiviso. Almeno, non credo sia irrilevante :)
Dawny33

1
Hai considerato di unire i tuoi sforzi con uno dei tanti altri progetti simili? Di ', ELKI, Weka, JSAT, Smile, Hubminer, ... hai fatto un benchmark? Da una rapida occhiata, ho visto alcuni costrutti che mi sembrano molto costosi (anche se probabilmente non così male come R).
Ha QUIT - Anony-Mousse

Il mio obiettivo era quello di avere un bel set di strumenti facili da programmare, le prestazioni non erano un obiettivo. Ma ho iniziato a rivalutarlo. Per quanto riguarda altri progetti: a causa di questioni legali, non posso impegnarmi in materiale distribuito e posso contribuire solo a progetti con un qualche tipo di licenza open source. Comunque, grazie per dare un'occhiata, sarei molto felice se mi potessi dare maggiori dettagli riguardo ai costrutti che hai citato. Mi aspetto che il tuo tempo sia limitato e non oso avere una discussione completa
Rapaio

1
ELKI è AGPL-3. Non è distribuito, ma ha alcune ottimizzazioni di basso livello per elevate prestazioni "locali" (non ancora Java 8). JSAT, Smile, Hubminer: tutti sono open-source, probabilmente per lo più apache, non distribuiti e non ottimizzati se non sbaglio (utilizzo principalmente ELKI).
Ha QUIT - Anony-Mousse il


4

ELKI (anche su GitHub ) è un progetto open source di data mining e data science. È unico rispetto alla sua architettura modulare: è possibile combinare algoritmi, funzioni di distanza e indici per l'accelerazione con pochissime limitazioni (ovviamente, gli algoritmi che non usano le distanze non possono essere combinati con le distanze). Non è il codice più semplice a causa dell'efficienza. Per il data mining, è necessario prestare attenzione alla memoria: l'utilizzo ArrayList<Integer>è un no-go se si desidera la scalabilità.

Grazie all'architettura modulare, è facile contribuire solo con piccoli moduli, come una singola funzione a distanza o un algoritmo.

Manteniamo un elenco di idee per i progetti di data mining , raggruppate per difficoltà. La maggior parte dei progetti prevede l'implementazione di alcune varianti di un algoritmo. ELKI mira a consentire studi comparativi di algoritmi, quindi cerchiamo di consentire qualsiasi combinazione e copriamo anche varianti di algoritmi. Ad esempio con k-mean, non abbiamo solo l'algoritmo di Lloyds, ma 10 varianti del tema generale di k-mean. Oltre 220 articoli sono stati (almeno parzialmente) reimplementati in ELKI.

Implementando tutto nello stesso strumento, otteniamo risultati molto più comparabili. Se usi R per il benchmarking, di solito stai confrontando mele e arance. k-significa in R stesso è in realtà un vecchio programma Fortran, e molto veloce. k-significa in R ma nel pacchetto "flexclust" è 100x più lento, perché è scritto in codice R reale. Quindi non fidarti di un benchmark in R ... inoltre, i moduli R tendono ad essere incompatibili, quindi spesso non puoi usare la distanza A dai moduli A con l'algoritmo B dal modulo B. in ELKI proviamo a condividere tanto codice quanto possibile attraverso le implementazioni per ridurre tali artefatti (ovviamente, non sarà mai possibile avere un benchmark equo al 100% - c'è sempre spazio per l'ottimizzazione), ma anche per consentire una facile combinazione di moduli.

Potresti iniziare con qualcosa di piccolo come la variante k-medie di Hartigan & Wong, e poi continuare con k-medie sferiche (che sono pensate per dati sparsi, dove potrebbero essere necessarie diverse ottimizzazioni delle prestazioni) e continuare ad aggiungere un migliore supporto per i dati categorici; o aggiungendo funzionalità di indicizzazione.

Mi piacerebbe anche vedere un'interfaccia utente migliore per ELKI , ma questo è uno sforzo notevole.


4

Se uno ama gli strumenti di programmazione visiva multipiattaforma, Orange è un'opzione. Dopo essersi trasferiti di recente su Python 3, non è stato ancora eseguito il porting di tutti i widget. Sta portando lo stack PyData (NumPy, SciPy, SciKit Learn, ...) su Python 3, PyQt, PyQtGraph ed è GPL su GitHub .

Schermata arancione

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.