有谁知道为什么 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)
设计并不重要,我只是好奇。
是的,它是为了利用高效的矩阵运算,并且正如您所说,避免 for 循环(尤其是在 GPU 上)。对于在线请求服务,在高 QPS 系统中,请求会被分批,并对整个批次进行推理,以提高整体吞吐量。
predict
的另一个常见用途是进行离线评估,根据设计,您希望立即对大量示例进行计算。