2016-09-29 5 views
0

Das könnte Naiv sein, aber ich habe gerade mit PySpark und Spark angefangen. Bitte hilf mir, die Eine Heiße Technik in Pyspark zu verstehen. Ich versuche OneHotEncoding auf einer der Spalten zu machen. Nach einer Hot-Codierung fügt das Datenrahmenschema einen Vektor hinzu. Um den Machine Learning-Algorithmus anzuwenden, sollten jedoch einzelne Spalten zum vorhandenen Datenrahmen hinzugefügt werden, wobei jede Spalte eine Kategorie darstellt, nicht jedoch die Spalte für den Vektortyp. Wie kann die OneHotEncoding validiert werden?PySpark- OneHotEncoding

Mein Code:

stringIndexer = StringIndexer(inputCol="business_type", outputCol="business_type_Index") 
    model = stringIndexer.fit(df) 
    indexed = model.transform(df) 
    encoder = OneHotEncoder(dropLast=False, inputCol="business_type_Index", outputCol="business_type_Vec") 
    encoded = encoder.transform(indexed) 
    encoded.select("business_type_Vec").show() 

Diese Anzeige:

+-----------------+ 
|business_type_Vec| 
+-----------------+ 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
| (2,[0],[1.0])| 
+-----------------+ 
only showing top 20 rows 

Die neu hinzugefügte Spalte ist der Vektortyp. Wie kann ich das in einzelne Spalten jeder Kategorie konvertieren

+0

Dies ist das erwartete Verhalten, das Sie nicht in einzelne Spalten konvertieren müssen, da Spark ML mit Feature-Vektoren arbeitet. – mtoto

Antwort

0

Sie haben wahrscheinlich bereits eine Antwort, aber vielleicht wird es für jemand anderen hilfreich sein. Für Vektor Split, können Sie diese Antwort verwenden (ich überprüft haben, dass es funktioniert):

How to split dense Vector into columns - using pyspark

Aber ich glaube nicht, dass Sie Vektor zurück in Spalten umwandeln müssen (wie mtoto schon gesagt), wie Alle Modelle in Funke erfordern tatsächlich, dass Sie Eingabe-Features im Vektorformat bereitstellen (bitte korrigieren Sie mich, wenn ich falsch liege).