2017-09-20 1 views
0

Ich möchte Random Forests-Algorithmus auf Pyspark ausgeführt werden. Es wird in der Pyspark documentation erwähnt, dass VectorAssembler nur numerische oder boolesche Datentypen akzeptiert. Also, wenn meine Daten StringType-Variablen enthalten, sagen Namen von Städten, sollte ich One-Hot-Codierung sie sein, um mit Random Forests Klassifizierung/Regression weiter zu machen? HierSo verwenden Sie String-Variablen in VectorAssembler in Pyspark

ist der Code Ich habe versucht, Eingabedatei here:

train=sqlContext.read.format('com.databricks.spark.csv').options(header='true').load('filename') 
drop_list = ["Country", "Carrier", "TrafficType","Device","Browser","OS","Fraud","ConversionPayOut"] 
from pyspark.sql.types import DoubleType 
train = train.withColumn("ConversionPayOut", train["ConversionPayOut"].cast("double"))#only this variable is actually double, rest of them are strings 
junk = train.select([column for column in train.columns if column in drop_list]) 
transformed = assembler.transform(junk) 

Ich erhalte die errror dass IllegalArgumentException: u'Data type StringType is not supported.'

P. S .: Wir entschuldigen uns für eine grundlegende Frage zu stellen. Ich komme aus R Hintergrund. Wenn in R Random Forests ausgeführt wird, müssen die kategorialen Variablen nicht in numerische Variablen konvertiert werden.

Antwort

1

Ja, Sie sollten StringIndexer verwenden, möglicherweise zusammen mit OneHotEncoder. Weitere Informationen zu diesen beiden finden Sie in der verknüpften Dokumentation.

Verwandte Themen