kNN(k-nearest-neighbor)算法的Python实现

kNN算法即k近邻算法,是机器学习领域几乎最简单的入门算法,属于可以直接调用各类机器学习算法库中封装好的kNN算法,自己实现起来也并不麻烦,本文实现的是kNN算法的分类算法。

k近邻算法是非常特殊的,可以被认为是没有模型的机器学习算法,但为了和其他算法相统一,可以认为训练数据集就是模型本身。

kNN算法原理:对于需要预测的数据样本,找出测试数据中相隔最近的K个数据样本,统计出K个样本中占比最高的所属类别,即为预测数据的所属类型。

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

raw_data_X = [[3.393533211, 2.331273381],
              [3.110073483, 1.781539638],
              [1.343808831, 3.368360954],
              [3.582294042, 4.679179110],
              [2.280362439, 2.866990263],
              [7.423436942, 4.696522875],
              [5.745051997, 3.533989803],
              [9.172168622, 2.511101045],
              [7.792783481, 3.424088941],
              [7.939820817, 0.791637231]
             ]                                 # 训练数据的feature
raw_data_Y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]    # 训练数据的label

X_train = np.array(raw_data_X)
y_train = np.array(raw_data_Y)


x_test = np.array([8.093607318, 3.365731514])    #待测试的数据的feature
distances = []                                   #存储测试数据到训练数据distance的list
for this_train in X_train:
    d = sqrt(np.sum( (this_train-x_test)**2 ))   #两feature的平方和开方即是距离
    distances.append(d)


nearest = np.argsort(distances)                  #排序,返回距离从小到大值对应的索引下标

K = 3                                            #比较最近距离的3个样本
nearK_y = [y_train[i] for i in nearest[:K]]
votes = Counter(nearK_y)
votes.most_common(1)[0][0]

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值