浅析kNN

kNN算法中文名是k-近邻算法

他的工作原理是:存在一个训练数据集(样本数据集)这个数据集中每一份数据都有一个标签,我们知道训练数据集中的样本数据和他所属的类型。然后我们在输入新的没有标签的数据的时候我们可以根据算法得到新输入的数据的类型。

一般的我们选择前k个最相近的数据所以算法的名称叫 k-近邻算法。(k 一般是不大于20的整数)

k-近邻算法的一般流程

1) 收集数据

2)准备数据 :计算距离,结构化的数据格式有助于批量处理

3)分析数据

4)训练算法:k-近邻算法无需训练

5)测试算法:计算错误率

6)应用:

 

按照流程来做一下海伦约会

我将已整理好的结构化数据放在下方:

链接:https://pan.baidu.com/s/1hCiXvwfuSs1DsGDeek4j0w 
提取码:vxd7

这两份数据都是整理好的差别是datingTestSet中 有字符串而第二份中是使用123代表三种状态我们更倾向使用第二份

这数据中分别是

每年飞行里程数,玩游戏所耗时间百分比 ,每周吃冰淇淋公升数,第四列中123分别代表不喜欢,很小的魅力,很大魅力

 

定义函数file2matrix()

def file2matrix(filename):
    fr = open(filename)
    arrayOLines = fr.readlines()  #读取文件每一行 就是讲文件存储到矩阵中了
    numberOfLines = len(arrayOLines) #得到文件的行数
    returnMat = zeros((numberOfLines,3))#建立一个矩阵 矩阵是全零的行数是文件行数,列数是三列
    classLabelVector = []           #建立一个空矩阵
    index = 0                       #一个临时变量=0
    for line in arrayOLines:    # 循环 每一行在整个文件的矩阵中过一遍那意思
        line = line.strip()         #每一行去掉头尾空白
        listFromLine = line.split('\t')#制表
        returnMat[index,:] = listFromLine[0:3]#前三列012给到returnMat[0,:][1,:]...
        classLabelVector.append(int(listFromLine[-1]))#分类的标签向量挂上 取listFromLine最后一个
                                                #数据集中最后一列代表着标签
        index += 1 #参数增加1 这样能一行行矩阵写下来 对应着文件的每一行
    return returnMat,classLabelVector#得到矩阵和标签 矩阵是前三列的数据做成相对应的矩阵
                                        #标签是一行不停的往上挂

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值