#coding = utf-8
from numpy import *
import operator
import matplotlib
import matplotlib.pyplot as plt
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): #分别为待分类向量,数据集,标签向量,k
dataSetSize = dataSet.shape[0] #计算数据集行数
diffMat = tile(inX, (dataSetSize, 1)) - dataSet
sqDiffMat = diffMat ** 2
sqDistances = sqDiffMat.sum(axis = 1)
distances = sqDistances ** 0.5 #计算待分类向量和数据集每个向量的距离
sortedDistIndicies = distances.argsort() #排序且返回的是升序元素的索引
classCount = {} #创建空字典
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 #记录不同类别的分别有几个
sortedClassCount = sorted(classCount.iteritems(), key = operator.itemgetter(1), reverse = True) #按照键值对的
kNN算法改进约会网站的配对效果
最新推荐文章于 2023-05-23 15:34:09 发布