The K-neighbors Algorithm

Simply said ,the K-Neighbors is going to find K nearest featuresets to the data you want to predict.And then we begin a vote.(The vote is about the classification of the featuresets)

if we have the most votes(classification ) in K.,Like K=5 ,and we have 3 featuresets are Class A. 2 featuresets are Class B.We defined the classsification of  the data we want to predict is A, and the confidence would be 3/5.

import random
import numpy as np
import pandas as pd
from collections import Counter
import warnings
import math

def k_nearest_neighbors(data,predict,k=3):
    if len(data) >=k:
        warnings.warn('K is set to less than the groups')
    distances = []
    for group in data:
        for features in data[group]:
            euclidean_distance = np.linalg.norm(np.array(features)-np.array(predict))
            distances.append([euclidean_distance,group])

    votes = [i[1] for i in sorted(distances)[:k]]
    print(Counter(votes).most_common(1))
    vote_result = Counter(votes).most_common(1)[0][0]

    return vote_result

df = pd.read_csv("breast-cancer-wisconsin.data.txt")
df.replace('?',-99999,inplace = True)
df.drop(['id'],1,inplace= True)
full_data=df.astype(float).values.tolist()
random.shuffle(full_data)
test_size = 0.2
train_set = {2:[],4:[]}
test_set= {2:[],4:[]}
train_data = full_data[:-int(test_size*len(full_data))]
test_data = full_data[-int(test_size*len(full_data)):]
for i in train_data:
    train_set[i[-1]].append(i[:-1])
for i in test_data:
    test_set[i[-1]].append(i[:-1])

correct = 0
total = 0

for group in test_set:
    for data in test_set[group]:
        vote = k_nearest_neighbors(train_set,data,k=5)
        if group == vote:
            correct += 1
        total +=1
print('Accuracy: ',correct/total)

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值