【问题标题】:Displaying the decision tree in Spark MLlib with the correct feature names在 Spark MLlib 中显示具有正确特征名称的决策树
【发布时间】:2016-11-06 13:29:42
【问题描述】:

我在 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)

结果是带有“特征 X”的树的文本描述,而不是我的数据集的实际特征名称,从而使树无法解释。

任何人都得到了指针来显示具有正确特征名称的树,从而使树的可解释性成为可能?谢谢!!

【问题讨论】:

    标签: apache-spark machine-learning decision-tree


    【解决方案1】:

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

    在关联的DataFrame 对象中有一些可用的功能规范信息。首先,查看“indexedFeatures”列的元数据。如果这还不够,请查看其组成列的元数据等。

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

    【讨论】:

    • 感谢您的回答,您知道如何检查 indexedFeatures 的组成列吗?
    • 如果特征向量是使用VectorAssembler组装的,那么可以通过VectorAssembler#getInputCols()获取组成列的名称。
    猜你喜欢
    • 2021-06-07
    • 2016-09-04
    • 2016-07-29
    • 2017-10-18
    • 2016-10-07
    • 2021-03-01
    • 2014-09-22
    • 2017-03-02
    • 2015-10-25
    相关资源
    最近更新 更多