看完了机器学习实战该书的第一个算法,记录第一个小例子。
def createDataSet():
group=array([[1.0,1.1],[1.0,1.0],[0,0],[1,0.1]])
labels=['A','A','B','B']
return group,labels
获取数据
def classify0(inx,dataset,labels,k):
datasetsize=dataset.shape[0]
diffmat=tile(inx,(datasetsize,1))-dataset
sqdiffmat=diffmat**2
sqdistances=sqdiffmat.sum(axis=1)
distances=sqdistances**0.5
# argsort是numpy中的一个函数,用来返回一个数组排好序后各元素对应的原来的位置序号。
sorteddistindicies=distances.argsort()
classcount={}
for i in range(k):
voteilabel=labels[sorteddistindicies[i]]
classcount[voteilabel]=classcount.get(voteilabel,0)+1 # dict.get(key, default=None) key -- 字典中要查找的键。default -- 如果指定键的值不存在时,返回该默认值
print(classcount.items())
sortedclasscount=sorted(classcount.items(),key=operator.itemgetter(1),reverse=True) # reverse = True 降序 classcount.items()为 dict_items([(9, 2), (4, 1)]) sortedclasscount为[(9, 2), (4, 1)]
print(sortedclasscount)
return sortedclasscount[0][0]
分类代码块
group,labels=createDataSet()
print(group,labels)
print(classify0([0,0],group,labels,3))
测试代码