为什么 scikit-learn Predict(X) 方法接受 2D 矩阵而不是 1D 向量?

问题描述 投票:0回答:1

有谁知道为什么 scikit-learn 分类器和回归器的

predict(X)
方法期望输入 X 是 2D 数组(矩阵)而不是 1D 数组(向量)?我只是对设计的历史感到好奇。

使用现有的设计,如果您想预测一维向量,您可以使用 NumPy

reshape()
函数,或者使用双方括号语法,或者可能其他一些方法,轻松地将一维向量转换为二维矩阵。不要立即想到。

我怀疑现有的 scikit-learn 设计接受 2D 矩阵作为输入的原因是为了避免在 Predict(x) 方法接受 1D 向量并且您想要对多个输入进行预测时需要的极其缓慢的显式 for 循环存储为矩阵的行。

但这只是猜测。有谁知道为什么 scikit-learn

predict(X)
签名的设计决定接受 2D 矩阵而不是 1D 向量?

再次强调,接受 2D 矩阵而不是 1D 向量的

predict(X)
设计并不重要,我只是好奇。

methods scikit-learn predict
1个回答
0
投票

是的,它是为了利用高效的矩阵运算,并且正如您所说,避免 for 循环(尤其是在 GPU 上)。对于在线请求服务,在高 QPS 系统中,请求会被分批,并对整个批次进行推理,以提高整体吞吐量。

predict
的另一个常见用途是进行离线评估,根据设计,您希望立即对大量示例进行计算。

这是一个很好的答案,它讨论了为什么矩阵运算往往比 for 循环更有效。

© www.soinside.com 2019 - 2024. All rights reserved.