1.kNN算法基本原理

作者: VickeyLiu | 来源:发表于2018-10-13 17:09 被阅读0次

理解kNN算法

kNN最近邻域法是一个入门级的机器学习算法,常被用于解决分类问题。我们先引入一组数据,并将这一组数据进行可视化,以帮助我们进行理解。

import numpy as np
import matplotlib.pyplot as plt

raw_data_X = [[2.393533211, 2.331273381],
              [3.110073483, 1.781539638],
              [1.343808831, 3.368360954],
              [3.882294042, 2.979179110],
              [2.280362439, 2.866990263],
              [7.423436942, 4.696522875],
              [5.745051997, 3.033989803],
              [9.172168622, 2.511101045],
              [7.792783481, 3.424088941],
              [5.839820817, 2.791637231]
             ]
raw_data_y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]

我们引入两组数据,我们假设这是一组关于乳腺肿瘤的数据。
对于raw_data_X中的10组数据,它的第一个元素是指肿瘤发现的时间,第二个元素是指肿瘤的大小。
对于raw_data_y中的10个数据,与raw_data_X中的10组数据按顺序一一对应。0代表这个肿瘤是良性,1则代表这个肿瘤是恶性。
理解了两组数据的含义之后,我们运用matplotlib对其进行可视化。

X_train = np.array(raw_data_X)  # 训练集
y_train = np.array(raw_data_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()
1

机器学习过程通常符合如图2的一个过程。我么这里传入的raw_data_X,raw_data_y就可以理解为训练数据集,而我们绘制出的这张图就可以理解为一个数学模型(实际上kNN算法相比其他算法并没有一个泾渭分明的模型概念)。


2

在有了一个模型以后,我们就要输入样例。我们新加入一个点,并用蓝色来表示这个点。这时候我们就得到了图三。

x = np.array([4.393607318, 2.865731514])
plt.scatter(x[0], x[1], color='b')
plt.show()
3

那么,这位新入院的“病人”,ta的肿瘤是良性还是恶性?
这时候,我们的kNN算法就可以进行一个预测。我们很容易看出,这实际上是一个分类的问题,我们kNN的思路就是,计算出训练集中的所有点与新引入的点的距离。
然后,我们需要对得到的距离进行排序,选取出K个最近的距离,这里我们假设是3。取出距离最近的3个点,根据这三个点的状态(我们这里的例子,状态即良性还是恶性),进行一个投票,根绝投票结果,少数服从多数,从而对新引入的点进行分类。
代码实现如下:

from math import sqrt
distances = []
for x_train in X_train:
    d = sqrt(np.sum((x_train - x)**2))
    distances.append(d)
nearest = np.argsort(distances)
print(nearest)
k = 3
topK_y = [y_train[neighbor] for neighbor in nearest[:k]]
print(topK_y)
# [3 6 9 1 0 4 2 8 5 7]
# [0, 1, 1]

根据代码输出结果,很不幸,这名病人有可能是恶性肿瘤。

相关文章

  • 1.kNN算法基本原理

    理解kNN算法 kNN最近邻域法是一个入门级的机器学习算法,常被用于解决分类问题。我们先引入一组数据,并将这一组数...

  • KNN算法以及欧式距离

    1.KNN算法介绍 KNN 是什么? KNN(K-Nearest Neighbor)是最简单的机器学习算法之一,可...

  • 用人话讲明白近邻算法KNN

    目录 1.KNN简介2.KNN算法步骤3.决策边界4.K的选择5.要注意的问题6.小结 1.KNN简介 KNN(K...

  • K近邻算法原理及实战

    1.KNN算法原理 KNN(k-nearest neighbor,k-NN),即K近邻算法,可以说是最简单直观的分...

  • sklearn-监督学习-分类与回归

    一、分类模型1.KNN算法函数:KNeighborsClassifier()思路:对k个最近的邻居进行拟合,调试出...

  • MATLAB的KNN实现

    KNN算法概述:1.KNN算法是通过已有的数据,已有的标签,对新数据进行分类。2.分类依据:找最近的K个点,大部分...

  • ML-k近邻最近邻

    1.KNN介绍 k临近算法 也叫Knn 是一种基于样本的模型,当K取值为1时算法原理是 对于新的实例, 在训练集中...

  • KNN算法/K近邻

    1.KNN算法(K Nearest Neighbors)从训练集中找到和新数据最接近的K条记录,然后根据他们的主要...

  • KNN

    1.KNN(K-NearestNeighbor)介绍 (1)K最近邻算法,本质上基于一种数据统计的方法。 (2)K...

  • KNN两种分类器的python简单实现及其结果可视化比较

    1.KNN算法简介及其两种分类器KNN,即K近邻法(k-nearst neighbors),所谓的k最近邻,就是指...

网友评论

    本文标题:1.kNN算法基本原理

    本文链接:https://www.haomeiwen.com/subject/joaqaftx.html