题解|k近邻算法

k近邻算法

https://www.nowcoder.com/practice/0b71bebe172f46feaedf8a5d5ed32be1?tpId=377&tags=&title=&difficulty=&judgeStatus=&rp=0&sourceUrl=%2Fexam%2Foj&gioEnter=menu

k近邻算法是分类算法,通过计算测试样本与训练数据之间的距离,选择距离最小的k个样本作为测试样本的邻居,并根据这些邻居的类别进行投票,最终确定测试样本的类别。

步骤:

  1. 计算测试样本与训练数据之间的距离
  2. 选择距离最小的k个样本作为测试样本的邻居
  3. 根据这些邻居的类别进行投票,最终确定测试样本的类别(采用多数投票)

代码实现

def k_nearest_neighbors(X, y, test_sample, k):
    distances = np.linalg.norm(X - test_sample.T, axis=1)
    nearest_indices = np.argsort(distances)[:k]
    nearest_labels = y[nearest_indices]
    return int(np.round(np.mean(nearest_labels)))

全部评论
在label序列上求均值有意义吗, int(np.round(np.mean(nearest_labels)))不就相当于在标签列表中求k近邻的标签的均值,可是类别标签求均值没有实际意义啊。第2类和第4类求均值得到第3类,这正确吗?
1 回复 分享
发布于 05-02 15:26 上海

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务