python - 为什么 sklearn 的 pairwise_distances 比 pairwise_distances 慢很多,即使在计算相同的数据时也是如此?我们如何改进paired_distances?
问题描述
我一直在运行这个简单的代码来计算 X 的距离矩阵:
import numpy as np
from sklearn.metrics import pairwise_distances
from sklearn.metrics.pairwise import paired_distances
import time
n = 10000
X = np.random.RandomState(0).rand(n, 5)
t0 = time.time()
pairwise_distances(X, X)
print(time.time() - t0)
X_tile = np.tile(X, (n, 1))
X_repeat = np.repeat(X, n, axis=0)
t1 = time.time()
paired_distances(X_tile, X_repeat)
print(time.time() - t1)
这将返回(在我的笔记本电脑上,一台 2014 MacBook Pro):
7.2921271324157715
448.4537389278412
这两个函数实际上返回了相同的值。是什么让paired_distances
60x 比 慢pairwise_distances
?如果,比如说,我们需要使用paired_distances
-- 可能是因为我们正在寻找矩阵中的点到不同(可能是随机的)邻居集之间的距离(比如,在矩阵X
中,我需要距离X[0]
to X[1], X[2]
,而对于X[1]
,我需要距离X[2], X[3]
等...)我们如何提高其性能?
解决方案
推荐阅读
- linkedin - Linkedin 资产上传状态抛出 403
- bash - perl 在单个 bash 脚本中组合 perl one 衬里和脚本
- prestashop-1.7 - 无法更改主题 PrestaShop 1.7.3.1
- php - laravel 5.6 默认身份验证中的自定义字段导致错误
- javascript - 如何创建使用其他列数据的数据表列?
- mysql - Angular + NodeJS + mySQL 如何设置?
- c++ - 数组中的元素异常变化
- python - 从 .py 文件访问 StringProperty 到 .kv 文件中的 TextInput
- angular - 在 Angular 4 Jasmin 测试中,我因意外的测试用例而被抛出 [object ErrorEvent]
- uitableview - 使用 UITableViewAutomaticDimension 根据 UITableViewCell 中的文本长度设置标签的宽度和高度