这篇文章是介绍 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 中已有的两个矩阵,并将结果存储在一个新键中。
如果我想使用 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)。