机器学习实战学习记录

1、k近邻算法

k近邻算法的一般流程:
(1)收集数据:可以使用任何方法。

(2)准备数据:距离计算所需要的数值,最好是结构化的数据格式。

(3)分析数据:可以使用任何方法。

(4)测试算法:计算错误率。

(5)使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。

两点间距离公式

 

import numpy as py

group = py.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])  #标签位置
labels = ['A','A','B','B']  #标签

# inX:输入的测试向量

# k:代表频率,选择前k个距离最近的点,计算出k个点的频率,取频率最高的作为预测分类

def kNN(inX,group,labels,k):
    dataSize = group.shape[0]  #取行
    diffMat = py.tile(inX,(dataSize,1))-group #生成与group相同大小的列表,元素都是inX,然后减去group
    sqDiffMat = diffMat**2 # 对列表平方
    sqDistances = sqDiffMat.sum(axis=1) #平方值相加
    distances = sqDistances ** 0.5 #开方
    sortedDis = distances.argsort() #返回从小到大的排序值下标  [1,43,2] 返回 [0,2,1]
    classCount={}
    for i in range(k):
        voteiLabel = labels[sortedDis[i]] #取出前K个距离最近的标签
        classCount[voteiLabel] = classCount.get(voteiLabel,0)+1 #统计出现频率
    sortedclassCount = sorted(classCount.items(),key=lambda x : x[1],reverse=True) #按照频率降序排列
    return sortedclassCount[0][0] #返回第一个

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值