书名:计算机视觉40例从入门到深度学习:OpenCV-Python
作者:李立宗
出版社:电子工业出版社
出版时间:2022-07-01
ISBN:9787121436857
第15章 机器学习导读
15.3 OpenCV中的机器学习模块
15.3.4 K近邻模块
距离是K近邻算法中非常关键的参数,在计算距离时,通常需要考虑很多因素。
1、归一化
-
对于简单的情况,直接计算与特征值的距离(差距)即可。
-
例如,在某影视剧中,已经通过技术手段获知嫌疑人的身高为186cm,受害人身高为172cm。而甲、乙二人都宣称自己是受害人,此时可以通过测量二人身高判断谁是真正的受害人:
● 甲身高为185cm,与嫌疑人身高的距离为186-185=1cm,与受害人身高的距离为185-172=7cm。甲的身高与嫌疑人的身高更接近,因此确认甲为嫌疑人。
● 乙身高为173cm,与嫌疑人身高的距离为186-173=13cm,与受害人身高的距离为173-172=1cm。
乙的身高与受害人的身高更接近,因此确认乙为受害人。 -
上面的例子是非常简单的特例。
在实际场景中,可能需要通过更多参数进行判断。例如,在某影视剧中,通过技术手段获知嫌疑人的身高为180cm,缺一根手指;受害人身高为173cm,十指健全。此时,前来投案的甲、乙二人都宣称自己是受害人。- 当有多个参数时,一般将这些参数构成列表(数组、元组)进行综合判断。
本例将(身高,手指数量)作为特征,因此,犯罪嫌疑人的特征值为(180,9),受害人的特征值为(173,10)。
此时可以对二人进行以下判断:
● 甲身高为175cm,缺一根手指,甲的特征值为(175,9)。
● 甲与犯罪嫌疑人特征值的距离为(180-175)+(9-9)=5。
● 甲与受害人特征值的距离为(175-173)+(10-9)=3。甲的特征值与受害人更接近,断定甲为受害人。
● 乙身高为178cm,十指健全,乙的特征值为(178,10)。
● 乙与嫌疑人特征值的距离为(180-178)+(10-9)=3。
● 乙与受害人特征值的距离为(178-173)+(10-10)=5。乙与犯罪嫌疑人的特征值更接近,断定乙为犯罪嫌疑人。
显然上述结果是错误的。因为身高、手指数量的权重值不同,所以在计算参数与特征值的距离时要充分考虑不同参数之间的权重值。
- 当有多个参数时,一般将这些参数构成列表(数组、元组)进行综合判断。
-
通常情况下,由于各个参数的量纲不一致等,需要对参数进行处理,让所有参数的权重值相等。
一般情况下,对参数进行归一化处理即可。在进行归一化时,一般使用特征值除以所有特征值中的最大值(或最大值与最小值的差等)。 -
对于上述案例,身高除以最高身高值180,手指数量除以10(10根手指)以获取新的特征值,
计算方式为
归一化特征=(身高/最高身高180,手指数量/10)
经过归一化后:
● 嫌疑人的特征值为(180/180,9/10)=(1,0.9)。
● 受害人的特征值为(173/180,10/10)=(0.96,1)。
此时,可以根据归一化后的特征值对甲、乙二人进行判断:
● 甲的特征值为(175/180,9/10)=(0.97,0.9)。
● 甲与嫌疑人特征值的距离为(1-0.97)+(0.9-0.9)=0.03。
● 甲与受害人特征值的距离为(0.97-0.96)+(1-0.9)=0.11。
甲与嫌疑人的特征值更接近,断定甲为犯罪嫌疑人。
● 乙的特征值为(178/180,10/10)=(0.99,1)。
● 乙与嫌疑人的特征值距离为(1-0.99)+(1-0.9)=0.11。
● 乙与受害人的特征值距离为(0.99-0.96)+(1-1)=0.03。
乙与受害人的特征值更接近,断定乙为受害人。
当然,归一化仅是多种数据预处理中常用的一种方式。
除此以外,还可以根据需要采用其他不同的方式对数据进行预处理。
例如,可以针对不同的特征采用加权处理,让不同的特征具有不同的权重值,从而体现不同特征的不同重要性。
网友评论