Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用apachesparkmlib进行查询分类_Scala_Apache Spark - Fatal编程技术网

Scala 使用apachesparkmlib进行查询分类

Scala 使用apachesparkmlib进行查询分类,scala,apache-spark,Scala,Apache Spark,我知道很多关于机器学习的知识,但对scala和spark来说是新手。由于Spark API而被卡住,请告知 我有一个txt文件,每行格式如下 #label \t # query, a strong of words, delimited by space 1 wireless amazon kindle 2 apple iPhone 5 1 kindle fire 8G 2 apple iPad 第一个字段是标签,第二个字段是字符串 我的计划是将数据拆分为标签和特征,使用内置

我知道很多关于机器学习的知识,但对scala和spark来说是新手。由于Spark API而被卡住,请告知

我有一个txt文件,每行格式如下

#label \t   # query, a strong of words, delimited by space
1  wireless amazon kindle

2  apple iPhone 5

1  kindle fire 8G

2  apple iPad
第一个字段是标签,第二个字段是字符串 我的计划是将数据拆分为标签和特征,使用内置函数Word2Vec将字符串转换为稀疏向量(我假设它首先使用单词包获取dict),然后使用SVMWithSGD进行分类训练

object QueryClassification {


  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("Query Classification").setMaster("local")
    val sc = new SparkContext(conf)
    val input = sc.textFile("spark_data.txt")

    val word2vec = new Word2Vec()

    val parsedData = input.map {line =>
      val parts = line.split("\t")

      ## How to write code here? I need to parse into feature vector 
      ## properly and then apply word2vec function after the map
      *LabeledPoint(parts(0).toDouble, ????)*   
    }

    ## * is the item I got from parsing parts(1) above
    word2vec.fit(*)  





    val numIterations = 20
    val model = SVMWithSGD.train(parsedData,numIterations)


  }
}

非常感谢

如果你使用word2vec算法,你应该用字符串的单词来训练word2vec

val vocabulary = input.map {line =>
  val parts = line.split("\t")
  val partWords = parts(1).split(" ")
  partWords.toSeq
}
val word2vec = new Word2Vec()
val wordModel = word2vec.fit(vocabulary)
对于词汇表中的单词,您可以从wordModel.transform(word)获得单词向量。 因为SVM需要具有两个值(0或1)的LabelPoint,所以我不知道如何将label字段转换为两个值