码迷,mamicode.com
首页 > 其他好文 > 详细

KNN-Basics

时间:2020-05-11 18:53:19      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:m60   avd   row   topk   down   tgid   Koa   jdb   oba   

kNN 基础

import numpy as np
import matplotlib.pyplot as plt

实现我们自己的 kNN

创建简单测试用例

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]
             ]
raw_data_y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
X_train = np.array(raw_data_X)
y_train = np.array(raw_data_y)
X_train
array([[ 3.39353321,  2.33127338],
       [ 3.11007348,  1.78153964],
       [ 1.34380883,  3.36836095],
       [ 3.58229404,  4.67917911],
       [ 2.28036244,  2.86699026],
       [ 7.42343694,  4.69652288],
       [ 5.745052  ,  3.5339898 ],
       [ 9.17216862,  2.51110105],
       [ 7.79278348,  3.42408894],
       [ 7.93982082,  0.79163723]])
y_train
array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1])
plt.scatter(X_train[y_train==0,0], X_train[y_train==0,1], color=‘g‘)
plt.scatter(X_train[y_train==1,0], X_train[y_train==1,1], color=‘r‘)
plt.show()
技术图片

预测:

x = np.array([8.093607318, 3.365731514])

plt.scatter(X_train[y_train==0,0], X_train[y_train==0,1], color=‘g‘)
plt.scatter(X_train[y_train==1,0], X_train[y_train==1,1], color=‘r‘)
plt.scatter(x[0], x[1], color=‘b‘)
plt.show()
技术图片

kNN的过程

from math import sqrt
distances = []
for x_train in X_train:
    d = sqrt(np.sum((x_train - x)**2))
    distances.append(d)
distances
[4.812566907609877,
 5.229270827235305,
 6.749798999160064,
 4.6986266144110695,
 5.83460014556857,
 1.4900114024329525,
 2.354574897431513,
 1.3761132675144652,
 0.3064319992975,
 2.5786840957478887]
distances = [sqrt(np.sum((x_train - x)**2))
             for x_train in X_train]
distances
[4.812566907609877,
 5.229270827235305,
 6.749798999160064,
 4.6986266144110695,
 5.83460014556857,
 1.4900114024329525,
 2.354574897431513,
 1.3761132675144652,
 0.3064319992975,
 2.5786840957478887]
np.argsort(distances)
array([8, 7, 5, 6, 9, 3, 0, 1, 4, 2])
nearest = np.argsort(distances)
k = 6
topK_y = [y_train[neighbor] for neighbor in nearest[:k]]
topK_y
[1, 1, 1, 1, 1, 0]
from collections import Counter
votes = Counter(topK_y)
votes
Counter({0: 1, 1: 5})
votes.most_common(1)
[(1, 5)]
predict_y = votes.most_common(1)[0][0]
predict_y
1

KNN-Basics

标签:m60   avd   row   topk   down   tgid   Koa   jdb   oba   

原文地址:https://www.cnblogs.com/JasperZhao/p/12870699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!