一个简单的KNN算法,数据已上传
代码:
import csv
import random
with open('prostate-cancer\Prostate_Cancer.csv', 'r')as file:
read = csv.DictReader(file)
datas = [row for row in read]
# 数据随机打乱
random.shuffle(datas)
# 分出测试数据
n = len(datas)//3
test_set = datas[0:n]
train_set = datas[n:]
# 距离
def distanse(d1, d2):
res = 0
for key in ("radius", "texture", "perimeter", "area", "smoothness", "compactness", "symmetry", "fractal_dimension"):
res += (float(d1[key])-float(d2[key]))**2
return res**0.5
# KNN
k = 5 # k个离得最近的
def KNN(data):
# 距离
res = [
{"result": train['diagnosis_result'], "distance": distanse(data, train)}
for train in trai