基于scala的Spark-mllib分类

基于scala的Spark-mllib分类,scala,apache-spark,apache-spark-mllib,Scala,Apache Spark,Apache Spark Mllib,我是Spark基础设施的新手,所以这个问题可能很愚蠢。我使用mllib进行文本分类。我有一组带有标签的句子,我将它们输入到多项式朴素贝叶斯分类器进行训练。我找到了一个例子 我的输入如下: 周三12月31日23:13:30+0000 2014,1,度过除夕,0 12月31日星期三23:14:37+0000 2014,1,大胆天使,0 周三12月31日23:14:53+0000 2014,1,罗兰·古德·吉弗,0 因此,我获取文本,并使用哈希函数将术语映射到标签{0,1}。培训结束后,我想预测未标记

我是Spark基础设施的新手,所以这个问题可能很愚蠢。我使用mllib进行文本分类。我有一组带有标签的句子,我将它们输入到多项式朴素贝叶斯分类器进行训练。我找到了一个例子

我的输入如下:

周三12月31日23:13:30+0000 2014,1,度过除夕,0

12月31日星期三23:14:37+0000 2014,1,大胆天使,0

周三12月31日23:14:53+0000 2014,1,罗兰·古德·吉弗,0

因此,我获取文本,并使用哈希函数将术语映射到标签{0,1}。培训结束后,我想预测未标记数据集的标签。现在开始我的实际问题

我没有文本文档的标签,因此无法创建标签点。我试着给出“随机”值(双精度)作为这样的标签(未标记的数据存储在不同的结构中,第(7)部分是这里的文本):

如何将处理后的数据提取到其原始形式(包括标签)?分类器生成标签,术语已转换为双精度。我只想将原始字符串与分类器生成的标签连接起来。鉴于这一投入:

16800,Wed Dec 31 23:03:23+0000 2014,空,DJVINCE1现在开始,直到8点,与您的除夕倒计时组合!!,0,中性,零,djvince现在到除夕倒计时组合

如何将生成的标签映射到此输入以获得如下输出:

16800,Wed Dec 31 23:03:23+0000 2014,空,DJVINCE1现在开始,直到8点,与您的除夕倒计时组合!!,0,中性,空,dvince现在到除夕倒计时混合,标签{0,1}


好吧,看起来我所要做的就是创建元组,包括我的原始文本和来自散列函数的向量[Double]:

val parsedData = testing.map { line =>
  val parts = line.split(',')
  val text = parts(7).split(' ')
  (line, htf.transform(text))
} 
然后将它们输入分类器,再次创建结果的元组和文本。现在我可以使用包含我想要的两个字段的结构

val predictionAndLabel2 = parsedData.map(p =>
  (p._1 , model.predict(p._2))
)

根本不需要
标签点
NaiveBayesModel.predict
采用
RDD[Vector]
Vector
。哈希函数产生我使用的向量,因为在我的例子中,我处理的是单词不是双倍。但它仍然不需要
标签点
。用于训练而不是预测。你能给出一个neutralSegment的示例吗?我很难理解你到底想做什么。
val parsedData = testing.map { line =>
  val parts = line.split(',')
  val text = parts(7).split(' ')
  (line, htf.transform(text))
} 
val predictionAndLabel2 = parsedData.map(p =>
  (p._1 , model.predict(p._2))
)