一、机器学习算法学习---K近邻算法


解释:假设一个值为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()函数统计票数最多的一个值




猜你喜欢

转载自blog.csdn.net/fort110/article/details/79560443