spark-scala-string特征提取计算奇异值分解

spark-scala-string特征提取计算奇异值分解,string,scala,apache-spark,feature-extraction,svd,String,Scala,Apache Spark,Feature Extraction,Svd,我有一个以下格式的csv: doy|uuid|gender|conf|age_range|cat1|cat1score|cat2|cat2score|cat3|cat3score|main_hour_range|main_location| 为了计算奇异值分解,我需要一个行矩阵 val mat:行矩阵=。。。 我应该用这样的东西来创造: val inputData = sc.textFile("my.csv").map{ line => val parts = line.split(

我有一个以下格式的csv:

doy|uuid|gender|conf|age_range|cat1|cat1score|cat2|cat2score|cat3|cat3score|main_hour_range|main_location|
为了计算奇异值分解,我需要一个行矩阵

val mat:行矩阵=。。。 我应该用这样的东西来创造:

val inputData = sc.textFile("my.csv").map{ line =>
  val parts = line.split("\t")
  (parts(0).toLong, parts(1).toInt, parts(2).toDouble...)
}
我的问题是: 考虑到矩阵的向量需要由数值组成,如何管理csv中具有字符串值的功能

  • 第(3)部分的性别可以是:U(未知)M(男性)F(女性)
  • 第(5)部分是字符串形式的范围:“19-49”
  • 第(13)部分是通用字符串

  • 提前感谢

    ,因此,就像图像处理应用程序一样,您需要按照奇异值分解要计算的关系对字符串数据进行量化。有关如何量化的一些示例?要将字符串转换为向量并对其进行处理,您实际上是在尝试将整个字符串分解为标记/单词,并尝试评估单词之间的关系。如果您想了解字符串如何转换为向量,请查看Spark的Mlib word2vec(一种神经网络),单词被翻译成向量的地方。@GameOfThrows…谢谢你的回答…实际上我的目标不是创建一个向量,而是创建一个将字符串转换为数值的映射:经过一些搜索,我找到了这个解决方案:从ML功能/提取包或映射->distinct->zipWithUniqueId转换中的StringIndexer。@fase_jhn今年,我不确定你是否还在寻找答案,或者你是否已经找到了答案。但是,仅仅使用StringIndexer对您没有帮助。您需要将StringIndexer与热编码(OneHotEncoder)耦合。如果您还需要更多详细信息,请告诉我。因此,就像图像处理应用程序一样,您将需要量化奇异值分解要计算的关系中的字符串数据。有关如何量化的一些示例?要将字符串转换为向量并对其进行处理,您实际上是在尝试将整个字符串分解为标记/单词,并尝试评估单词之间的关系。如果您想了解字符串如何转换为向量,请查看Spark的Mlib word2vec(一种神经网络),单词被翻译成向量的地方。@GameOfThrows…谢谢你的回答…实际上我的目标不是创建一个向量,而是创建一个将字符串转换为数值的映射:经过一些搜索,我找到了这个解决方案:从ML功能/提取包或映射->distinct->zipWithUniqueId转换中的StringIndexer。@fase_jhn今年,我不确定你是否还在寻找答案,或者你是否已经找到了答案。但是,仅仅使用StringIndexer对您没有帮助。您需要将StringIndexer与热编码(OneHotEncoder)耦合。如果你还需要更多的细节,请告诉我。