基于身高、体重、鞋码预测性别: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算法流程图

KNN算法流程图

通过以上代码和示意图,我们可以清晰地了解KNN算法的工作原理,并将其应用于性别预测等实际问题中。需要注意的是,该模型的准确性取决于训练数据集的质量和k值的选择。在实际应用中,需要根据具体情况进行调整和优化。


原文地址: https://www.cveoy.top/t/topic/omXL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录