2016-05-16 3 views

Antwort

0

Wenn Ihre Daten eine RDD ist, können Sie die Methode aufrufen: saveAsLibSVMFile(rdd, path) Es ist Teil von apache.spark.mllib.util.MLUtils Paket.

Für offizielle Dokumentation: https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.util.MLUtils

$ unter der Annahme, hier ein scala Beispiel Sie Ihre kategorischen Daten in binären Funktionen konvertiert haben: (Sie das gleiche tun können, auch in Python oder Java)

val responseData=sc.textFile("response.txt") 
val responseValue = responseData.map(line => line.trim().split(" ").map(_.toDouble)) 

val featuresData=sc.textFile("features.txt") 
val featuresValue = featuresData.map(line => { 
    val featureInt = line.trim().toInt 
}) 

val data = featuresValue.zip(featuresData).map(
    line => LabeledPoint(line._1, Vectors.dense(line._2)) 
) 

saveAsLibSVMFile(data, "data.libsvm") 

Wenn Sie möchten die PySpark-Version nicht testen, aber etwas wie:

from pyspark.mllib.linalg import SparseVector 
from pyspark.mllib.regression import LabeledPoint 

responseData=sc.textFile("response.txt") 
responseValue = responseData.map(lambda line: map(lambda x: Decimal(x), line.strip().split(" "))) 
# for clarity you can also extract the lambda into a function 

featuresData=sc.textFile("features.txt") 
featuresValue = featuresData.map(lambda line: Int(line.strip())) 

mtx = zip(featuresValue.collect(),featuresData.collect()) 
data = map(lambda line: LabeledPoint(line[0], Vectors.sparse(line[1]), mtx)) 

saveAsLibSVMFile(data, "data.libsvm") 
+0

Was ist features.txt nur kategorische Daten oder alle Funktionen? und wird der Code mit dem Entfernen aller "val" in Python arbeiten. –

+0

Alle Funktionen. Ich gehe davon aus, dass Sie bereits kategorische binäre Merkmale geändert haben. Der Code wird eine geringfügige Änderung benötigen, um mit PySpark –

+0

Dank zu arbeiten. Ich habe einige Änderungen gemacht, aber ich bekomme einen Fehler mit Zip, der sagt "Zip Argument muss Iteration unterstützen. Auch versuchte ich, indem Sie Zip-Wort, aber dann Fehler ist map() muss mindestens 2 Argumente haben. Bitte helfen. –