我正在嘗試使用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