码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • KNN算法实现


    目录

    实验目标

    案例内容介绍

    实验步骤

    1、导入实验所需的sklearn包,导入numpy,进行矩阵计算

    2、提供简单的数据结构进行后续的KNN算法验证

    3、KNN算法的内容

    4、调用KNN算法

    5、训练数据

    6、预测结果,可以查看分类结果

    实验目标

    1. 了解KNN算法的基本思想;
    2. 能够使用SKlearn实现KNN算法。

    案例内容介绍

    KNN是通过测量不同特征值之间的距离进行分类。它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

    实验步骤

    1、导入实验所需的sklearn包,导入numpy,进行矩阵计算

    1. # 从sklearn 导入KNeighborsClassifier方法
    2. from sklearn.neighbors import KNeighborsClassifier
    3. import numpy as np

    2、提供简单的数据结构进行后续的KNN算法验证

    1. X = np.array([[1, 1], [1, 1.5], [2, 2.5], [2.5, 3], [1.5, 1], [3, 2.5]])
    2. y = ['A', 'A', 'B', 'B', 'A', 'B']

    3、KNN算法的内容

    根据sklearn提供的包,创建knn算法对象

    n_neighbors=5

    int 型参数 knn算法中指定以最近的几个最近邻样本具有投票权,默认参数为5

    algrithm='auto'

    str参数 即内部采用什么算法实现。有以下几种选择参数:

    'ball_tree':球树、'kd_tree':kd树、'brute':暴力搜索、'auto':自动根据数据的类型和结构选择合适的算法。

    默认情况下是‘auto’。暴力搜索就不用说了大家都知道。具体前两种树型 数据结构哪种好视情况而定。KD树是对依次对K维坐标轴,以中值切分构造 的树,每一个节点是一个超矩形,在维数小于20时效率最高。

    ball tree 是为了克服KD树高维失效而发明的,其构造过程是以质心C和半径r分割样本空间,每一个节点是一个超球体。一般低维数据用 kd_tree速度快,用ball_tree相对较慢。超过20维之后的高维数据,用kd_tree效果反而不佳,而ball_tree效果要好,具体构造过程及优劣势的理论大家有兴趣可以去具体学习。

    4、调用KNN算法

    model = KNeighborsClassifier(n_neighbors=4, algorithm='ball_tree')

    5、训练数据

    1. """
    2. fit 就是训练模型
    3. fit()
    4. 训练函数,它是最主要的函数。接收参数只有1个,就是训练数据集,
    5. 每一行是一个样本,每一列是一个属性。它返回对象本身,即只是修
    6. 改对象内部属性,因此直接调用就可以了,后面用该对象的预测函数
    7. 取预测自然及用到了这个训练的结果。其实该函数并不是
    8. KNeighborsClassifier这个类的方法,
    9. 而是它的父类SupervisedIntegerMixin继承下来的方法。
    10. """
    11. model.fit(X, y)

    6、预测结果,可以查看分类结果

    1. # 预测
    2. print(model.predict([[1.75, 1.75]])) # 输出分类结果
    3. print(model.predict_proba([[1.75, 1.75]])) # 返回预测属于某标签的概率
    4. print(model.score(X, y)) # 输出模型训练结果

  • 相关阅读:
    VMware替换难?听听ZStack 的这3家制造业客户怎么说……
    【前端】-css的详解
    CC++ socket网络编程扫盲篇
    【Datawhale】扩散模型学习笔记 第一次打卡
    wxml2canvas爬坑之路
    还没弄明白微服务数据架构事务管理+ACID+一致性+CAP+BASE理论吗,看完彻底解决疑惑
    信息的浏览
    数据治理之数据质量
    正则表达式相关知识点
    C语言 ,不用string.h的函数,实现A+B A-B的字符串处理功能。
  • 原文地址:https://blog.csdn.net/m0_62975468/article/details/127984860
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号