在 Spark NaiveBayes 中处理连续数据

Posted

技术标签:

【中文标题】在 Spark NaiveBayes 中处理连续数据【英文标题】:Handling continuous data in Spark NaiveBayes 【发布时间】:2018-01-19 11:20:53 【问题描述】:

根据 Spark NaiveBayes 的官方文档:

它支持多项式 NB(见此处),可以有限处理 支持离散数据。

如何(例如:某些文档中某些的百分比)?

【问题讨论】:

【参考方案1】:

当前的实现只能处理二进制特征,因此为了获得良好的结果,您必须对数据进行离散化和编码。对于离散化,您可以使用BuketizerQuantileDiscretizer。前一种成本较低,当您想使用一些特定领域的知识时可能更适合。

对于编码,您可以使用OneHotEncoder 进行虚拟编码。调整后的dropLastParam

所以总的来说你需要:

QuantileDiscretizerBucketizer -> 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)的中文文本自动分类

spark.mllib源码阅读-分类算法2-NaiveBayes

在 python 中处理不同数据类型的 NaiveBayes 分类器