Есть ли способ визуализировать/построить дерево решений, созданное с использованием библиотеки mllib или ml в pyspark. Также как получить такую информацию, как количество записей в листовых узлах. Спасибо
Как визуализировать модель/объект дерева решений в pyspark?
comment
Использование python для построения дерева решений pyspark также подходит.
- person Neo   schedule 16.08.2017
Ответы (2)
Сначала вам нужно использовать model.toDebugString, чтобы получить такой вывод для вашей модели случайного леса:
"RandomForestClassificationModel (uid=rfc_6c4ceb92ba78) with 20 trees
Tree 0 (weight 1.0):
If (feature 0 <= 3="" 10="" 1.0)="" if="" (feature="" <="0.0)" predict:="" 0.0="" else=""> 6.0)
Predict: 0.0
Else (feature 10 > 0.0)
If (feature 12 <= 12="" 63.0)="" predict:="" 0.0="" else="" (feature=""> 63.0)
Predict: 0.0
Else (feature 0 > 1.0)
If (feature 13 <= 3="" 1.0)="" if="" (feature="" <="3.0)" predict:="" 0.0="" else=""> 3.0)
Predict: 1.0
Else (feature 13 > 1.0)
If (feature 7 <= 7="" 1.0)="" predict:="" 0.0="" else="" (feature=""> 1.0)
Predict: 0.0
Tree 1 (weight 1.0):
If (feature 2 <= 11="" 15="" 1.0)="" if="" (feature="" <="0.0)" predict:="" 0.0="" else=""> 0.0)
Predict: 1.0
Else (feature 15 > 0.0)
If (feature 11 <= 11="" 0.0)="" predict:="" 0.0="" else="" (feature=""> 0.0)
Predict: 1.0
Else (feature 2 > 1.0)
If (feature 12 <= 5="" 31.0)="" if="" (feature="" <="0.0)" predict:="" 0.0="" else=""> 0.0)
Predict: 0.0
Else (feature 12 > 31.0)
If (feature 3 <= 3="" 4.0)="" predict:="" 0.0="" else="" (feature=""> 4.0)
Predict: 0.0
Tree 2 (weight 1.0):
If (feature 8 <= 4="" 6="" 1.0)="" if="" (feature="" <="2.0)" predict:="" 0.0="" else=""> 10875.0)
Predict: 1.0
Else (feature 6 > 2.0)
If (feature 1 <= 1="" 36.0)="" predict:="" 0.0="" else="" (feature=""> 36.0)
Predict: 1.0
Else (feature 8 > 1.0)
If (feature 5 <= 4="" 0.0)="" if="" (feature="" <="4113.0)" predict:="" 0.0="" else=""> 4113.0)
Predict: 1.0
Else (feature 5 > 0.0)
If (feature 11 <= 11="" 2.0)="" predict:="" 0.0="" else="" (feature=""> 2.0)
Predict: 0.0
Tree 3 ...
Сохраните его в каком-нибудь файле .txt, а затем используйте: https://github.com/tristaneljed/Decision-Tree-Visualization-Spark
person
Tiffany
schedule
17.08.2017
У нас есть что-то только в pyspark вместо использования d3.js. Также model.toDebugString не дает, какой % данных поступает в каждый узел.
- person Neo; 23.08.2017
Вы можете получить количество статистических данных всех листовых узлов, таких как примесь, усиление, Джини, массив элементов, классифицированных по каждой метке файлом данных модели.
Файл данных находится там, где вы сохраняете модель/данные/
model.save(location)
modeldf = spark.read.parquet(location+"data/*")
Этот файл содержит большую часть необходимых метаданных для дерева решений или даже randomForest. Вы можете извлечь всю необходимую информацию, например.
noderows = modeldf.select("id","prediction","leftChild","rightChild","split").collect()
df = pd.Dataframe([[rw['id'],rw['gain],rw['impurity'],rw['gini']] for rw in noderows if rw['leftChild'] < 0 and rw['rightChild'] < 0])
df.show()
person
pratiklodha
schedule
15.02.2019