解释:假设一个值为K=3,当新的绿色的肿瘤周围最近的三个点的颜色比例: 蓝:红=3:0时,表明这个新的点更接近蓝色点的特征。
代码实现
//加载numpy包和matplotlib.pyplot包
import numpy as np
import matplotlib.pyplot as plt
//原始的x数据代表十个点,y = 0表示良性 ,x = 1表示恶性
x = [[3.3,2.3],
[3.1,1.7],
[1.3,3.3],
[3.5,4.6],
[2.2,2.8],
[7.4,2.8],
[5.7,3.5],
[9.1,2.5],
[7.7,3.4],
[7.9,0.7]]
y = [0,0,0,0,0,1,1,1,1,1]
//将x、y转化成np识别的数列
x_train = np.array(x) //训练数据集
y_train = np.array(y) //训练特征
//绘制散点图
plt.scatter(X_train[y_train==0,0],X_train[y_train==0,1],color='g')
plt.scatter(X_train[y_train==1,0],X_train[y_train==1,1],color='r')plt.show()
//新绘制一个点
x = np.array([8.0,3.3])
plt.scatter(X_train[y_train==0,0],X_train[y_train==0,1],color='g')
plt.scatter(X_train[y_train==1,0],X_train[y_train==1,1],color='r')
plt.scatter(x[0],x[1],color = 'b')
plt.show()
1.求出距离
//算出距离,定义一个空的距离
将X_train中的每个数据取出到x_train中循环遍历
from math import sqrt
distances = []
for x_train in X_train:
d = sqrt(np.sum((x_train - x)**2)) //求出新添加点到每个点的距离
distance.append(d) //将距离使用append方式添加到数组中
//简便算法
distances = [sqrt(np.sum((x_train - x)**2)) for x_train in X_train]
2.排序
//使用argsort函数排序,返回数组中的索引值
//使用nearest数组存储排序后的距离
假定一个K=6,取出nearset[]数组中的前k个点
取出y值 ,既原始数据的特征值
//使用Counter函数统计topk_y中的数据
值为0的数据有1个,值为1的数据有5个
//使用most_common()函数统计票数最多的一个值
//取出votes中第0行第0列的元素,就是我们最后要得到特征,也就是预测的最后的特征为1
总结:
1.使用了sqrt求开方、np.sum求和、()**2求平方
2.使用了argsort函数排序,并返回数组的索引
3.使用from collections import Counter中的Counter统计数组中胸痛元素的个数
4.使用most_common()函数统计票数最多的一个值