基于身高、体重、鞋码预测性别:KNN算法实现及可视化
基于身高、体重、鞋码预测性别:KNN算法实现及可视化
本文将使用K近邻算法 (KNN) 来预测性别。假设我们拥有以下数据集,前三列分别代表身高、体重、鞋子尺码,最后一列为对应的性别标签。
[170, 65, 41, '男']
[166, 55, 38, '女']
[177, 80, 39, '女']
[179, 80, 43, '男']
[170, 60, 40, '女']
[170, 60, 38, '女']
现在,我们有一个新的数据点 [176, 71, 38, ''],需要利用KNN算法预测其对应的性别。
KNN算法实现
以下是用Python编写的KNN算法代码:
import math
def knn(data, new_point, k):
# 计算新数据点与已有数据点的距离
distances = []
for point in data:
dist = math.sqrt((point[0]-new_point[0])**2 + (point[1]-new_point[1])**2 + (point[2]-new_point[2])**2)
distances.append((dist, point[3]))
# 按距离从小到大排序
distances.sort()
# 取出前k个距离最小的数据点
neighbors = distances[:k]
# 统计k个数据点中各类别出现的次数
votes = {}
for neighbor in neighbors:
label = neighbor[1]
if label in votes:
votes[label] += 1
else:
votes[label] = 1
# 返回出现次数最多的类别作为预测结果
max_votes = 0
max_label = ''
for label, count in votes.items():
if count > max_votes:
max_votes = count
max_label = label
return max_label
# 已有数据
data = [[170,65,41,'男'],
[166,55,38,'女'],
[177,80,39,'女'],
[179,80,43,'男'],
[170,60,40,'女'],
[170,60,38,'女']]
# 新数据
new_point = [176,71,38,'']
# k值
k = 3
# 预测性别
result = knn(data, new_point, k)
print('预测性别为:', result)
KNN算法示意图

KNN算法流程图

通过以上代码和示意图,我们可以清晰地了解KNN算法的工作原理,并将其应用于性别预测等实际问题中。需要注意的是,该模型的准确性取决于训练数据集的质量和k值的选择。在实际应用中,需要根据具体情况进行调整和优化。
原文地址: https://www.cveoy.top/t/topic/omXL 著作权归作者所有。请勿转载和采集!