机器学习-knn近邻分类算法

2023-11-19

# 算法原理
本质是通过距离(欧式距离)判断两个样本是否相似,如果距离够近就认为他们足够相似属于同一类别
###算法优缺点:主要参数k(标记数据周围几个数作为参考对象,需要根据数据来决定)
    k值越大,模型偏差大,对噪声数据不敏感。可能造成欠拟合
    k值越小,模型方差就会越大,容易过拟合。
算法变种一:针对不同距离的邻居指定不同的距离权重,通常距离越近权重越高,通过weights参数来实现。
算法变种二:使用一定半径内的点取代距离最近的k个点
    在scikit_learn中,RadiusNeighborsClassifiter 实现了这种算法,当数据采样不均匀时,这种算法性能更好。
   
#案例实现
##导入相关包
###全部行都能输出
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity="all"

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#解决坐标轴刻度负号乱码
plt.rcParams['axes.unicode_minus']=False
#解决中文乱码
plt.rcParams['font.sans-serif']=['simhei']
#设置背景样式
plt.style.use('ggplot')

#构建分类好的原始数据集
#先随机设置10个样本点表示10杯酒,为方便验证使用dict构建数据集,
#然后转化为DataFrame格式
rowdata = {'颜色深度':[14.23,13.2,13.16,14.37,13.24,12.07,12.43,11.79,12.37,12.04],
          '酒精浓度':[5.64,4.38,5.68,4.80,4.32,2.76,3.94,3.1,2.12,2.6],
          '品种':[0,0,0,0,0,1,1,1,1,1]}
#0 代表黑皮诺品种,1代表赤霞珠
wine_data = pd.DataFrame(rowdata)
wine_data

#特征作为x,y作为标签(类别)
x = np.array(wine_data.iloc[:,0:2])#这为什么要把dataframe转为一维数组,因为只需要里面的数值,不需要索引
y = np.array(wine_data.iloc[:,-1])
#探索,假如给出新的数据,判断红酒的类别
new_data = np.array([12.03,4.1])
#画出标签y=1的赤霞珠的散点图
plt.scatter(x[y==1,0], x[y==1,1],color='red',label='赤霞珠')
#方括号内为列表表达式,x是一维数组,取x数组的横坐标和纵坐标。
plt.scatter(x[y==0,0],x[y==0,1],color='purple',label='黑皮诺')
plt.scatter(new_data[0],new_data[1],color='yellow')
new_data
plt.xlabel('酒精浓度')
pl

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习-knn近邻分类算法 的相关文章

