K Nearest Neighbors
计算待测数据与样本库中每个样本的距离,得到距离最小的前K个,进行投票表决,前K个中某一类的样本数最多,则判断待测数据为此类。
一、opencv 中主要的函数有:
(1)CvKNearest::train 训练KNN模型
bool CvKNearest::train( const CvMat* _train_data, const CvMat* _responses,
const CvMat* _sample_idx=0, bool is_regression=false,
int _max_k=32, bool _update_base=false );
这个类的方法训练K近邻模型。它遵循一个一般训练方法约定的限制:只支持CV_ROW_SAMPLE数据格式,输入向量必须都是有序的,而输出可以是 无序的(当is_regression=false),可以是有序的(is_regression=true)。并且变量子集和省略度量是不被支持的。
参数_max_k 指定了最大邻居的个数,它将被传给方法find_nearest。参数 _update_base 指定模型是由原来的数据训练(_update_base=false),还是被新训练数据更新后再训练(_update_base=true)。在后一种情况下_max_k 不能大于原值, 否则它会被忽略。
(2)CvKNearest::find_nearest 寻找输入向量的最近邻
float Cv