python分类器knn、svm_KNN算法(一)python实践1-----简单分类器构造

from numpy import *

import operator

group = array([[4.0,4.1],[1.0,4.0],[0,0.0],[0,0.1]])

labels = ["A","A","B","B"]

def classify0(inX, dataSet, labels, k):

dataSetSize = dataSet.shape[0]#读取样本数组行数

#使用tile函数,复制测试数组元素按样本数组行列形式,并进行数组的减法

diffMat = tile(inX, (dataSetSize,1)) - dataSet

sqDiffMat = diffMat**2#相减的值求平方

sqDistances = sqDiffMat.sum(axis=1)#按行累加求平方和

distances = sqDistances**0.5#对平方和求根

sortedDistIndicies = distances.argsort()#通过argsort函数返回从小到大的距离数组的索引值数组

classCount={}

for i in range(k):

voteIlabel = labels[sortedDistIndicies[i]]#由索引值循环读取分类标志

classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1

#返回关键字voteIlabel的值,并将值加1,如果关键字voteIlabel不存在,则返回0

'''sorted(iterable,cmp,key,reverse)

iterable:是可迭代类型 cmp:用于比较的函数

key:用列表元素的某个属性或函数作为关键字,有默认值,迭代集合中的一项'''

sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)

#classCount.items()是字典中元组形式的键值对

#使用键值对中的第二个项即键值中的值进行降序排序,reverse = true为降序,reverse = false为升序,

#默认为升序,sorted可以返回副本元组,赋值给sortedClassCount

print(sortedClassCount[0][0])#打印列表中最大元素的类别

print(sortedClassCount)

classify0([1,1],group,labels,3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值