【问题标题】:ChiSqSelector - Real Features - SparkChiSqSelector - 真实功能 - Spark
【发布时间】:2016-09-21 21:03:31
【问题描述】:

我正在使用 Spark 1.6 构建一个 NB 模型,并使用 ChiSqSelector 来识别主要功能。我总共有 7 个功能并在寻找前 3 个功能。虽然过程运行良好,但我将如何识别被评为顶级功能的实际功能。由于数据已分类,我无法将输出映射到实际输入列。

val chidata = cat_recs.map(r => (r.getDouble(targetInd), Vectors.dense(featuresidx.map(r.getDouble(_)).toArray))).toDF("target","features")
val sel = new ChiSqSelector().setNumTopFeatures(3).setFeaturesCol("features").setLabelCol("target").setOutputCol("selectedFeatuers")
val chiresult = sel.fit(chidata).transform(chidata)

输出是

scala> chiresult.foreach(println)
[1.0,[0.0,2.0,0.0,5.0,7.0,5.0,1.0],[0.0,5.0,7.0]]
[1.0,[4.0,3.0,0.0,5.0,7.0,5.0,1.0],[0.0,5.0,7.0]]
[0.0,[3.0,2.0,0.0,5.0,7.0,5.0,3.0],[0.0,5.0,7.0]]
[1.0,[1.0,2.0,0.0,1.0,7.0,5.0,2.0],[0.0,1.0,7.0]]
[1.0,[0.0,2.0,0.0,1.0,7.0,5.0,3.0],[0.0,1.0,7.0]]

结构——目标:双精度,特征:向量,选定特征:向量 综上所述,我们以第一行为例

[1.0,[0.0,2.0,0.0,5.0,7.0,5.0,1.0],[0.0,5.0,7.0]]

我如何识别它在 selectedFeatures 中指的是哪个 0.0,同样在第 5 行中也是如此。

请帮忙..

谢谢

巴拉

【问题讨论】:

    标签: scala apache-spark apache-spark-mllib


    【解决方案1】:

    在你的例子中:

    [1.0,[0.0,2.0,0.0,5.0,7.0,5.0,1.0],[0.0,5.0,7.0]]
    

    最后一列[0.0,5.0,7.0] 表示所选特征的值,在本例中为特征 2、3 和 4(从 0 开始计数)。要提取未来的索引,只需使用

    val model = sel.fit(chidata)
    val importantFeatures = model.selectedFeatures
    

    【讨论】:

    • 感谢您的回复。我知道我可以获得 selectedFeatures,但我的问题是,我怎么知道 selectedFeatures 中的 0.0 是第 0 个索引而不是第 2 个。 [1.0,[0.0,2.0,0.0,5.0,7.0,5.0,1.0],[0.0,5.0,7.0]] selectedFeatures(0) = 0.0 selectedFeatures(1) = 5.0 selectedFeatures(2) = 7.0 在我们拥有的数据中两个 0.0 怎么能说 selectedFeatures(0) 是第一个 0.0 而不是后面的 0.0 谢谢
    • 'selectedFeatures' 返回 'Array[Int]' 索引,而不是值,所以在你的情况下,这应该返回 (2, 3, 4) 这意味着选定的特征是第 3、第 4 和第 5 列.
    • 感谢您的回复。 **不幸的是,当我执行以下 scala> chiresult.select("selectedFeatures").show +----------------+ |selectedFeatures| +----------------+ | [2.0,1.0,7.0]| | [0.0,1.0,7.0]| | [0.0,1.0,7.0]|我似乎得到了值而不是 Array[Int] **
    • 不要选择列,它是模型中的一种方法,完全按照我的答案使用model.selectedFeatures
    • 不客气。如果有效,请选择它作为答案:-)
    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多