机器学习实战第一节,K近邻算法

本文介绍了K近邻算法的基础知识,并通过numpy库中的函数进行数据处理,如tile函数、数组的相加操作和argsort函数。还讨论了如何使用K近邻算法解决约会网站问题,将数字图片转化为文本识别,最终得到约1.16%的错误率。
摘要由CSDN通过智能技术生成
import numpy as np
import operator

def createDataSet():
  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 classify0(inX, dataset, labels, k):
    '''
        inX:输入向量
        dataset:数据集中X向量
        labels:数据集的标签集合
        k:k-近邻算法中的K

        return:输入向量的标签
    '''
    size = dataset.shape[0]

    '''
        计算欧氏距离
    '''
    d_value = np.tile(inX, (size, 1)) - dataset
    sqrt_value = d_value**2
    sum_value = sqrt_value.sum(axis=1)
    distance = sum_value**0.5
    sort_dis_index = distance.argsort()
    class_count = {}
    for i in range(k):
        label = labels[sort_dis_index[i]]
        class_count[label] = class_count.get(label, 0) + 1

    '''
        根据class_count的第二个字段进行排序
        reverse=true: 降序
        reverse=false: 升序
    '''
    sort_label_index = sorted(class_count.items(), key = operator.itemgetter(1), reverse = True)

    return sort_label_index[0][0]


numpytile函数

tile(x,(row,col))

x:要重复的数据

row:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值