一、基于KD树和线性搜索的KNN实现,并与cuda加速对比
实验过程:基于KD树和线性搜索以及Cuda加速的KNN实现,使用wxpython作UI交互。需要全部代码请私聊。
二、效果展示
1.UI界面
2.源码
代码如下(示例):
# -*- coding = UTF-8 -*-
import numpy as np
import time
class KNN(object):
def __init__(self, Pointlist1, Pointlist2, labelList, K):
self.Pointlist1 = np.array((0, 0))
self.Pointlist2 = np.array((0, 0))
self.labelList = np.array((0, 0))
self.K = np.array((0, 0))
def KNN_algo(self):
for i in range(np.size(Pointlist2, 0)):
temparray = np.tile(Pointlist2[i:i + 1, :], np.size(Pointlist1, 0))
distance = (temparray - Pointlist1) ** 2
distance = distance.sum(axis=0)
distance = np.vstack((distance, np.arange(0, np.size(Pointlist1, 0))))
value = a[np.argsort(distance[0, :]), 0]
valueindex = np.argsort(distance[0, :])
valueindex = valueindex[:self.K]
总结
基于KD树以及线性搜索分别实现了KNN,并使用cuda进行gpu加速对比了运行速度,最后进行了UI展示。