apache spark mllib naive bayes LabeledPoint 用法

Posted

技术标签:

【中文标题】apache spark mllib naive bayes LabeledPoint 用法【英文标题】:apache spark mllib naive bayes LabeledPoint usage 【发布时间】:2015-03-31 21:52:51 【问题描述】:

我想使用 spark mllib naive bayes 来处理(训练和测试)这样的数据

男,疑酒,平日,12am-4am,75,30-39

这样我就可以测试标签男/女/未知。我想创建一个 LabeledPoint,以便可以针对 mllib 朴素贝叶斯算法运行此数据。 spark网站上的例子

https://spark.apache.org/docs/1.0.0/mllib-naive-bayes.html

仅显示全为数字的数据。是否可以使用这样的字符串数据运行?我了解我的测试标签需要转换为双精度值,即男性/女性/未知 => 1.0 / 2.0 / 3.0

如果是这样,我如何使用这种类型的语法将上面的 CSV 数据转换为 LabelPoint?

val parsedData = data.map  line =>
  val parts = line.split(',')
  LabeledPoint(
    parts(0).toDouble, 
    Vectors.dense(parts(1).split(' ').map(_.toDouble)))

【问题讨论】:

您能否提供更好的训练数据集样本? 【参考方案1】:

我现在明白我需要枚举我的数据,以便我使用 spark mllib 朴素贝叶斯来处理向量。我要处理的数据如下所示。

Male,Suspicion of Alcohol,Weekday,12am-4am,75,30-39
Male,Moving Traffic Violation,Weekday,12am-4am,0,20-24
Male,Suspicion of Alcohol,Weekend,4am-8am,12,40-49
Male,Suspicion of Alcohol,Weekday,12am-4am,0,50-59
Female,Road Traffic Collision,Weekend,12pm-4pm,0,20-24
Male,Road Traffic Collision,Weekday,12pm-4pm,0,25-29
Male,Road Traffic Collision,Weekday,8pm-12pm,0,Other
Male,Other,Weekday,8am-12pm,23,60-69
Male,Moving Traffic Violation,Weekend,12pm-4pm,26,30-39
Female,Road Traffic Collision,Weekend,4am-8am,61,16-19
Male,Moving Traffic Violation,Weekend,4pm-8pm,74,25-29
Male,Road Traffic Collision,Weekday,12am-4am,0,Other
Male,Moving Traffic Violation,Weekday,8pm-12pm,0,16-19
Male,Road Traffic Collision,Weekday,8pm-12pm,0,Other
Male,Moving Traffic Violation,Weekend,4am-8am,0,30-39

幸运的是,这是英国警方的交通违规数据,所有字段都包含一组值,即男性/女性/未知。因此,如果我为每列中的每个数据项分配数值,我最终会得到这样的数据集

0,3 0 0 75 3
0,0 0 0 0 1
0,3 1 1 12 4
0,3 0 0 0 5
1,2 1 3 0 1
0,2 0 3 0 2
0,2 0 5 0 8
0,1 0 2 23 6
0,0 1 3 26 3
1,2 1 1 61 0
0,0 1 4 74 2
0,2 0 0 0 8
0,0 0 5 0 0
0,2 0 5 0 8
0,0 1 1 0 3

我知道我可以直接在 scala 中运行朴素贝叶斯。

【讨论】:

以上是关于apache spark mllib naive bayes LabeledPoint 用法的主要内容,如果未能解决你的问题,请参考以下文章

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

Apache Spark Mllib

Apache Mahout 和 Apache Spark 的 MLlib 有啥区别?