机器学习--KNN基本实现

# _*_ coding _*_
import numpy as np
import math
import operator

def get_data(dataset):
    x = dataset[:,:-1].astype(np.float)
    y = dataset[:,-1]
    return x,y
# def cal_dis(a,b):
#     x1,y1 = a[:]
#     x2,y2 = b[:]
#     dist = math.sqrt(math.pow(2,x2)-math.pow(2,x1))

def knnclassifer(dataset,predict,k=3):
    x,y = get_data(dataset)
    dic = {}
    distince = np.sum((predict-x)**2,axis=1)**0.5
    sorted_dict = np.argsort(distince)#[2 1 0 3 4]
    countLabel = {}
    for i in range(k):
        label = y[sorted_dict[i]]
      #  print(i,sorted_dict[i],label)
        countLabel[label] = countLabel.get(label,0)+1
    new_dic = sorted(countLabel,key=operator.itemgetter(0),reverse=True)
    return new_dic[0][0]

if __name__ == '__main__':
    dataset = np.loadtxt("dataset.txt",dtype=np.str,delimiter=",")

    predict = [2,2]
    label  = knnclassifer(dataset,predict,3)
    print(label)

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值