机器学习探索计划——KNN算法流程的简易了解
文章目录
- 数据准备阶段
- KNN预测的过程
- 1.计算新样本与已知样本点的距离
- 2.按照举例排序
- 3.确定k值
- 4.距离最近的k个点投票
- scikit-learn中的KNN算法
数据准备阶段
import matplotlib.pyplot as plt
import numpy as np
# 样本特征
data_X = [[0.5, 2],[1.8, 3],[3.9, 1],[4.7, 4],[6.2, 6],[7.5, 5],[8.3, 3.5],[9.1, 7],[9.8, 4.5]
]# 样本标记
data_y = [0, 0, 0, 1, 1, 1, 1, 1, 1]
X_train = np.array(data_X)
y_train = np.array(data_y)
X_train
array([[0.5, 2. ],[1.8, 3. ],[3.9, 1. ],[4.7, 4. ],[6.2, 6. ],[7.5, 5. ],[8.3, 3.5],[9.1, 7. ],[9.8, 4.5]])
y_train
array([0, 0, 0, 1, 1, 1, 1, 1, 1])
选出样本标记为0的样本特征
y_train == 0
array([ True, True, True, False, False, False, False, False, False])
X_train[y_train==0]
array([[0.5, 2. ],[1.8, 3. ],[3.9, 1. ]])
X_train[y_train==0, 0]
array([0.5, 1.8, 3.9])
X_train[y_train==0, 1]
array([2., 3., 1.])
X_train[y_train==1, 0].shape
(6,)
X_train[y_train==1, 1].shape
(6,)
plt.scatter(X_train[y_train==0, 0], X_train[y_train==0, 1], color='red', marker='x')
plt.scatter(X_train[y_train==1, 0], X_train[y_train==1, 1], color='black', marker='o')
plt.show()

增加新的样本点
data_new = np.array([4, 5])
plt.scatter(X_train[y_train==0, 0], X_train[y_train==0, 1], color='red', marker='x')
plt.scatter(X_train[y_train==1, 0], X_train[y_train==1, 1],color='black', marker='o')
plt.scatter(data_new[0], data_new[1], color='b', marker='^')
plt.show()

