我正在尝试使用Spark的MLLib构建一个NaiveBayes分类器,该分类器将一组文档作为输入。apache spark MLLib:如何构建字符串特征的标记点?
我想放些东西作为特征(即作者,明确的标签,关键字隐,类别),但看着the documentation似乎一个LabeledPoint
只包含双打,即它看起来像LabeledPoint[Double, List[Pair[Double,Double]]
。
相反,我从我的代码的其余部分输出将是类似于LabeledPoint[Double, List[Pair[String,Double]]
。
我可以弥补自己的转换,但它似乎很奇怪。我该如何处理这个使用MLLib?我相信答案在HashingTF
类(即哈希特征),但我不明白这是如何工作的,它似乎需要某种容量值,但我的关键字和主题列表是有效无界的(或更好,在开始时是未知的)。
谢谢,只是一个额外的说明:如果我理解正确,'HashingTF'中的'numFeatures'基本上被用作'mod'值,用于将特征数量绑定到给定的最大值?如果是这样,不应该只是'Double.MAX_VALUE'?或者是使用它的想法,即它可以将不同的特征限制在给定的范围内并限制交叉碰撞? (即在1..N中放置某种特征,在N..2N中放置某些特征,你会在同一种类中碰撞,但不是交叉类型) – riffraff 2014-12-16 09:21:54
是的,计算看起来像'features [hash(feature) %numFeatures] + = 1'。创建的向量通常用作某个模型的输入,所以使用'Double.MAX_VALUE'将意味着一个巨大的模型。哈希技巧的主要动机之一是减少内存。您当然可以按照您建议的方式创建功能,但我不确定如何评估这种方法的好处。 – mrmcgreg 2014-12-16 13:54:09
当然啊我在想稀疏向量,所以没有考虑数组的大小。谢谢你的帮助! – riffraff 2014-12-17 08:34:48