在 Spark NaiveBayes 中处理连续数据
Posted
技术标签:
【中文标题】在 Spark NaiveBayes 中处理连续数据【英文标题】:Handling continuous data in Spark NaiveBayes 【发布时间】:2018-01-19 11:20:53 【问题描述】:根据 Spark NaiveBayes 的官方文档:
它支持多项式 NB(见此处),可以有限处理 支持离散数据。
如何(例如:某些文档中某些的百分比)?
【问题讨论】:
【参考方案1】:当前的实现只能处理二进制特征,因此为了获得良好的结果,您必须对数据进行离散化和编码。对于离散化,您可以使用Buketizer
或QuantileDiscretizer
。前一种成本较低,当您想使用一些特定领域的知识时可能更适合。
对于编码,您可以使用OneHotEncoder
进行虚拟编码。调整后的dropLast
Param
。
所以总的来说你需要:
QuantileDiscretizer
或 Bucketizer
-> OneHotEncoder
用于每个连续特征。
StringIndexer
* -> OneHotEncoder
用于每个离散特征。
VectorAssembler
结合以上所有内容。
* 或预定义的列元数据。
【讨论】:
以上是关于在 Spark NaiveBayes 中处理连续数据的主要内容,如果未能解决你的问题,请参考以下文章
Spark ML下实现的多分类adaboost+naivebayes算法在文本分类上的应用
无法在 NaiveBayes Spark 示例上将字符串转换为浮点数
Spark + Scala: NaiveBayes.train - 异常是 java.util.NoSuchElementException: next on empty iterator
spark MLlib实现的基于朴素贝叶斯(NaiveBayes)的中文文本自动分类