1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Alink如何读写Libsvm格式数据【Alink使用技巧】

Alink如何读写Libsvm格式数据【Alink使用技巧】

时间:2019-05-28 16:59:53

相关推荐

Alink如何读写Libsvm格式数据【Alink使用技巧】

LIBSVM数据格式就是LIBSVM(https://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html)使用的数据格式,是机器学习领域中比较常见的一种形式。其格式定义如下:

<label> <index1>:<value1> <index2>:<value2> ...

第一项<label> 是训练数据集的目标值,对于分类问题,用整数做为类别的标识(对于2分类,多用{0,1}或者{-1,1}表示;对于多分类问题,常用连续的整数,譬如用{1,2,3}表示3分类的各个类别);对于回归问题,目标值是实数。其后是由若干索引<index>和数值<value>对(以冒号“:”作为分隔符)构成,各项以空格作为分隔符。索引<index>是以1开始的整数,可以是不连续的;数值<value>为实数。

下面是几条符合LIBSVM格式的数据。

1 1:-0.555556 2:0.5 3:-0.79661 4:-0.916667 1 1:-0.833333 3:-0.864407 4:-0.916667 1 1:-0.444444 2:0.416667 3:-0.830508 4:-0.916667 1 1:-0.611111 2:0.0833333 3:-0.864407 4:-0.916667 2 1:0.5 3:0.254237 4:0.0833333 2 1:0.166667 3:0.186441 4:0.166667 2 1:0.444444 2:-0.0833334 3:0.322034 4:0.166667

注意这条数据:

2 1:0.5 3:0.254237 4:0.0833333

没有索引值为2的项,表明第2个特征值为0。

我们将https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/iris.scale下载到本地,命名为iris.scale.libsvm。通过调用LibSvmSourceBatchOp读取数据,只需指定一个参数,即文件的路径。并取其前3条数据进行打印显示。

iris_libsvm = LibSvmSourceBatchOp()\.setFilePath("/Users/yangxu/alink/data/iris/iris.scale.libsvm")iris_libsvm.firstN(3).print()

输出结果如下,最左边为打印显示的数据索引号,接下来是数据的标签列(列名自动命名为label),然后是数据的特征数据列(列名自动命名为features)。

下面,我们对原始的数据采样10条数据,然后使用LibSvmSinkBatchOp保存采样的结果,注意,这里除了保存的路径还要指定三个参数,前两个是数据的标签列名称和特征数据列名称,最后一个参数OverwriteSink,表示保存操作执行时,如果目标文件已经存在,是否进行覆盖。在脚本的最后,调用BatchOperator.execute(),执行任务。

iris_libsvm \.sampleWithSize(10) \.link(LibSvmSinkBatchOp()\.setFilePath("/Users/yangxu/alink/data/iris/iris.scale.sample.libsvm")\.setLabelCol('label')\.setVectorCol('features')\.setOverwriteSink(True))BatchOperator.execute()

最后,我们验证一下保存的结果文件,即读取iris.scale.sample.libsvm并打印输出。

LibSvmSourceBatchOp().setFilePath("/Users/yangxu/alink/data/iris/iris.scale.sample.libsvm").print()

输出结果为:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。