如何将具有多类的LibSVM文件转换为RDD [labelPoint]

时间:2014-10-10 12:38:40

标签: apache-spark libsvm apache-spark-mllib

使用org.apache.spark.mllib.util.MLUtils包中的以下方法,将LIBSVM格式的二进制标记数据加载到RDD [LabeledPoint]中,自动确定功能数量和默认分区数。 / p>

def loadLibSVMFile(sc: SparkContext, path: String): RDD[LabeledPoint]

我的问题是加载多类标签的数据? 在多类标记数据上使用此方法时......它将转换为二进制标记数据。 有没有办法将LibSVM格式的多类数据加载到RDD [LabeledPoint] ...... ??

在同一个包中还有一个方法,其中包含以下描述

将LIBSVM格式的标记数据加载到RDD [LabeledPoint]中,并使用默认的分区数。

def loadLibSVMFile(sc: SparkContext, path: String, numFeatures: Int): RDD[LabeledPoint]

但是当我试图使用它时,显示错误"找到Int,需要布尔"

1 个答案:

答案 0 :(得分:0)

您使用的是什么版本的Spark?我刚用过这个文件 http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/glass.scale

Spark 1.1和以下代码:

val lbldRDD = MLUtils.loadLibSVMFile(sc,svmFile)
lbldRDD.map(_.label).collect().toSet.map(println)

我看到输出:

5.0 1.0 6 2.0 7 3.0

这似乎对我来说是正确的