Python代码及注释:最邻近分类器KNN

该博客介绍了一个使用Python实现KNN(最邻近分类器)的完整过程,包括读取数据、计算欧几里得距离、确定最近邻、分类投票以及评估准确率。通过loadDataset函数划分训练集和测试集,使用euclideanDistance计算距离,getNeighbors获取最近邻,getResponse进行分类决策,最后计算模型的准确性。
摘要由CSDN通过智能技术生成
#Author:Anthony
import csv#读取数据用的
import random
import math
import operator

def loadDataset(filename,split,trainingSet=[],testSet=[]):#加载数据集,按概率划分数据集
    with open(filename,'rb') as csvfile:#打开文件
         lines=csv.reader(csvfile)#读取csv文件
         dataset=list(lines)#将文件变成列表形式
         for x in range(len(dataset)-1):
             for y in range(4):
                 dataset[x][y]=float(dataset[x][y])
             if random.random()<split:#概率
                trainingSet .append(dataset[x])
             else:
                 testSet.append(dataset[x])

def euclideanDistance(instance1,instance2,length):#欧几里德距离计算,length为维度0到n
    distance=0
    for x in range(length):
        distance+=pow((instance1[x]-instance2[x]),2)#两个实例中对应维度差的平方和
    return math.sqrt(distance)#返回结果的平方根

def getNeighbors(trainingSet,testInstance,k):#测试集的每一个实例与训练集实例中的距离,并将最近的K个点返回
    distances=[]
    length=len(t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值