#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(testInstance)-1
for x in range(len(trainingSet)):
dist=euc