机器学习_KNN(K近邻算法numpy版)(附:手写数字0-9数据集及测试)

本文介绍了K近邻算法(KNN)的工作机制,强调了其无训练过程的特点,主要依赖于样本和距离计算。在实际应用中,通过计算测试输入与所有样本的距离,选择最近的K个样本,依据多数投票原则进行预测。文章还提供了手写数字0-9数据集的链接,并提及了预测结果。
摘要由CSDN通过智能技术生成

     knn工作机制简单,其没有训练过程,在训练阶段只是把样本存起来。当有测试输入时,根据选取的距离计算方式,计算与每个样本的距离,然后选取距离最小的前k个样本中类别最多的那个为预测结果。

   预测结果与计算距离方法有关,与K的选取有关。

"""KNN from 机器学习实战 19 页"""
import numpy as np


def create_dataset():
    group = np.array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
    labels = ['A', 'A', 'B', 'B']
    return group, labels


def classify(inx, data_set, labels, k):
    data_set_size = data_set.shape[0]
    diff_mat = np.tile(inx, (data_set_size, 1)) - data_set
    # np.tile(a,(2,1))第一个参数为Y轴扩大倍数,第二个为X轴扩大倍数.变为与数据集维度相同
    sqdiff_mat = diff_mat ** 2
    sqdistances = sqdiff_mat.sum(axis=1)
    distances = sqdistances ** 0.5
    # 以上求出了目标值,与样本各点的欧氏距离
    sorted_dis = distances.argsort()
    class_count = {}
    for i in range(k):
        temp_label = labels[sorted_dis[i]]
        class_count[tem
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值