KNN预测的过程
1.计算新样本与已知样本点的距离
for data in X_train:print(np.sqrt(np.sum((data - data_new) ** 2)))
4.6097722286464435 2.973213749463701 4.001249804748512 1.2206555615733703 2.4166091947189146 3.5 4.5541190146942805 5.478138369920935 5.821511831131154
distances = [np.sqrt(np.sum((data - data_new) ** 2)) for data in X_train]
distances
[4.6097722286464435,2.973213749463701,4.001249804748512,1.2206555615733703,2.4166091947189146,3.5,4.5541190146942805,5.478138369920935,5.821511831131154]
2.按照举例排序
np.sort(distances)
array([1.22065556, 2.41660919, 2.97321375, 3.5 , 4.0012498 ,4.55411901, 4.60977223, 5.47813837, 5.82151183])
sort_index = np.argsort(distances)
sort_index
array([3, 4, 1, 5, 2, 6, 0, 7, 8], dtype=int64)
3.确定k值
k = 5
4.距离最近的k个点投票
first_k = [y_train[i] for i in sort_index[:k]]
first_k
[1, 1, 0, 1, 0]
from collections import Counter
Counter(first_k)
Counter({1: 3, 0: 2})
Counter(first_k).most_common()
[(1, 3), (0, 2)]
Counter(first_k).most_common(1)
[(1, 3)]
predict_y = Counter(first_k).most_common(1)[0][0]
predict_y
1
得到结果为1,KNN判断新加入的点data_y的标记应该为1,从图中也可以看到,新加入的点更靠近标记为1的点群。
scikit-learn中的KNN算法
from sklearn.neighbors import KNeighborsClassifier
kNN_classifier = KNeighborsClassifier(n_neighbors=5)
kNN_classifier.fit(X_train, y_train)
data_new.reshape(1, -1)
array([[4, 5]])
predict_y = kNN_classifier.predict(data_new.reshape(1, -1))
predict_y
array([1])
与手写KNN得到的结果相同,皆判断为1。
相关文章:
机器学习探索计划——KNN算法流程的简易了解
文章目录 数据准备阶段KNN预测的过程1.计算新样本与已知样本点的距离2.按照举例排序3.确定k值4.距离最近的k个点投票 scikit-learn中的KNN算法 数据准备阶段 import matplotlib.pyplot as plt import numpy as np# 样本特征 data_X [[0.5, 2],[1.8, 3],[3.9, 1],[4.7, 4],[6.…...
ES6之class类
ES6提供了更接近传统语言的写法,引入了Class类这个概念,作为对象的模板。通过Class关键字,可以定义类,基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新…...
17 redis集群方案
1、RedisCluster分布式集群解决方案 为了解决单机内存,并发等瓶颈,可使用此方案解决问题. Redis-cluster是一种服务器Sharding技术,Redis3.0以后版本正式提供支持。 这里的集群是指多主多从,不是一主多从。 2、redis集群的目标…...
[数据结构]—栈和队列
💓作者简介🎉:在校大二迷茫大学生 💖个人主页🎉:小李很执着 💗系列专栏🎉:数据结构 每日分享✨:到头来,有意义的并不是结果,而是我们度…...
【GridSearch】 简单实现并记录运行效果
记录了使用for循环实现网格搜索的简单框架。 使用df_search记录每种超参数组合下的运行结果。 lgb_model.best_score返回模型的最佳得分 lgb_model.best_iteration_返回模型的最佳iteration也就是最佳n_extimator import numpy as np import pandas as pd import lightgbm as …...
SecureCRT出现Key exchange failed.No compatible key exchange method. 错误解决方法
SecureCRT出现Key exchange failed.No compatible key exchange method. 如下 Key exchange failed. No compatible key exchange method. The server supports these methods: curve25519-sha256,curve25519-sha256libssh.org,diffie-hellman-group-exchange-sha256解决方法&…...
Android RGB转YUV的算法
将 ARGB(Alpha-Red-Green-Blue)颜色空间转换为 YUV(亮度-色度)颜色空间的常用算法有以下几种: 矩阵转换法 使用预定义的转换矩阵将 RGB 值转换为 YUV 值。其中,Y 表示亮度,U 和 V 表示色度。这…...
Spring事务底层原理(待完善)
EnableTransactionManagement 我们经常使用EnableTransactionManagement开启事务, 这个注解导入一个类,Import(TransactionManagementConfigurationSelector.class), 会在spring容器增加两个bean, AutoProxyRegistrar和ProxyTransactionManagementConfiguration. AutoProxyRe…...
微信小程序 修改默认单选,多选按钮样式
微信小程序 修改默认单选,多选按钮样式 1.在微信开发者文档中复制一份单选或者多选的代码 <!--pages/index3/index.wxml--> <radio-group bindchange"radioChange"><label class"weui-cell weui-check__label" style"dis…...
「最优化基础知识2」一维搜索,以及python代码
最优化基础知识(2) 无约束优化问题,一维搜索 一、一维搜索 一维搜索的意思是在一个方向上找到最小点。 用数学语言描述,X*Xk tPk,从Xk沿着Pk方向行走t到达最小点X*。 1、收敛速度: 线性收敛࿱…...
工厂模式之抽象工厂模式(常用)
抽象工厂模式 工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机、计算机软件学院只培养计算机软件专业的学生等。 同种类称为同等级,也就是说:工厂方法模式中只考虑生产同等级的产品,但是在现实生…...
Apache服务Rwrite功能使用
Rewrite也称为规则重写,主要功能是实现浏览器访问时,URL的跳转。其正则表达式是基于Perl语言。要使用rewrite功能,Apache服务器需要添加rewrite模块。如果使用源码编译安装,–enable-rewrite。有了rewrite模块后,需要在…...
【一起来学kubernetes】6、kubernetes基本概念区分
前言 前一篇文章我们对k8s中的一些常见概念进行了一个梳理,接下来我们将常见一些概念的区别和联系进行一个理解 service和deployment的区别和联系 在Kubernetes中,Service和Deployment是两个不同的概念,它们之间存在一定的关联。 Deployme…...
Python基础入门例程66-NP66 增加元组的长度(元组)
最近的博文: Python基础入门例程65-NP65 名单中出现过的人(元组)-CSDN博客 Python基础入门例程64-NP64 输出前三同学的成绩(元组)-CSDN博客 Python基础入门例程63-NP63 修改报名名单(元组)-CSDN博客 目录 最近的博文: 描述...
ubuntu22.04 安装 jupyterlab
JupyterLab Install JupyterLab with pip: pip install jupyterlabNote: If you install JupyterLab with conda or mamba, we recommend using the conda-forge channel. Once installed, launch JupyterLab with: jupyter lab...
探索移动端可能性:Capacitor5.5.1和vue2在Android studio中精细融合
介绍: 移动应用开发是日益复杂的任务,本文将带领您深入探索如何无缝集成Capacitor5.5.1、Vue2和Android Studio,以加速您的开发流程Capacitor 是一个用于构建跨平台移动应用程序的开源框架。Vue 是一个流行的 JavaScript 框架,用…...
【深度学习】Python快捷调用InsightFace人脸检测,纯ONNX推理
pypi资料: https://pypi.org/project/insightface/ 模型选择: https://github.com/deepinsight/insightface/tree/master/python-package#model-zoo onnxruntime的GPU对应CUDA : https://onnxruntime.ai/docs/reference/compatibility …...
JAVA序列化和反序列化
JAVA序列化和反序列化 文章目录 JAVA序列化和反序列化序列化什么是序列化?为什么要进行序列化?如何将对线进行序列化具体实现过程 完整代码 序列化 什么是序列化? 就是将对象转化为字节的过程 为什么要进行序列化? 让数据更高效的传输让数据更好的…...
基于浣熊算法优化概率神经网络PNN的分类预测 - 附代码
基于浣熊算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于浣熊算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于浣熊优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…...
uni-app打包后,打开软件时使其横屏显示
找到page.json文件,在global加入以下代码: 这样就可以横屏显示了。...
终极解密指南:如何快速免费解密RPG Maker加密文件?
终极解密指南:如何快速免费解密RPG Maker加密文件? 【免费下载链接】RPGMakerDecrypter Tool for decrypting and extracting RPG Maker XP, VX and VX Ace encrypted archives and MV and MZ encrypted files. 项目地址: https://gitcode.com/gh_mirr…...
从代码到天空:深入APM飞控的`AP_Arming.cpp`,看它如何守护你的无人机第一道安全防线
从代码到天空:深入APM飞控的AP_Arming.cpp,看它如何守护你的无人机第一道安全防线 当遥控器的摇杆被推向解锁位置时,无人机并非立即响应这个动作。在电机真正开始旋转前的毫秒级瞬间,飞控系统正执行着数十项精密的安全检查。这些隐…...
Fastboot Enhance:3步实现Android设备可视化管理的终极指南
Fastboot Enhance:3步实现Android设备可视化管理的终极指南 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance Fastboot Enhance是一款面…...
终极指南:3步让AMD/Intel显卡免费获得CUDA加速,打破NVIDIA生态垄断
终极指南:3步让AMD/Intel显卡免费获得CUDA加速,打破NVIDIA生态垄断 【免费下载链接】ZLUDA CUDA on non-NVIDIA GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA 你是否曾因手头只有AMD或Intel显卡,却面对那些仅支持NVI…...
嵌入式系统与CPS核心技术解析与应用实践
1. 嵌入式系统与信息物理系统概述1.1 基本概念与技术特征嵌入式系统是以专用计算机为核心,嵌入到对象体系中完成特定功能的智能化电子系统。与通用计算机系统不同,嵌入式系统具有三个显著特征:专用性:针对特定应用场景优化设计&am…...
为什么你的Dify知识库召回率低于62%?文档解析配置中被低估的7个语义锚点参数(附AB测试压测报告)
第一章:Dify知识库召回率失衡的根因诊断Dify知识库召回率失衡并非单一模块故障所致,而是语义理解、向量化策略与检索逻辑三者耦合失效的结果。典型表现为高相关文档未被召回(漏召),或低相关文档大量混入(误…...
3大核心问题深度解析:PMX到VRM转换的终极解决方案
3大核心问题深度解析:PMX到VRM转换的终极解决方案 【免费下载链接】VRM-Addon-for-Blender VRM Importer, Exporter and Utilities for Blender 2.93 to 5.1 项目地址: https://gitcode.com/gh_mirrors/vr/VRM-Addon-for-Blender 面对PMX到VRM模型转换中的骨…...
DOL-CHS-MODS:Degrees of Lewdity一站式汉化美化整合方案
DOL-CHS-MODS:Degrees of Lewdity一站式汉化美化整合方案 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS DOL-CHS-MODS是一个专为Degrees of Lewdity游戏设计的自动化构建系统࿰…...
EdgeRemover终极指南:如何彻底卸载Windows中的Microsoft Edge浏览器
EdgeRemover终极指南:如何彻底卸载Windows中的Microsoft Edge浏览器 【免费下载链接】EdgeRemover A PowerShell script that correctly uninstalls or reinstalls Microsoft Edge on Windows 10 & 11. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemo…...
工程施工项目安全生产履职规范
工程施工项目安全生产履职规范——第一责任人示范与全员深度参入要求为全面落实施工项目安全生产责任,推动各级参入人深度参与安全生产管理,防范各类安全事故发生,保障项目施工安全、有序推进,结合施工项目管理实际,制…...
