KNN
knn属于机器学习中的一个预测模型,属于监督性学习
算法如下:
1.计算想要分类的点到其余点的距离
2.按距离升序排列,并选出前K(KNN的K)个点,也就是距离样本点最近的K个点
距离公式有:
欧式距离
明可夫距离
马氏距离
3.加权平均,得到答案
代码如下
import numpy as np
import matplotlib.pyplot as plt
def CanberraDistance(x, y):
d = 0
for i in range(len(x)):
#if x[i] == 0 and y[i] == 0:
#d += 0
#else:
#d += abs(x[i] - y[i]) / (abs(x[i]) + abs(y[i]))
d += (x[i] - y[i])**3
return abs(d)**(1/3)
data_path = "data2.txt"
data = []
labels = []
with open(data_path, "r") as f:
lines = f.readlines()
for line in lines:
temp = line.split(",")
data.append(list(map(float, temp[:-1])))
labels.append(temp[-1].strip())
data = np.array(data)
l