算法之K最近邻算法

【算法定义】

K最近邻(K-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别。

【算法图示】

有两个水果,一个是橙子,一个是柚子,让机器判断哪个是橙子,哪个是柚子?一般而言,柚子更大,更红。抽样了一些数据,描述如下:

算法之K最近邻算法

现在加入一个未知的水果,如何判断这个水果是橙子还是柚子。找到它的三个邻居,橙子比柚子多,因此这个水果很有可能是橙子。

算法之K最近邻算法

算法之K最近邻算法

从上图可以知道,水果A和B比较相似。下面来度量它们有多像。要计算两点间的距离,可以使用毕达哥拉斯公式

算法之K最近邻算法

例如,A和B的距离如下

算法之K最近邻算法

【程序设计】

/*********************************************************************************
	*Function:				knn_algorithm
	*Parameter1:			参数1:计算的数组
	*Parameter2:			参数2:数组的长度
	*Description:			k最近邻算法,传入参数1数组,然后传入参数2数组长度进行必达哥拉斯公式
							的计算,数组数据的平方和然后再开根号。
	*Output:				temp 公式计算的结果
**********************************************************************************/

int16_t knn_algorithm(int16_t *num,int16_t length)
{
	uint8_t i;
	int16_t temp;
	temp = 0;

	for(i = 0; i < length; i++)
	{
		temp+=(num[i]*num[i]);
	}

	temp = sqrt(temp);
	return temp;
}

 

上一篇:int16, int32, int64等类型说明


下一篇:Adafruit_SSD1306库学习