使用k-近邻算法改进约会网站的配对效果以及手写数字识别测试

创建k-近邻算法分类器

def classify0(inX,dataSet,labels,k):
	## inX:用于分类的输入向量
	## dataSet:输入的训练样本集
	## labels:训练样本标签
	## k:选择的近邻数目
    dataSetSize=dataSet.shape[0] ##样本集的数目
    diffMat=tile(inX,(dataSetSize,1))-dataSet ##输入向量与训练样本相减
    sqDiffMat=diffMat**2 ##两个样本点之间的距离的平方
    sqDistance=sqDiffMat.sum(axis=1) ##所有样本点之间距离的平方相加
    distance=sqDistance**0.5 ##所有样本点之间距离的平方和开根号
    sorted_d=distance.argsort() ##对其进行排序
    classCount={
   }
    for i in range(k):
        votel=labels[sorted_d[i]] ##距离从小到大的样本点对应类别
        classCount[votel]=classCount.get(votel,0)+1 ##该类别的数目加1
    sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) ##排序
    return sortedClassCount[0][0] ##选取第一个即为分类结果

读取约会数据

数据存放在一个名为datingTestSet2.txt的文件中,每个样本数据占据一行,共1000行,每行包含三个特征。
在这里插入图片描述

def file2matrix(filename):
    fr=open(filename)
    arrayOLines=fr.readlines()
    numberarray
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值