Como o @ogrisel destacou, o scikit-learn é um dos melhores pacotes de aprendizado de máquina disponíveis para o Python. É adequado para conjuntos de dados tão pequenos quanto recursos de 100k (esparsos) e amostras de 10k, e até mesmo para conjuntos de dados marginalmente maiores que podem conter mais de 200k linhas. Basicamente, qualquer conjunto de dados que caiba na memória.
Mas, se você estiver procurando por uma estrutura de aprendizado de máquina Python altamente escalável, eu recomendo o Pyspark MLlib. Como os conjuntos de dados hoje em dia podem crescer exponencialmente (dado o big data e a onda de aprendizado profundo), muitas vezes você precisa de uma plataforma que possa ser bem dimensionada e executada rapidamente, não apenas na fase de treinamento do modelo, mas também durante a fase de engenharia de recursos (transformação de recursos , seleção de recurso). Vejamos todas as três métricas da plataforma Spark Mllib em que você está interessado:
Escalabilidade:
se o seu conjunto de dados pode caber na memória, o scikit-learn deve ser sua escolha. Se for grande demais para caber na memória, o Spark é o caminho a percorrer. O importante a ser observado aqui é que o Spark funciona mais rápido apenas em uma configuração distribuída.
Abrangência: o
Sklearn é muito mais rico em termos de implementações decentes de um grande número de algoritmos comumente usados em comparação com o spark mllib. O suporte para manipulação e transformação de dados também é mais rico no scikit-learn. O Spark Mllib possui módulos de transformação de dados suficientes que fazem o truque na maioria das vezes. Portanto, caso você acabe com o spark mllib por questões de escalabilidade, ainda poderá fazer o trabalho. Possui todo o suporte para análise de correlação, extração de recursos (tf-idf, word2vec, CountVectorizer), transformação de recursos (Tokenizer, StopWordsRemover, nn-gram, Binarizer, PCA etc.). Para uma lista detalhada, consulte o link abaixo:
Extraindo, transformando e selecionando recursos no Spark mllib
- Classificação: o
Spark mllib possui a implementação de todos os principais algoritmos que você usaria na maioria das vezes (incluindo algos que funcionam bem para a classificação de texto). Para uma visão geral detalhada de quais algoritmos estão disponíveis no mllib, consulte o link abaixo.
Classificação e regressão de Mllib
Bônus: O Apache Spark tem suporte para Python, R, Java e Scala. Portanto, se amanhã você decidir experimentar um idioma diferente (como uma escolha pessoal ou por razões profissionais), não precisará aprender uma estrutura totalmente nova.