/ / Utilisation des routines MLLib de spark avec des bases de données de pandas - python, apache-spark, pyspark, apache-spark-mllib

Utilisation des routines MLLib avec les pandas dataframes - python, apache-spark, pyspark, apache-spark-mllib

J'ai un assez gros ensemble de données (~ 20 Go) stocké surdisque comme Pandas / PyTables HDFStore, et je veux exécuter des forêts aléatoires et des arbres boostés dessus. Essayer de le faire sur mon système local prend une éternité, alors je pensais le transformer en un cluster à étincelles auquel j'ai accès et utiliser plutôt les routines MLLib.

Bien que j'ai réussi à charger le dataframe des pandasen tant que source de données spark, je suis un peu confus quant à la façon de l’utiliser dans les routines MLLib. Je ne connais pas très bien MLLib et il semble qu’il accepte uniquement les types de données LabeledPoint.

J'apprécierais toutes les idées / pointeurs / codes qui expliquent comment utiliser (des pandas ou des étincelles) des images de données en tant qu'entrée pour les algorithmes MLLib - directement ou indirectement, en convertissant les types pris en charge.

Merci.

Réponses:

1 pour la réponse № 1

Vous devez convertir le DataFrame à un RDD[LabeledPoint]. Pas de thé LabeledPoint est juste un (label: Double, features: Vector). Considérons une routine de mappage qui récupère les valeurs de chaque ligne:

val rdd = df.map { row =>
new LabeledPoint(row(0), DenseVector(row.getDouble(1),..., row.getDouble(n)))
}

Cela retournera un RDD[LabeledPoint] que vous pouvez entrer dans un RandomForest.trainRegressor(...), par exemple. Regardez le DataFrame API pour plus de détails.