AI算法--1.K近邻算法

学习笔记,自liuyubobo老师,慕课网
**

K近邻算法

**

0 目录结构

在这里插入图片描述

1.1 基础

用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。
在这里插入图片描述
k=3 ,找图中新的点(绿色)最近的3个点(k个点),所以蓝色和红色的比例为3:0,认为绿色的点更接近蓝色。
在这里插入图片描述

思路:求距离 -> 距离排序,取前 k 个 ->取前k个值出现的次数y -> 统计前k个值出现的次数->取top值,作为预测值。

import numpy as np
from math import sqrt
from collections import Counter

def kNN_classify(k, X_train, y_train, x):
    assert 1 <= k <= X_train.shape[0], "k must be valid"
    assert X_train.shape[0] == y_train.shape[0], \
        "the size of X_train must equal to the size of y_train"
    assert X_train.shape[1] == x.shape[0], \
        "the feature number of x must be equal to X_train"
    distances = [sqrt(np.sum((x_train - x)**2)) for x_train in X_train]
    nearest = np.argsort(distances)
    topK_y = [y_train[i] for i in nearest[:k]]
    votes = Counter(topK_y)

    return votes.most_common(1)[0][0]

1.2 超参数

在这里插入图片描述
1.2.1 距离
有一个问题是当前kNN考虑的是测试点和周围 k 个点的颜色比例,如果 k == 6,蓝色和红色比例为 5 :1,所以输出结果为蓝色,但是并没有考虑真实的距离因素,因此可以在这里优化,使用距离。
在这里插入图片描述
考虑距离时,下述绿色的点,可以推测为红色,并不是之前的蓝色,另一个好处是解决平票的情况:
在这里插入图片描述
1.2.2 明可夫斯基距离的p超参数
提升了准确度至 -> 0.9888888
在这里插入图片描述

1.3 数据归一化

normalization,适用于分布有明显边界的情况
问题背景:样本间的距离被发现时间所主导,不能使用天,所以将发现时间归一化为年。

1.3.1 最值归一化
在这里插入图片描述
1.3.2 均值方差归一化
把所有数据归一到均值为0方差为1的分布中
3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值