2016-05-03 6 views
3

Ich trainierte DecisionTreeClassifier Modell eine Pipeline wie diese verwenden:Get toDebugString von DecisionTreeClassifier in PySpark ML

from pyspark.ml import Pipeline 
from pyspark.ml.feature import VectorAssembler, StringIndexer 
from pyspark.ml.classification import DecisionTreeClassifier 

cl = DecisionTreeClassifier(labelCol='target_idx', featuresCol='features') 
pipe = Pipeline(stages=[target_index, assembler, cl]) 
model = pipe.fit(df_train) 

# Prediction and model evaluation 
predictions = model.transform(df_test) 

wo die Stufen Instanzen StringIndexer und VectorAssembler sind. Ich kann nun die Genauigkeit des Modells beispielsweise mit

mc_evaluator = MulticlassClassificationEvaluator(
labelCol="target_idx", predictionCol="prediction", metricName="precision" ) 

accuracy = mc_evaluator.evaluate(predictions) 
print("Test Error = {}".format(1.0 - accuracy)) 

bewerten. Großartig. Jetzt muss ich die Baummodellstruktur überprüfen. Die Dokumente verweisen mich auf ein Attribut namens toDebugString, aber das ML DecisionTreeClassifier hat dieses nicht - es scheint ein Attribut nur für den MLLib DecisionTree Klassifikator zu sein. Wie kann ich die Baumstruktur aus dem Modell innerhalb der Pipeline von der ML-Version abrufen und grafisch darstellen?

+0

Ausgabe offen: https://issues.apache.org/jira/browse/SPARK-15092 – Ivan

Antwort

2

Dieser arbeitete für mich in pyspark:

model.stages[2]._call_java('toDebugString') 
+0

Dies ist für jetzt eine gute Abhilfe ist. Die JIRA, die ich eingereicht habe, hat ein paar Änderungen angestellt, um diese Fälle zu behandeln. Sie können die Geschichte hier folgen: https://github.com/apache/spark/pull/12919/commits/91c293af911d173670fb71857a38601745322285 – Ivan