随机推荐

  • CSharp之接口(Interface)

    接口通过Interface关键字修饰 接口是抽象类的一个实例 当抽象类中所有的方法全部为抽象方法时 这个抽象类可以称为接口 接口不能被实例化 接口中的方法没有方法体 只能包含方法的声明 并且所有方法成员是公有的 public 接口中成员不能
  • Web 应用程序安全测试

    Web 应用程序安全测试 4 0 引言和目标 4 1 信息收集 4 2 配置和部署管理测试 4 3 身份管理测试 4 4 认证测试 4 5 授权测试 4 6 会话管理测试 4 7 输入验证测试 4 8 错误处理测试 4 9 弱口令测试 4
  • 查看Linux系统版本的命令(2种方法)

    一 查看Linux系统版本的命令 2种方法 1 lsb release a 即可列出所有版本信息 这个命令适用于所有的Linux发行版 包括RedHat SUSE Debian 等发行版 2 cat etc redhat release 这
  • 【华为OD机试真题2023B卷 JAVA&JS】字符串分割

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 字符串分割 时间限制 3秒 内存限制 262144K 语言限制 不限 题目描述 给定非空字符串s 将该字符串分割成一些子串 使每个子串的ASCII码值的和均为水仙花数 1 若分割不成功
  • 4.函数、模块与包

    文章目录 一 函数 二 模块与包 引用 一 函数 Python 使用 def 关键字来声明函数 格式如下所示 def 函数名 参数 函数体 return 返回值 如果要定义一个无任何功能的空函数 函数体只写 pass 即可 def 函数名
  • element组件库中tab表格利用cellStyle方法单独改变单元格样式

    公司项目中已经封装了一个公共的tab组件 新的需求需要对表格中特定的单元格字体颜色做改变 查询了官方文档发现有cellStyle这个属性 在公共组件中加了标签属性 一开始是使用 emit方法触发父传子 使用该表格是自定义该事件 但是样式不生
  • 最大似然估计【MLE】与最大后验概率【MAP】

    最大似然估计 Maximum likelihood estimation 简称MLE 和最大后验概率估计 Maximum a posteriori estimation 简称MAP 是很常用的两种参数估计方法 如果不理解这两种方法的思路 很
  • matlab 回归

    我发现这两天写题目 回归真的是个万能方法 但是我只会最简单的线性回归 为此特地记录一下以下几种方法 1 regress 简单线性回归 可以是一元 也可以是多元 具体用法可以看这个图片 这个方法最简单 也最好用 但是也有局限 比如非线性的时候
  • Unity与Andriod交互错误合集

    一 无法调用安卓中的方法no non static method with name 报错如下 在保证代码中的方法名没有问题 并且调用的方法名的返回值和传递的参数等都没有问题的情况下 第一 查看在Unity项目中jar包存放的位置是否正确
  • 前言 在学习达梦数据库数据存储过程中有接触到行式存储和列式存储方面的内容 在此作简单的学习分享 通过本文你可以了解到行存储模式 列存储模式 它们的优缺点以及列存储模式的优化等知识 Row vs Column Oriented Databas
  • 怎样用计算机的计算器的程序员进行进制,使用系统自带计算器进行二进制运算(示例代码)...

    int x 110 int y 10 Console WriteLine x y Console WriteLine x y 想亲自算一下这种计算的时候 打开windows自带的计算器calc exe 调到 程序员计算器 模式即可 选择DE
  • 华为OD机试 - 日志限流(Java )

    题目描述 某软件系统会在运行过程中持续产生日志 系统每天运行N单位时间 运行期间每单位时间产生的日志条数保行在数组records中 records i 表示第i单位时间内产生日志条数 由于系统磁盘空间限制 每天可记录保存的日志总数上限为to
  • 详解人工智能领域重大突破:GPT-3

    2020 09 14 16 09 导语 GPT 3是自然语言处理 领域迄今为止发布出来最大的Transformer模型 超过之前的记录 微软研究院Turing LG的170亿参数 约10倍 英语原文 Exploring GPT 3 A Ne
  • 剑指 Offer 18. 删除链表的节点 -- 双指针

    0 题目描述 leetcode原题链接 剑指 Offer 18 删除链表的节点 1 双指针解法 删除值为 val 的节点分需为两步 定位节点 修改引用 定位节点 遍历链表 直到 head val val 时跳出 即可定位目标节点 修改引用
  • 荐读

    本文转自 链闻 ChainNews 作者 Karen 虽然区块链技术诞生至今不过短短十余年 但是东西方天然的文化差异在加密世界中同样留下了一些痕迹 当社交媒体上关于 东方区块链 只关心币价 利益和投机而只有 西方区块链 才关心底层技术的革新
  • “元宇宙”既是机遇也是挑战

    一次性看懂元宇宙 是开疆拓土还是新一轮割韭菜 众所周知 随着AI VR AR MR XR 区块链 云计算 物联网 数字孪生 量子技术 5G技术等新兴技术的快速发展 推动刚刚过去的2021年成为元宇宙元年 先是3月Robolox上市 开启了元
  • 基于Dpabi的功能连接

    1 预处理 这里预处理用Gretna软件进行 共分为以下几步 1 DICOM转NIfTI格式 2 去除前10个时间点 Remove first 10 times points 由于机器刚启动 被试刚躺进去也还需适应环境 导致刚开始扫描的数据
  • 分享一个开源免费、功能强大的视频播放器库

    99 的前端开发者都关注了这个公众号 点击上方 前端开发博客 关注并 设为星标 回复加群 自助秒进前端群 最近在开发一个前端项目 用到播放视频的功能 所以就查了下有什么前端的视频播放器库可以使用 今天来分享一下给大家 这个库的名字叫做 Pl
  • Zabbix之自定义监控MySQL主从状态和延迟

    zabbix之自定义监控MySQL主从状态和延迟 文章目录 监控MySQL主从状态 1 安装Mariadb配置主从 2 配置监控脚本 3 web界面添加监控项 4 添加触发器 5 触发验证 监控MySQL主从延迟 配置监控脚本 web界面添
  • 机器学习-knn近邻分类算法

    算法原理 本质是通过距离 欧式距离 判断两个样本是否相似 如果距离够近就认为他们足够相似属于同一类别 算法优缺点 主要参数k 标记数据周围几个数作为参考对象 需要根据数据来决定 k值越大 模型偏差大 对噪声数据不敏感 可能造成欠拟合 k值越