如何有效地找到我的测试行和列车集之间的欧氏距离?

时间:2018-01-31 06:30:15

标签: python machine-learning scipy scikit-learn data-science

我将date count 2017-11-20 1 2017-11-20 1 2017-11-20 2 2017-12-01 6 2017-12-01 4 2017-12-10 3 2017-12-10 6 2017-12-10 6 test设置为以下维度,所有要素(即列)为整数。
train
X_train.shape

(990188L, 19L)
X_test.shape

我想找出(424367L, 19L)集的所有行和train集的所有行之间的欧氏距离。 我还必须从距离阈值为test的火车组中删除行。 我有一个以下线性代码,它太慢但工作正常。

0.005

我记下距离阈值内的行的索引。 有没有办法并行化这段代码? 我尝试使用for a in range(X_test.shape[0]): a_test = np_Test[a] for b in range(X_train.shape[0]): a_train = np_Train[b] if(a != b): dst = distance.euclidean(a_test, a_train) if(dst <= 0.005): train.append(b) 但由于数据集很大,我收到内存错误。

我尝试使用from sklearn.metrics.pairwise import euclidean_distances批量生成代码,但有些我认为以下代码无法正常工作。 如果有任何方法可以并行化代码,请帮助我。

euclidean_distances

1 个答案:

答案 0 :(得分:0)

使用scipy.spatial.cdist。这将计算成对距离。

感谢Warren Weckesser指出了这个解决方案。