数据科学与机器学习(第 09 部分):K

您所在的位置:网站首页 最近邻分类器定义 数据科学与机器学习(第 09 部分):K

数据科学与机器学习(第 09 部分):K

#数据科学与机器学习(第 09 部分):K| 来源: 网络整理| 查看: 265

K-最近邻算法是一种非参数监督学习分类器,它运用邻近度对单个数据点的分组进行分类或预测。 虽然此算法主要用于分类问题,但它也可解决回归问题。 它通常作为分类算法,由于它假设数据集中的相似点可以在彼此的附近找到。 k-最近邻算法是监督机器学习中最简单的算法之一。 我们将在本文中构筑我们的算法作为分类器。

图源: skicit-learn.org

需要注意的几件事: 它通常用作分类器,但也可用于回归。K-NN 是一种非参数算法,这意味着它不会对底层数据做出任何假设。它通常被称为惰性学习器算法,因为它不会基于训练集学习。 取而代之,它存储数据,并在操作期间使用它KNN 算法假定新数据和可用数据集之间存在相似度,并将新数据放入与可用类别最相似的类别之中。 KNN 如何运作?

在我们潜心编写代码之前,我们先了解一下 KNN 算法的工作原理:

步骤 01:选择邻居的数量 k步骤 02: 计算点到数据集所有成员的欧氏距离步骤 03: 根据欧氏距离取 K 最近邻步骤 04: 在这些最近邻中,计算每个类别中的数据点数量步骤 05: 将新数据点分配给相邻要素数量最大的类别

步骤 01: 选择邻居的数量 k

这一步很简单,我们所要做的就是选择我们将在 CKNNnearestNeighbors 类中使用的 k 的数量,而这就提出了我们如何分解 k 的问题。

我们如何分解 K?

K 是针对给定值/点应属于的位置进行投票的最近邻居数量。 选择较低的 k 数值将导致分类数据点中存在大量噪声,故这可能导致较高的偏差数;而同时,较高的 k 数值会令算法明显变慢。 

k 值需要是一个奇数,从而避免卡在决策过程中,而这意味着什么呢?因为投票过程需要 k 个邻居,如果它设置为 4,然后 2 个成员投票给属于类别 A 的点,那么剩下的 2 票它属于类别 B?? 那您如何判定哪一方赢得了决议?

当有 2 个类别需要分类时,这样的情况发生得最多,我们将看看以后当 k 个邻居有很多类别时,如果发生这样的情况,我们该怎么办。

在我们的聚类库内,我们创建一个函数从数据集矩阵中获取可用的类,并将它们存储在名为 m_classesVector 的类全局向量之中。

vector CKNNNearestNeighbors::ClassVector() {    vector t_vectors = Matrix.Col(m_cols-1); //target variables are found on the last column in the matrix    vector temp_t = t_vectors, v = {t_vectors[0]};       for (ulong i=0, count =1; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3