共计 1753 个字符,预计需要花费 5 分钟才能阅读完成。
Alink 是基于 Flink 的机器学习算法平台,欢送拜访 Alink 的 GitHub 获取更多信息。本文次要分享 Alink 的应用技巧之一,Alink 如何读写 LIBSVM 格局数据。LIBSVM 数据格式就是 LIBSVM(csie.ntu.edu.tw/~cjlin/)应用的数据格式,是机器学习畛域中比拟常见的一种模式。其格局定义如下:
<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。
咱们将 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 技术交换群 ▼