我想根据 python 中距质心的距离对数据进行分类

i want to classify data by distance from centroids in python

我正在制作一个图像分类器,它可以在 Python 中判断图像是否是汽车。

这是我的步骤:

  1. 从大约 200 张有汽车的图像中获取 SIFT 描述符。
  2. 在所有这些 SIFT 描述符上使用 k-means 算法并找到大约 50 质心。
  3. 使用这些质心和新图像生成训练数据 对于支持向量机。

我只想找到这些 k-mean 质心一次,然后将它们保存在文件中以供重复使用。

我的问题如下:

我有 50 个预先计算的质心。我有带有 SIFT 描述符的新图像。我想为每个描述符找到最近的质心。

例如:质心 1 最接近 5 个描述符,质心 2 最接近 12 个描述符,依此类推。然后我会将这些数据提供给 SVM。

它类似于 kmeans.predict(),但我不想每次添加新图像时都计算 k-means。

那么 python 中是否有任何函数,我在超空间中给出 50 个点(质心),在同一超空间中给出 N 个点,它会 return 我根据最近的质心分布这 N 个点?

谢谢

查看 scikit-learn 文档中有关模型持久性的文章:http://scikit-learn.org/stable/modules/model_persistence.html

使用 pickle 保存模型:

import pickle
with open('kmeans.dat', 'w') as f:
    pickle.dump(kmeans, f)

稍后您可以使用以下方式再次加载它:

with open('kmeans.dat', 'r') as f:
    kmeans = pickle.load(f)

请注意,您只能加载由相同 python 版本存储的模型。