如何将具有多类的 LibSVM 文件转换为 RDD [labelPoint]
Posted
技术标签:
【中文标题】如何将具有多类的 LibSVM 文件转换为 RDD [labelPoint]【英文标题】:how to convert LibSVM file with multi classes into an RDD[labelPoint] 【发布时间】:2014-12-05 15:16:32 【问题描述】:使用 org.apache.spark.mllib.util.MLUtils 包中的以下方法,将 LIBSVM 格式的二进制标记数据加载到 RDD[LabeledPoint] 中,自动确定特征数和默认分区数。
def loadLibSVMFile(sc: SparkContext, path: String): RDD[LabeledPoint]
我的问题是加载具有多类标签的数据? 在多类标记数据上使用此方法时……它正在转换为二进制标记数据…… 有没有办法将 LibSVM 格式的多类数据加载到 RDD[LabeledPoint]...??
同一个包中还有另外一种方法,描述如下
将 LIBSVM 格式的标签数据加载到 RDD[LabeledPoint] 中,默认分区数。
def loadLibSVMFile(sc: SparkContext, path: String, numFeatures: Int): RDD[LabeledPoint]
但是当我尝试使用它时,会出现错误显示“found Int ,requires Boolean”
【问题讨论】:
【参考方案1】:您使用的是什么版本的 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.0 2.0 7.0 3.0
这对我来说似乎是正确的
【讨论】:
以上是关于如何将具有多类的 LibSVM 文件转换为 RDD [labelPoint]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python 和 pandas 将 Csv 文件转换为 libsvm?