机械学习

k-近邻算法

KNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。

建立一个KNN.py文件对算法的可行性进行验证,如下:

from numpy import *
import operator##给出训练数据以及对应的类别
def createDataSet():group = array([[1.0,2.0],[1.2,0.1],[0.1,1.4],[0.3,3.5]])labels = ['A','A','B','B']return group,labels###通过KNN进行分类
def classify(input,dataSe t,label,k):dataSize = dataSet.shape[0]####计算欧式距离diff = tile(input,(dataSize,1)) - dataSetsqdiff = diff ** 2squareDist = sum(sqdiff,axis = 1)###行向量分别相加,从而得到新的一个行向量dist = squareDist ** 0.5##对距离进行排序sortedDistIndex = argsort(dist)##argsort()根据元素的值从大到小对元素进行排序,返回下标classCount={}for i in range(k):voteLabel = label[sortedDistIndex[i]]###对选取的K个样本所属的类别个数进行统计classCount[voteLabel] = classCount.get(voteLabel,0) + 1###选取出现的类别次数最多的类别maxCount = 0for key,value in classCount.items():if value > maxCount:maxCount = valueclasses = keyreturn classes 

接下来,在命令行窗口输入如下代码:

#-*-coding:utf-8 -*-
import sys
sys.path.append("...文件路径...")
import KNN
from numpy import *
dataSet,labels = KNN.createDataSet()
input = array([1.1,0.3])
K = 3
output = KNN.classify(input,dataSet,labels,K)
print("测试数据为:",input,"分类结果为:",output)

回车之后的结果为:

测试数据为: [ 1.1 0.3] 分类为: A


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部