【发布时间】:2018-08-19 03:31:39
【问题描述】:
我读过一篇论文,他们的检索系统基于 SIFT 描述符和fast approximate k-means clustering。我安装了pyflann。如果我没记错的话,以下命令只会找到特定样本的接近数据点的索引(例如,这里是从dataset 到 testset 的 5 个最近点的索引)
from pyflann import *
from numpy import *
from numpy.random import *
dataset = rand(10000, 128)
testset = rand(1000, 128)
flann = FLANN()
result,dists = flann.nn(dataset,testset,5,algorithm="kmeans",
branching=32, iterations=7, checks=16)
我浏览了用户手册,但是,可以找到如何使用FLANN 进行k-means clusterin。以及如何根据集群中心拟合测试。因为我们可以在scikitlearn 中使用kmeans++ 聚类,然后我们根据模型拟合数据集:
kmeans=KMeans(n_clusters=100,init='k-means++',random_state = 0, verbose=0)
kmeans.fit(dataset)
稍后我们可以使用KDTree 为测试集分配标签。
kdt=KDTree(kmeans.cluster_centers_)
Q=testset #query
kdt_dist,kdt_idx=kdt.query(Q,k=1) #knn
test_labels=kdt_idx #knn=1 labels
有人可以帮助我如何对FLANN 使用相同的程序吗? (我的意思是对数据集进行聚类(找到聚类中心并量化特征),然后根据上一步找到的聚类中心量化测试集。
【问题讨论】:
标签: python cluster-analysis hierarchical-clustering flann cbir