关于机器学习:如何实现-DataFrame-和-Alink-批式数据的互相转化

38次阅读

共计 1421 个字符,预计需要花费 4 分钟才能阅读完成。

Alink 提供了 collectToDataframe() 和 fromDataframe() 办法,实现了 DataFrame 和 Alink 批式数据的互相转化。

Alink 批式数据 -> DataFrame

Alink 的批式数据源或者计算结果,如果能转成 Python 的 DataFrame 模式,则能够利用 Python 丰盛的函数库及可视化性能,进行后续的剖析和显示。

Alink 中每个批式数据源或批式算子都反对 collectToDataframe() 办法,不须要输出参数,返回的后果就是 DataFrame。留神,该办法中带有 collect 字样,表明其执行过程中会应用 Flink 的 collect 办法,触发 Flink 工作执行。

示例如下,咱们应用 CsvSourceBatchOp 读取 UCI 网站的 iris.data 数据。

source = CsvSourceBatchOp()\
    .setFilePath("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data")\
    .setSchemaStr("sepal_length double, sepal_width double, petal_length double, petal_width double, category string")

而后调用变量 source 的 collectToDataframe() 办法,失去相应的 DataFrame,付给变量 df_iris。

df_iris = source.collectToDataframe()

到这里,咱们就曾经实现了 Alink 数据到 Python DataFrame 的转化,上面咱们就能够应用 Python 的函数,进一步解决 df_iris,譬如:应用 head() 办法,显示前 5 条数据。

df_iris.head()

运行后果为:

DataFrame -> Alink 批式数据

对于 DataFrame 模式的数据,Alink 提供了 fromDataframe() 办法,将数据转换为 Alink 批式数据。具体应用示例如下:

iris = BatchOperator.fromDataframe(df_iris, "sepal_length double, sepal_width double, petal_length double, petal_width double, category string")

应用 Alink 批式算子 BatchOperator 的静态方法 fromDataframe(),第一个参数为 DataFrame 数据,第二个参数为数据 Schema 的形容,因为 DataFrame 的数据类型与 Alink 有点差别,通过设置 schema 参数,能够严格保障转化后的数据与咱们冀望的统一。对于 Schema String 更多的介绍能够参见:

Alink Schema String 简介
https://zhuanlan.zhihu.com/p/…

最初,咱们看一下转换后的 Alink 批式数据 iris,取前 5 条数据进行打印输出,代码如下:

iris.firstN(5).print()

结果显示为:

以上。Alink 是基于 Flink 的机器学习算法平台,欢送拜访 Alink 的 GitHub 获取下载链接及更多信息。也欢送退出 Alink 开源用户群进行交换~

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

▼ 钉钉扫码退出 Alink 技术交换群 ▼

正文完
 0