使用正确的特征名称在 Spark MLlib 中显示决策树

Displaying the decision tree in Spark MLlib with the correct feature names

我在 Spark MLLib 中构建决策树

val dt = new DecisionTreeClassifier().setLabelCol("indexedLabel").setFeaturesCol("indexedFeatures").setImpurity(impurity).setMaxBins(maxBins).setMaxDepth(maxDepth)

我是这样显示的:

    val treeModel = model.stages(1).asInstanceOf[DecisionTreeClassificationModel]
println("Learned classification tree model:\n" + treeModel.toDebugString)

结果是用 "Features X" 代替我数据集的实际特征名称的树的文本描述,使树无法解释。

任何人都知道如何使用正确的特征名称显示树,从而使树的可解释性成为可能吗?谢谢!!

Spark ML(lib) 决策树模型(从 1.6.X 版本开始)不包含特征规范。基本上,您的特征列("indexedFeatures")是一个双数组,其中各个数组元素用作连续分割阈值。

关联的 DataFrame 对象中提供了一些功能规范信息。首先,检查 "indexedFeatures" 列的元数据。如果这还不够,请查看其构成列的元数据等。

JPMML-SparkML 库可用于以 PMML 数据格式导出 Spark ML 管道模型。它的引擎执行一些漂亮的功能规范收集和(重新)构建工作。