dot Redis 8 来了—并且是开源的

了解更多

Redis-ML 简介(第四部分)

这篇文章是介绍 Redis-ML 模块的系列文章的第四部分。该系列的第一篇文章可以在这里找到。

在这篇文章中,我们将了解 Redis-ML 模块提供的矩阵运算,并展示一些如何使用 Redis 数据库处理矩阵数据的示例。

技术要求

这篇文章中的示例代码是用 Python 编写的,需要运行 Redis-ML 的 Redis 实例。有关设置 Redis 的说明可以在本系列的第一部分或第二部分中找到。

Redis 中的矩阵

来自 Wikimedia 矩阵乘法文章的矩阵乘法图

矩阵在机器学习、统计学、金融和许多其他领域中都很常见,因此将它们添加到 Redis 中是自然之举。Redis-ML 模块将矩阵添加为原生 Redis 数据类型。它还提供了结合矩阵以创建新值的数学运算。

读取和写入矩阵值通过 ML.MATRIX.SET 和 ML.MATRIX.GET 命令执行,它们具有以下语法

ML.MATRIX.SET key n m entry11 .. entrynm
ML.MATRIX.GET key

在使用 Redis-ML 模块时,请记住命令使用行优先格式。 ML.MATRIX.MULTIPLY 和 ML.MATRIX.ADD 命令支持乘法和加法。

ML.MATRIX.MULTIPLY a b result
ML.MATRIX.ADD a b result

这些命令结合了 Redis 中已有的两个矩阵,并将结果存储在一个新键中。

如果我想使用 Redis-ML 模块计算一个基本的矩阵方程,例如 y = Ax + b,我将在 Redis CLI 中输入以下命令

127.0.0.1:6379> ML.MATRIX.SET a 3 3 4 0 0 0 2 0 0 0 1
127.0.0.1:6379> ML.MATRIX.SET x 3 1 1 4 1
127.0.0.1:6379> ML.MATRIX.SET b 3 1 1 1 1
127.0.0.1:6379> ML.MATRIX.MULTIPLY a x tmp
127.0.0.1:6379> ML.MATRIX.ADD tmp b y
127.0.0.1:6379> ML.MATRIX.GET y

1) (integer) 3
2) (integer) 1
3) "5"
4) "9"
5) "2"

Redis 将结果返回给我们的客户端,其中包含矩阵的形状(在本例中为 3 行 1 列),然后是矩阵的每个元素(按行优先顺序排列)。

我还可以使用以下代码计算矩阵方程 A’ = cA(其中 c 是标量值)

127.0.0.1:6379> ML.MATRIX.SET a 3 3 4 0 0 0 2 0 0 0 1
127.0.0.1:6379> ML.MATRIX.SCALE a 3
127.0.0.1:6379> ML.MATRIX.GET a

 1) (integer) 3
 2) (integer) 3
 3) "12"
 4) "0"
 5) "0"
 6) "0"
 7) "6"
 8) "0"
 9) "0"
10) "0"
11) "3"

矩阵用于广泛的应用,从线性变换到表示多元概率分布。在下一篇文章中,我们将了解决策树和随机森林,这是 Redis 支持的另外两种分类模型。

如果您对本系列中的这篇文章或之前的文章有任何疑问,请在 Twitter 上与我联系 (@tague)。