实验过程:

  1. 导入必要的库,读取数据;
  2. 定义欧氏距离计算函数;
  3. 对新数据进行分类,先计算与所有数据的距离,再根据K值选择最近的K个数据;
  4. 根据K个最近数据的标签,通过投票的方式确定新数据的标签;
  5. 输出结果。

代码如下:

# 导入必要的库
import numpy as np
import operator

# 读取数据
data = np.array([
    [170, 65, 41, '男'],
    [166, 55, 38, '女'],
    [177, 80, 39, '女'],
    [179, 80, 43, '男'],
    [170, 60, 40, '女'],
    [170, 60, 38, '女']
])

# 定义欧氏距离计算函数
def euclidean_dist(x1, x2):
    return np.sqrt(np.sum(np.square(x1 - x2)))

# 对新数据进行分类
def classify_knn(x, data, k):
    # 计算与所有数据的距离
    dists = np.array([euclidean_dist(x[:3], d[:3]) for d in data])
    # 根据距离排序,获取前K个最近的数据的索引
    idx = np.argsort(dists)[:k]
    # 根据K个最近数据的标签,通过投票的方式确定新数据的标签
    label_cnt = {}
    for i in idx:
        label = data[i][-1]
        label_cnt[label] = label_cnt.get(label, 0) + 1
    sorted_label_cnt = sorted(label_cnt.items(), key=operator.itemgetter(1), reverse=True)
    return sorted_label_cnt[0][0]

# 测试
x = np.array([176, 71, 38])
k = 3
label = classify_knn(x, data, k)
print('预测性别为:', label)

实验结果分析: 根据KNN算法,将测试数据[176, 71, 38]分类为女性。

心得体会: KNN算法是一种简单有效的分类算法,可以用于解决许多实际问题。在实现KNN算法时,需要注意距离计算方式、K值的选择、标签的投票方式等。通过实验,我更加深入地理解了KNN算法的原理和实现方法,也学会了利用Python进行KNN分类

根据身高、体重、鞋子尺码预测性别现有如下数据前三列为对应的特征数据最后一列为对应的性别标签。1706541‘男’1665538‘女’1778039‘女’1798043‘男’1706040‘女’1706038‘女’现有特征数据1767138‘?’试利用KNN计算改组数据对应的性别。要求:用python绘制KNN示意图和流程图写出实验过程和完整代码分析实验结果总结心得体会

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

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