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.