# -*- coding: cp936 -*-
'''
Created on Nov 27, 2016
KNN Code for Machine Learning in Action Ch. 2
@author: Miaotong Jiang
'''
from numpy import *
from os import listdir
import operator
mydict={'largeDoses':3, 'smallDoses':2, 'didntLike':1}
def createDataSet():#创建训练数据集
group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels=['A','A','B','B']
return group,labels
def classify0(inx,dataset,labels,k):#得到欧式距离下最近邻决策规则的测试数据的预测分类
datasetsize=dataset.shape[0]
diffs=tile(inx,(datasetsize,1))-dataset
sq=diffs**2
ss=sq.sum(axis=1)#( >>> sum([[1,5],[0,3]],axis=1) array([6, 3]) >>> sum([[1,5],[0,3]],axis=0) array([1, 8]) )
s=ss**0.5
sortedsindices=s.argsort()#返回数组值从小到大的索引值
classCount={}
for i in range(k):
votellabel=labels[sortedsindices[i]]
classCount[votellabel]=classCount.get(votellabel,0)+1
sortedclasscount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)#sorted(可迭代 类型,cmp(用于比较的函数,由key决定,有默认值,), key(此处根据第二个域排序),reverse反转)
prin
'''
Created on Nov 27, 2016
KNN Code for Machine Learning in Action Ch. 2
@author: Miaotong Jiang
'''
from numpy import *
from os import listdir
import operator
mydict={'largeDoses':3, 'smallDoses':2, 'didntLike':1}
def createDataSet():#创建训练数据集
group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels=['A','A','B','B']
return group,labels
def classify0(inx,dataset,labels,k):#得到欧式距离下最近邻决策规则的测试数据的预测分类
datasetsize=dataset.shape[0]
diffs=tile(inx,(datasetsize,1))-dataset
sq=diffs**2
ss=sq.sum(axis=1)#( >>> sum([[1,5],[0,3]],axis=1) array([6, 3]) >>> sum([[1,5],[0,3]],axis=0) array([1, 8]) )
s=ss**0.5
sortedsindices=s.argsort()#返回数组值从小到大的索引值
classCount={}
for i in range(k):
votellabel=labels[sortedsindices[i]]
classCount[votellabel]=classCount.get(votellabel,0)+1
sortedclasscount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)#sorted(可迭代 类型,cmp(用于比较的函数,由key决定,有默认值,), key(此处根据第二个域排序),reverse反转)
prin