KNN算法预测性别:基于身高、体重和鞋子尺码
KNN算法预测性别:基于身高、体重和鞋子尺码
本文将通过一个案例,利用KNN算法根据身高、体重和鞋子尺码预测性别。我们将使用以下数据进行预测,其中前三列为对应的特征数据,最后一列为对应的性别标签:
[170, 65, 41, '男']
[166, 55, 38, '女']
[177, 80, 39, '女']
[179, 80, 43, '男']
[170, 60, 40, '女']
[170, 60, 38, '女']
现有特征数据[176, 71, 38, '?'],试利用KNN计算该组数据对应的性别。
KNN示意图
男
[179, 80, 43]
|
[177, 80, 39] -- 女
|
[170, 65, 41] -- 女
|
[176, 71, 38] -- ?
流程图
- 计算测试样本与训练集中每个样本的距离;
- 对距离进行排序,取前k个样本;
- 统计k个样本中各类别的数量;
- 将测试样本分为数量最多的类别。
实验过程
- 计算测试样本与训练集中每个样本的距离:
样本1:[170, 65, 41] 距离 = sqrt((170-176)^2 + (65-71)^2 + (41-38)^2) = 7.07 样本2:[166, 55, 38] 距离 = sqrt((166-176)^2 + (55-71)^2 + (38-38)^2) = 17.03 样本3:[177, 80, 39] 距离 = sqrt((177-176)^2 + (80-71)^2 + (39-38)^2) = 9.06 样本4:[179, 80, 43] 距离 = sqrt((179-176)^2 + (80-71)^2 + (43-38)^2) = 4.24 样本5:[170, 60, 40] 距离 = sqrt((170-176)^2 + (60-71)^2 + (40-38)^2) = 11.18 样本6:[170, 60, 38] 距离 = sqrt((170-176)^2 + (60-71)^2 + (38-38)^2) = 11.66
- 对距离进行排序,取前k个样本:
k = 3时,取距离最短的三个样本:样本4、样本3、样本1。
- 统计k个样本中各类别的数量:
样本4:男 样本3:女 样本1:女 数量最多的类别为女性。
- 将测试样本分为数量最多的类别:
测试样本[176, 71, 38, '?']的性别预测为女性。
实验结果分析
对于这组数据集,KNN算法的预测结果与实际结果相同,预测正确率为100%。这说明KNN算法在一定程度上可以对给定数据进行分类预测。
心得体会
KNN算法是一种简单有效的分类算法,其核心思想是通过找出距离最近的几个训练样本来预测测试样本的类别。在实际应用中,K值的选择对算法的预测效果有很大的影响,过小的K值会使算法对噪声数据过分敏感,过大的K值会使算法对数据特征的把握不够准确。因此,选择适当的K值是KNN算法应用的一个重要问题。
原文地址: https://www.cveoy.top/t/topic/omUI 著作权归作者所有。请勿转载和采集!