这篇文章是介绍 Redis-ML 模块的一系列文章中的第四篇。 本系列的第一篇文章可以在 这里 找到。
在这篇文章中,我们将研究 Redis-ML 模块提供的矩阵运算,并展示一些使用 Redis 数据库处理矩阵数据的示例。
技术要求
这篇文章中的示例代码是用 Python 编写的,需要运行 Redis-ML 的 Redis 实例。 有关设置 Redis 的说明可以在本系列的 第一部分 或 第二部分 中找到。
Redis 中的矩阵
矩阵在机器学习、统计、金融和其他领域很常见,因此它们是 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 中的矩阵组合起来,并将结果存储在一个新的键中。
如果我想计算一个基本的矩阵方程,例如 y = Ax + b,使用 Redis-ML 模块,我会在 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)。