首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用scala的星星之火mllib分类

使用scala的星星之火mllib分类
EN

Stack Overflow用户
提问于 2016-09-20 11:40:18
回答 1查看 137关注 0票数 1

我是星火基础设施的新手,所以这个问题可能很傻。我使用mllib进行文本分类。我有一组带有标签的句子,我将这些句子提供给MultinomialNaiveBayes分类器进行训练。我找到了一个例子。

我的意见如下:

星期三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,loren good give,0

代码语言:javascript
复制
var htf = new HashingTF(2000000)
val parsedData = data.map { line =>
      val parts = line.split(',')
      LabeledPoint(parts(1).toDouble, htf.transform(parts(2).split(' ')))
    }
val model = NaiveBayes.train(parsedData, lambda = 1.0, modelType = "multinomial")

因此,我使用文本,并使用散列函数将这些术语映射到标签{0,1}。培训结束后,我希望预测未标记数据集的标签。这里开始我的实际问题。

我没有文本文档的标签,所以我无法创建LabeledPoints。我尝试将“随机”值(双)作为这样的标签(未标记的数据存储在不同的结构中,第(7)部分是这里的文本):

代码语言:javascript
复制
val testing = sc.textFile("neutralSegment.txt")
val parsedData = testing.map { line =>
  val parts = line.split(',')
  htf.transform(parts(7).split(' '))
}
val predictionAndLabel = parsedData.map(p => (model.predict(p)))

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

16800,Wed 12月31日23:03:23 +0000 2014年,零,DJVINCE1现在到8点和你的除夕倒计时组合!!,0,中性,零,现在到新年前夜倒计时混合。

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

16800,Wed 12月31日23:03:23 +0000 2014年,空,DJVINCE1现在到8点和你的除夕倒计时组合!!,0,中性,空,现在到新年前夜倒计时混合,标签{0,1}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-20 14:56:29

好的,我所要做的就是创建元组,包括原始文本和哈希函数中的VectorDouble:

代码语言:javascript
复制
val parsedData = testing.map { line =>
  val parts = line.split(',')
  val text = parts(7).split(' ')
  (line, htf.transform(text))
} 

然后将它们提供给分类器,并再次创建结果的元组加上文本。现在我可以使用包含我想要的两个字段的结构。

代码语言:javascript
复制
val predictionAndLabel2 = parsedData.map(p =>
  (p._1 , model.predict(p._2))
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39593106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档