2014-06-13 5 views
6

Ho sviluppato un classificatore di spam utilizzando pandas e scikit per imparare fino al punto in cui è pronto per l'integrazione nel nostro sistema basato su haoop. A tal fine, ho bisogno di esportare il mio classificatore in un formato più comune rispetto al pickling.Esportare uno Scikit Impara la foresta casuale per l'uso sulla piattaforma Hadoop

Il modello Predictive Model Markup Language (PMML) è il mio formato di esportazione preferito. Gioca straordinariamente bene con Cascading, che già usiamo. Tuttavia, sorprendentemente non riesco a trovare alcuna libreria Python che esporti modelli di scikit-learn in PMML.

Qualcuno ha avuto esperienza con questo caso d'uso? Esiste un qualche tipo di alternativa al PMML che possa garantire l'interoperabilità tra scikit-learn e hadoop? Che dire di una solida libreria di esportazione PMML?

+0

c'è una domanda simile su Quora http://www.quora.com/How-do-I-use-scikit-learn-with-Hadoop-and-Mapreduce – miraculixx

+0

Grazie per l'input. L'utilizzo dell'API di streaming non è l'ideale, ma potrei dover ricorrere ad esso se tutto il resto fallisce. –

+0

Classificazione spam come nello spam email? Come sei venuto a usare una Random Forest per questo? –

risposta

9

È possibile utilizzare Py2PMML per esportare il modello in PMML e quindi valutarlo su Hadoop utilizzando JPMML-Cascading. JPMML è open source ma Py2PMML di Zementis sembra essere un prodotto commerciale. Oltre a questa alternativa non ci sono altri strumenti per ottenere modelli Scikit esportati come PMML su Java/Hadoop. Il core team di scikit è planning per implementare un esportatore PMML. Ma se non si vuole alcuna soluzione commerciale o attendere tale strumento da attuare avete ancora alcune opzioni, ma hanno bisogno di un po 'di codifica:

  • adattare il progetto così si genera codice Java/MapReduce al posto di C.
  • Utilizzando la funzione export_graphviz, ottenere la rappresentazione DOT di ciascun albero decisionale e scrivere un piccolo interprete Java.
  • Dimentica Java e Hadoop, usa Apache Spark e valuta ciascuno degli alberi decisionali in parallelo usando Python, Scikit e PySpark.

Spero che aiuti!

+2

L'esportazione dei modelli SkLearn in PMML può essere gestita ora dall'applicazione JPMML-SkLearn (https://github.com/jpmml/jpmml-sklearn)/dalla riga di comando. È molto più robusto e più semplice da utilizzare rispetto a Py2PMML. – user1808924