KNN是分类方法,对于可以计算距离的样本,给出已经分好类的样本和K值,计算待检测数据是属于哪一类.
距离用的欧式距离,求前k个距离最小的值,我的时间复杂度是O(n logn),查资料堆排序可以O(Klogn)。
测试数据来自http://download.csdn.net/download/qq_16267353/7520631
#include <iostream>
#include <vector>#include <sstream>
#include <fstream>
#include <math.h>
#include <algorithm>
#include <string>
using namespace std;
struct Node{
double dis;
double label;
Node(){}
Node(double d,int l):dis(d),label(l){}
};
bool cmp(Node a,Node b){
return a.dis<b.dis;
}