Используя treeWeights
:
treeWeights
Возвращает веса для каждого дерева
Новое в версии 1.5.0.
Итак
Как модель фактически выполняет классификацию, не зная ни одного из них.
Веса сохраняются, простоне как часть метаданных.Если у вас есть model
from pyspark.ml.classification import RandomForestClassificationModel
model: RandomForestClassificationModel = ...
и сохраните его на диск
path: str = ...
model.save(path)
, вы увидите, что программа записи создает подкаталог treesMetadata
.Если вы загрузите содержимое (по умолчанию средство записи использует Parquet):
import os
trees_metadata = spark.read.parquet(os.path.join(path, "treesMetadata"))
вы увидите следующую структуру:
trees_metadata.printSchema()
root
|-- treeID: integer (nullable = true)
|-- metadata: string (nullable = true)
|-- weights: double (nullable = true)
, где weights
столбец содержит вес дереваидентифицируется treeID
.
Аналогично данные узла хранятся в подкаталоге data
(см., например, Извлечение и визуализация деревьев моделей из Sparklyr ):
spark.read.parquet(os.path.join(path, "data")).printSchema()
root
|-- id: integer (nullable = true)
|-- prediction: double (nullable = true)
|-- impurity: double (nullable = true)
|-- impurityStats: array (nullable = true)
| |-- element: double (containsNull = true)
|-- gain: double (nullable = true)
|-- leftChild: integer (nullable = true)
|-- rightChild: integer (nullable = true)
|-- split: struct (nullable = true)
| |-- featureIndex: integer (nullable = true)
| |-- leftCategoriesOrThreshold: array (nullable = true)
| | |-- element: double (containsNull = true)
| |-- numCategories: integer (nullable = true)
Эквивалентная информация (за исключением данных дерева и весов дерева) доступна также для DecisionTreeClassificationModel
.