Alink 如何读写 LIBSVM 格式数据?

本文介绍了如何使用 Alink 平台读取和写入 LIBSVM 格式数据。Alink 是基于 Flink 的机器学习算法平台,支持读取 LIBSVM 文件,如 iris.scale.libsvm,并可通过 LibSvmSourceBatchOp 和 LibSvmSinkBatchOp 进行数据操作。文中展示了读取、采样和保存 LIBSVM 数据的步骤,并提供了验证保存结果的方法。
摘要由CSDN通过智能技术生成

Alink 是基于 Flink 的机器学习算法平台,欢迎访问 Alink 的 GitHub 获取更多信息。本文主要分享 Alink 的使用技巧之一,Alink 如何读写 LIBSVM 格式数据。LIBSVM 数据格式就是 LIBSVM(csie.ntu.edu.tw/~cjlin/)使用的数据格式,是机器学习领域中比较常见的一种形式。其格式定义如下:

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

第一项

下面是几条符合 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。

我们将 csie.ntu.edu.tw/~cjlin/ 下载到本地,命名为 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()

输出结果为:

以上。Alink 是基于 Flink 的机器学习算法平台,欢迎访问 Alink 的 GitHub 链接获取更多信息。也欢迎加入 Alink 开源用户群进行交流~

Alink GitHub 链接:
https://github.com/alibaba/Alink

▼ 钉钉扫码加入 Alink 技术交流群 ▼

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值