Projetos de ciência de dados de código aberto para contribuir


15

A contribuição para projetos de código aberto é normalmente uma boa maneira de obter alguma prática para iniciantes e tentar uma nova área para cientistas e analistas de dados experientes.

Quais projetos você contribui? Forneça algum link de introdução + no Github.


2
Confira o ELKI (no github, Java; veja também a Wikipedia). Eu uso muito isso porque é o projeto mais completo para cluster e detecção de anomalias; e geralmente muito mais rápido que R também.
QuIT - Anony-Mousse

Respostas:


15

O projeto Julia é um projeto em que contribuo ativamente, incluindo as bibliotecas avançadas de computação e XGBoost. Definitivamente, posso garantir sua manutenção e a qualidade da comunidade.

Alguns bons projetos de ciência de dados de código aberto nos quais até mesmo os iniciantes podem contribuir são:

  • Sklearn : sempre desenvolvendo em um ritmo acelerado, a comunidade sklearn está sempre aberta a novos desenvolvedores e colaboradores.
  • H2O : O H2O é outro projeto de ciência de dados que cresce rapidamente, trabalhando em soluções de aprendizado de máquina escalável e Deep Learning.
  • Ir : Mapa e recursos de ciência de dados de código aberto. Não é realmente um projeto técnico, mas é muito útil para iniciantes e analistas aspirantes.
  • Pylearn2 : Outro projeto de Machine Learning e Deep Learning em rápido crescimento.
  • Vowpal Wabbit : O projeto Vowpal Wabbit (VW) é um sistema de aprendizado fora do núcleo rápido patrocinado pela Microsoft Research e (anteriormente) Yahoo! Pesquisa.

Aqui está um discussão do Quora sobre esses projetos e mais alguns que não são mencionados nesta resposta.

Aqui está outra boa discussão sobre projetos de ciência de dados e ML de código aberto em Python.


2
Eu confirmo - é muito fácil se comprometer com o sklearn, basta abrir uma solicitação pull e é isso.
Alexey Grigorev

O Pylearn2 não está mais ativo. Keras, lasanha e blocos são a melhor opção para contribuição.
SHASHANK GUPTA

6

Existem muitos deles disponíveis. Não sei se tenho permissão para fazer isso (por favor, deixe-me saber se está errado), mas desenvolvo um e ele já tem mais de 2 anos no git hub (na verdade, foi iniciado um ano antes do github). O projeto se chama rapaio, está no git hub aqui e recentemente comecei a escrever um manual para ele (alguns de meus amigos me perguntaram sobre isso). O manual pode ser encontrado aqui .

Ele se adapta às suas necessidades se você deseja desenvolver no Java 8, se você gosta de fazer alguma ferramenta e se deseja experimentar. Existem apenas dois princípios que eu aplico. O primeiro é escrever algo apenas quando você precisar . Isso porque acredito firmemente que somente quando você precisa de uma ferramenta, também sabe o que realmente quer dela em termos de saída, desempenho e informações. O segundo princípio é que você depende apenas do jdk, se precisar de algo, você o escreverá . Posso concordar que sou antiquado, mas dessa maneira você pode adaptar qualquer recurso para seu objetivo.

Se eu não tiver permissão para fazer isso como uma resposta, informe-me novamente. Embora, por ser uma iniciativa de código aberto, devolva algo às pessoas sem nenhum tipo de projeto com lucro, não vejo razão para não fazê-lo.


2
+1 Eu acho que é um ótimo projeto para alguém contribuir. Obrigado por compartilhar. Pelo menos, eu não acho que isso é irrelevante :)
Dawny33

1
Você já pensou em juntar seus esforços a um dos muitos outros projetos semelhantes? Digamos, ELKI, Weka, JSAT, Sorriso, Hubminer, ... você comparou? De uma olhada rápida, vi algumas construções que me parecem muito caras (embora provavelmente não sejam tão ruins quanto R).
QuIT - Anony-Mousse

Meu objetivo era ter um bom conjunto de ferramentas para programadores, o desempenho não era um objetivo. Mas comecei a reavaliar isso. Em relação a outros projetos: devido a questões legais, não posso me comprometer com material distribuído e posso contribuir apenas para projetos com algum tipo de licença de código aberto. De qualquer forma, obrigado por dar uma olhada, eu ficaria muito feliz se você pudesse me dar mais detalhes sobre as construções que você mencionou. Espero que o seu tempo é limitado, e não se atrevem a ter uma discussão completa
rapaio

1
ELKI é AGPL-3. Ele não é distribuído, mas possui algumas otimizações de baixo nível para alto desempenho "local" (sem Java 8 ainda). JSAT, Smile, Hubminer - todos eles são de código aberto, provavelmente principalmente apache, não distribuídos e não tão otimizados se não me engano (na maioria das vezes, uso o ELKI).
QuIT - Anony-Mousse


4

ELKI (também no GitHub ) é um projeto de código aberto para mineração de dados e ciência de dados. É único em relação à sua arquitetura modular: você pode combinar algoritmos, funções de distância e índices de aceleração com muito poucas limitações (é claro, algoritmos que não usam distâncias não podem ser combinados com distâncias). Não é o código mais fácil por causa da eficiência. Para mineração de dados, você precisa ter cuidado com a memória - o uso ArrayList<Integer>é desnecessário se você quiser escalabilidade.

Devido à arquitetura modular, é fácil contribuir com apenas pequenos módulos, como uma função ou algoritmo de distância única.

Mantemos uma lista de idéias de projetos de mineração dados , agrupadas aproximadamente por dificuldade. A maioria dos projetos é a implementação de alguma variante de um algoritmo. O ELKI visa permitir estudos comparativos de algoritmos, por isso tentamos permitir qualquer combinação e abrangem também variantes de algoritmos. Por exemplo, com k-means, não temos apenas o algoritmo Lloyds, mas 10 variantes do tema geral de k-means. Mais de 220 artigos foram (pelo menos parcialmente) reimplementados no ELKI.

Ao implementar tudo na mesma ferramenta, obtemos resultados muito mais comparáveis. Se você usa R para benchmarking, geralmente está comparando maçãs e laranjas. O k-means no próprio R é realmente um programa Fortran antigo e muito rápido. k-significa em R, mas no pacote "flexclust" é 100x mais lento, porque está escrito em código R real. Portanto, não confie em uma referência em R ... também, os módulos R tendem a ser incompatíveis; portanto, você não pode usar a distância A dos módulos A com o algoritmo B do módulo B. No ELKI, tentamos compartilhar tanto código quanto É possível nas implementações reduzir esses artefatos (é claro que nunca será possível ter uma referência 100% justa - sempre há espaço para otimização), mas também para permitir a combinação de módulos facilmente.

Você pode começar com algo pequeno, como a variante k-means da Hartigan & Wong, e depois continuar com o k-means esférico (que é destinado a dados esparsos, onde diferentes otimizações de desempenho podem ser necessárias) e continuar a adicionar melhor suporte a dados categóricos; ou adicionando funcionalidade de indexação.

Também adoraria ver uma interface de usuário melhor para o ELKI , mas esse é um grande esforço.


4

Se você gosta de ferramentas de programação visual multiplataforma, Orange é uma opção. Tendo se mudado recentemente para o Python 3, eles ainda não têm todos os widgets portados. Ele está trazendo a pilha PyData (NumPy, SciPy, SciKit Learn, ...) para Python 3, PyQt, PyQtGraph e é GPL no GitHub .

Tela laranja

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.