KNN 工作原理
有一个训练样本及,样本集中,每个数据都存在标签
我们知道样本集中每个数据与其所属分类的对应关系

输入(没有标签的)新数据后,将新数据的每个特征与样本集中(每个)属于对应的特征进行比较
然后KNN算法提取样本集中特征和该新数据“最近的”那个数据的分类标签

一般来说,选取的是样本集中前k个和新数据最近的数据,然后看这k个数据中心
出现最多的分类是哪个分类标签,然后就选取这个标签,烙在新数据上

伪代码
def KNN_Algo(new_data_point_set):对于在new_data_point_set中的任意一个点i, 都有1. 计算点i 同训练集中每个数据点的距离(如何存储?)2. 按照距离的增序排序3. 选取距离最短的前k个点4. 确定前k个点中各个类别出现的频数5. return出现频数最高的类别,给点i 打上标签

code


import numpy as np
import operatordef Create_Dataset():data_in_list = [[40920, 8.326976,  0.953952],[14488, 7.153469, 1.673904],[26052,   1.441871,   0.805124],[75136,   13.147394,  0.428964],[38344,   1.669788,   0.134296],[72993,   10.141740,  1.032955],[35948,   6.830792,   1.213192],[42666,   13.276369,  0.543880],];group = np.array(data_in_list);labels = ['largeDoses','smallDoses','didntLike','didntLike','didntLike','didntLike','largeDoses','largeDoses',];return group, labels;group, labels = Create_Dataset();def Classifier0(input_X, dataset, labels, k):dataset_size = dataset.shape[0];# 复制dateset_size个输入向量,因此可以分别并行计算和输入点和每个点之间的距离# 欧式距离,先算差# this is why we use the (dataset_size, 1)diff_mat = np.tile(input_X, (dataset_size, 1)) - dataset;# 再算平方并求和sq_diff_mat = diff_mat ** 2;sq_dist_array = sq_diff_mat.sum(axis = 1);distances = sq_dist_array ** 0.5;# calculate the index of sorted distance arraysorted_distance_indicies = distances.argsort();class_counter = {};for i in range(k):picked_label = labels[sorted_distance_indicies[i]];class_counter[picked_label] = class_counter.get(picked_label, 0) + 1;sorted_class_counter = sorted(class_counter.items(),key = operator.itemgetter(1),reverse = True);return sorted_class_counter[0][0];result = Classifier0([28782,6.593803,0.187108], group, labels, 3);
print(result);

机器学习实战笔记 第二章(1)相关推荐

  1. 《机器学习实战》第二章学习笔记:K-近邻算法(代码详解)

    <机器学习实战>数据资料以及总代码可以去GitHub中下载: GitHub代码地址:https://github.com/yangshangqi/Machine-Learning-in-A ...

  2. 《机器学习实战》第二章 - k-近邻算法

    算法理解 K-近邻算法测量待分类样本的特征值与已经分好类的样本对应的特征值之间的距离,最邻近的一个或者几个训练样本的类别决定了待分类样本所属的类别. 工作原理 存在一个样本数据集合(训练样本集),并且 ...

  3. 机器学习实战(MachineLearinginAction) 第二章 k-近邻算法

    k-近邻算法(k-Nearest Neighbors,KNN) 优点:精度高,对异常值不敏感,无数据输入假定 缺点:计算复杂度,空间复杂度高 适用数据范围:数值型(numeric values)和标称 ...

  4. 吴恩达机器学习学习笔记第二章:单变量线性回归

    模型描述: 训练集(training set):是监督学习中独有的概念,由我们人喂给电脑的既有既有特征x又有结果y的数据.下图x是房子面积 ,y是房屋对应的价格 符号记法解释: (x^(1),y^(1 ...

  5. 小吴的《机器学习 周志华》学习笔记 第二章 模型评估与选择

    小吴的<机器学习 周志华>学习笔记 第二章 模型评估与选择 上一周我们介绍了第一章的基础概念,这一次将带来第二章的前三节.后面的2.4 比较检验与2.5 偏差与方差,涉及概率论与数理统计概 ...

  6. 小吴的《机器学习 周志华》学习笔记 第二章 2.4 比较检验、2.5 偏差与方差

    小吴的<机器学习 周志华>学习笔记 第二章 2.4 比较检验. 2.5 偏差与方差 2.4 比较检验 上一周提到了实验的评价方法和性能量度,步骤简单可以看成:先使用某种实验评估方法测得学习 ...

  7. 《计算传播学导论》读书笔记——第二章文本分析简介

    <计算传播学导论>读书笔记--第二章文本分析简介 第一节 文本分析研究现状 常用文本挖掘技术 第二节 文本分析与传播学研究 (一)为什么文本挖掘技术逐渐受到传播学者的关注 (二)不同文本分 ...

  8. R语言实战笔记--第九章 方差分析

    R语言实战笔记–第九章 方差分析 标签(空格分隔): R语言 方差分析 术语 组间因子,组内因子,水平:组间因子和组同因子的区别是,组间因子对所有测试对象进行分组,而组内因子则把所有测试对象归为同一组 ...

  9. 深入理解 C 指针阅读笔记 -- 第二章

    Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_/*<深入理解C指针>学习笔记 -- 第二章*//*内存泄露的两种形式1.忘记回收内 ...

最新文章

  1. SQL SERVER 架构管理
  2. Cent OS – Tomcat 7 - 集群
  3. 点对点信道互连以太网实验_汽车以太网 – 引领汽车IVN向多速以太网过渡
  4. 对源码包打补丁方法Patch
  5. 前端开发流程与组件化
  6. pytorch教程龙曲良01-05
  7. 在web前端调用后台java程序(java类)的方式
  8. Android之CSDN 牛人博客索引
  9. 连续不等_第九讲 函数的连续性与函数的间断点
  10. windows redis批量删除前缀的key_阿里官方Redis开发规范!
  11. HDU-3998 Sequence LIS统计
  12. 将整个表单设置为只读_如何将独立网站设置为制作中,阻止搜索引擎收录网站页面?...
  13. 【多线程】:Synchronized和ReentrantLock的对比
  14. 开源组件XStream 修复11个漏洞并公开 PoC
  15. [人脸识别]什么叫One-shot learning
  16. 阻止系统自动睡眠的小软件,附C#制作过程
  17. 小猿圈之Python开发的技巧一?
  18. Java 线程死锁初理解
  19. Luogu1638 逛画展
  20. 硬盘如何分区及分区注意事项

热门文章

  1. 你认识这些三叠字和四叠字吗? 犇猋骉蟲麤毳淼掱焱垚鑫卉芔鱻飍姦掱贔
  2. LaTeX插入多图模板
  3. 想成为“牛人”的你,知道这些“壁垒”吗? ——论技术壁垒、时间壁垒和成果壁垒
  4. canvas绘制一个圆形
  5. matlab自带的traffic,Matlab Traffic ToolBox
  6. OpenCV学习+常用函数记录①:图像的基本处理
  7. 与机器人chatGPT聊聊软件测试的热门话题
  8. 企业重要税种-印花税
  9. jquery京东新版左侧下拉分类导航菜单代码
  10. JS来判断客户端是否已安装Adobe Reader软件并提示下载安装