【发布时间】:2016-09-23 18:28:58
【问题描述】:
我正在使用来自 scikit-learn 的 kdtree 和一个非常大的数据集。
我可以让 kdtree 在合理的时间内(在我的机器上 20 分钟)执行查询,但我无法在不到 1 小时的任何时间内将索引映射到它们所代表的值(我在 1 小时后停止等待)。
我加载了 2 个 csv 文件(train.csv 有 29M 记录,test.csv 有 8M 记录)。我对 3 把钥匙感兴趣。 'x','y' 是浮点数,'placeid' 是字符串。
from sklearn.neighbors import KDTree
import pandas as pd
train = pd.read_csv("train.csv")
test = pd.read.csv("test.csv")
tree = KDTree(train[['x','y']])
_, indexes = tree.query(test[['x','y']],k=30)
# takes 20 minutes to get here. Here is the code that takes more than an hour
result = [[train.iloc[idx].place_id for idx in idx_set] for idx_set in indexes]
有没有更快的方法来做到这一点?我的目标是将所有从 KDTree 返回的索引映射到 place_ids。
【问题讨论】:
标签: python python-2.7 pandas scikit-learn kdtree