美文网首页
K近邻算法

K近邻算法

作者: 伏牛山忍者 | 来源:发表于2019-03-20 17:36 被阅读0次

算法原理

首先k紧邻算法是分类算法, 用来判断是属于哪一类别的。
给若干个有标记的样本, 例如下图:


图1.jpg

然后给一个未标记测试样本,通过计算测试样本距离所有样本的距离, 拿出 最小的K 个样本, 判断K个样本中哪个类别最多,就是判定该测试样本属于该类别。


2.jpg

优点:算法简单,精度较高,对异常值不敏感, 无数据输入假定
缺点:对每个数据集的每个数据特征都要计算距离值,计算复杂度高, 空间复杂度高, 所以一般使用小数据集

算法封装 (python)

# -*-coding:utf-8-*-
import numpy as np
import matplotlib.pyplot as plt


def load_data():
    data = np.array([
        [0.1, 0.1, -1],
        [0.2, 0.1, -1],
        [0.3, 0.2, -1],
        [0.2, 0.4, -1],
        [0.3, 0.4, -1],
        [1.3, 1.0, 1],
        [1.2, 0.9, 1],
        [1.1, 1.4, 1],
        [1.3, 1.6, 1],
        [1.5, 1.4, 1],
    ])
    return data


def classify(data, test, k=3):
    """
    K紧邻判别方法
    :param data:
    :param test:
    :param k:
    :return:
    """
    distance = np.sum(np.square(data[:, :-1] - test), axis=1)
    k_orders = np.argsort(distance)[:k]
    result = np.sum(data[k_orders, -1])
    if result > 0:
        return 1
    else:
        return -1


data = load_data()
test = [0.8, 0.5]
rel = classify(data, test, k=5)
print(rel)

# 可视化
negative = data[data[:, -1] == -1][:-1]
positive = data[data[:, -1] == 1][:-1]
plt.scatter(negative[:, 0], negative[:, 1])
plt.scatter(positive[:, 0], positive[:, 1])
plt.scatter(test[0], test[1])
plt.show()

相关文章

  • “k 近邻算法”综述

    “k 近邻算法”综述 本来题目想叫“白话 k 近邻算法”,后来想想,“k 近邻算法” 的描述几乎就是“白话”,所以...

  • k 近邻法

    k 近邻法 k 近邻算法 k 近邻模型 k 近邻法的实现:kd 树 搜索 kd 树 k 近邻模型实现 k 近邻模型...

  • 十大经典算法(五)

    六、KNN(K Nearest Neighbor) K近邻(有监督) KNN算法,即K近邻算法是一种监督学习算法,...

  • 二:K近邻

    简介 K近邻算法,或者说K最近邻(kNN,k- NearestNeighbor)分类算法是数据挖掘分...

  • 最“懒惰”的kNN分类算法

    1. K-近邻算法#### k-近邻算法(k Nearest Neighbor),是最基本的分类算法,其基本思想是...

  • k近邻算法

    k近邻算法简介 k近邻算法(k-nearest neighbor, k-NN)是1967年由Cover T和Har...

  • 《算法图解》note 10 K近邻算法

    这是《算法图解》第十篇读书笔记,内容主要是K邻近算法的介绍。 1.K近邻算法简介 K近邻算法(K-nearest ...

  • 【机器学习实战】第2章 k-近邻算法(KNN)

    第2章 k-近邻算法 KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法主要是用来进行分类...

  • 机器学习实战之K-近邻算法(二)

    机器学习实战之K-近邻算法(二) 2-1 K-近邻算法概述 简单的说,K-近邻算法采用测量不同特征值之间的距离方法...

  • K近邻

    一、模型 1.1概念 k-近邻算法是一种基本分类与回归方法,我们这里只讨论分类问题中的 k-近邻算法。k-近邻算法...

网友评论

      本文标题:K近邻算法

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