机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

文章目录

  • 1.K-近邻算法思想
  • 2.K-近邻算法(KNN)概念
  • 3.电影类型分析
  • 4.KNN算法流程总结
  • 5.k近邻算法api初步使用
    • 机器学习库scikit-learn
      • 1 Scikit-learn工具介绍
      • 2.安装
      • 3.Scikit-learn包含的内容
      • 4.K-近邻算法API
      • 5.案例
        • 5.1 步骤分析
        • 5.2 代码过程

1.K-近邻算法思想

假如你有一天来到北京,你有一些朋友也在北京居住,你来到北京之后,你也不知道你在北京的哪个区,假如你来到了北京南站。
分别问朋友在哪个区,距离多远。
根据最近朋友所在区比如丰台区,来判断自己是不是也在丰台区。
这就是K近邻算法的思想,根据最近距离来判断你属于哪个类别。

在这里插入图片描述

根据你的“邻居”来推断出你的类别

2.K-近邻算法(KNN)概念

K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法

定义
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

来源:KNN算法最早是由Cover和Hart提出的一种分类算法

距离公式
两个样本的距离可以通过如下公式计算,又叫欧式距离 ,关于距离公式会在后面进行讨论
在这里插入图片描述
在这里插入图片描述

3.电影类型分析

假设我们现在有几部电影
在这里插入图片描述

其中? 号电影不知道类别,如何去预测?我们可以利用K近邻算法的思想
我们这里时三列数据,属于三维数据的求解过程
比如我们求唐人街探案与二次曝光的距离,根据欧氏距离计算如下
在这里插入图片描述

分别计算每个电影和被预测电影的距离,然后求解
在这里插入图片描述

然后根据最小距离,或最小的几个距离的众数得到唐人街探案属于哪种片子
K=5表示,根据5部最小距离的电影来判断,从这8个样本里面拿其中的5个
在距离最小的5部电影里面,3部属于喜剧片,2部属于爱情片,由众数得知,唐人街探案属于喜剧片

4.KNN算法流程总结

1)计算已知类别数据集中的点与当前点之间的距离

2)按距离递增次序排序

3)选取与当前点距离最小的k个点

4)统计前k个点所在的类别出现的频率

5)返回前k个点出现频率最高的类别作为当前点的预测分类

5.k近邻算法api初步使用

机器学习流程:
在这里插入图片描述

1.获取数据集
2.数据基本处理
3.特征工程
4.机器学习
5.模型评估

机器学习库scikit-learn

1 Scikit-learn工具介绍

在这里插入图片描述

机器学习有很多库,为什么我们要选这个scikit-learn库呢?
1.它是Python语言的机器学习工具
2.Scikit-learn包括许多知名的机器学习算法的实现
3.Scikit-learn文档完善,容易上手,有丰富的API

2.安装

pip install scikit-learn
在这里插入图片描述

安装好之后可以通过以下命令查看是否安装成功
import sklearn

注:安装scikit-learn需要Numpy, Scipy等库

3.Scikit-learn包含的内容

在这里插入图片描述

分类、聚类、回归
特征工程
模型选择、调优

4.K-近邻算法API

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)
在这里插入图片描述

参数解析:
n_neighbors:所选用的近邻数(默认= 5),相当于K.weights:预测的权函数,概率值。weights的参数设置‘uniform’:同一的权重,即每个邻域中的所有点都是平均加权的。‘distance’ :这种情况下,距离越近权重越大,反之,距离越远其权重越小。[callable](可调用):用户定义的函数,它接受一个距离数组,并返回一个包含权重的相同形状的数组algorithm :用于计算最近邻居的算法,。有{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}‘auto’      :根据样本数据自动刷选合适的算法。‘ball_tree’:构建“球树”算法模型。‘kd_tree’ :‘’kd树‘’算法。‘brute’     :使用蛮力搜索,即或相当于Knn算法,需遍历所有样本数据与目标数据的距离,进而按升序排序从而选取最近的K个值,采用投票得出结果。leaf_size:叶的大小,针对算法为球树或KD树而言。这个设置会影响构造和查询的速度,以及存储树所需的内存。最优值取决于问题的性质。metric:用于树的距离度量。默认度量是Minkowski,p=2等价于标准的欧几里德度量。有关可用度量的列表,可以查阅距离度量类的文档。如果度量是“预先计算的”,则假定X是距离矩阵,在拟合期间必须是平方。p:Minkowski度量参数的参数来自sklearn.emeics.pairwise.pairwise_距离。当p=1时,这等价于使用曼哈顿距离(L1),欧几里得距离(L2)等价于p=2时,对于任意的p,则使用Minkowski_距离(L_P)。metric_params:度量函数的附加关键字参数,设置应为dict(字典)形式。n_jobs:要为邻居搜索的并行作业的数量。None指1,除非在 joblib.parallel_backend背景。-1意味着使用所有处理器,若要了解相关的知识应该具体查找一下。
拥有的方法:
fit(self, X[, y]): 以X为训练数据,y为目标值拟合模型get_params(self[, deep])
: 获取此估计器的参数。kneighbors(self[, X, n_neighbors, …])
: 找到点的K邻域。kneighbors_graph(self[, X, n_neighbors, mode])
: 计算X中点的k-邻域(加权)图predict(self, X)
: 预测提供的数据的类标签predict_proba(self, X)
: 返回测试数据X的概率估计。score(self, X, y[, sample_weight])
: 返回给定测试数据和标签的平均精度。set_params(self, \*\*params)
: 设置此估计器的参数。

5.案例

5.1 步骤分析

1.获取数据集
2.数据基本处理(该案例中省略)
3.特征工程(该案例中省略)
4.机器学习
5.模型评估(该案例中省略)

5.2 代码过程

导入模块

from sklearn.neighbors import KNeighborsClassifier#构造数据集
#x是原始数据,特征。y是类别标签,目标x = [[0], [1], [2], [3]]   #x是二维数据,dataframe数据结构
y = [0, 0, 1, 1]           #y是series数据结构#机器学习 -- 模型训练
# 实例化API
estimator = KNeighborsClassifier(n_neighbors=2)
# 使用fit方法进行训练,这行代码执行了,模型就训练好了estimator.fit(x, y)res = estimator.predict([[1]])
print(res)res2 = estimator.predict([[50]])
print(res2)

根据训练好的模型,预测未知数据所属类别:
在这里插入图片描述
由上可知,达到预期效果。大家觉得机器学习有了python库的加持,是不是不太难呢,大家一起加油,继续后面的机器学习之路,欢迎大家点赞评论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/673043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第42天 | 01背包问题理论基础 + 416.分割等和子集

今日任务 01背包问题,你该了解这些! 01背包问题,你该了解这些! 滚动数组 416. 分割等和子集 01背包问题 二维数组 理论基础:代码随想录 题目链接:题目页面 01 背包 有n件物品和一个最多能背重量为w 的…

【C++】组合数

题目描述 组合数表示的是从n个物品中选出m个物品的方案数。举个例子,从 (1, 2, 3) 三个物品中选择两个物品可以有 (1, 2),(1, 3),(2, 3) 这三种选择方法。 根据组合数的定义,我们可以给出计算组合数的一般公式: 其中…

C++ 日期计算器

日期计算器 概要 Date类的规划Date类的实现Date 构造函数Date 拷贝构造函数~Date 析构函数GetMonthDay 求某年某月的天数operator 赋值操作符重载operator 加等操作符重载operator 加号操作符重载operator- 减等操作符重载operator- 减法操作符重载 (日期 - 天数&am…

2023年第四季度硬盘容量强势增长9%

在2023年第四季度(CQ4 23),硬盘驱动器(HDD)市场的总容量出货量环比增长9%,达到214EB,而单位出货量保持在2900万块不变。其中,近线存储(Nearline)硬盘的容量出…

Java基于微信小程序的驾校报名小程序,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

JVM双亲委派机制

双亲委派模型是一种组织类加载器之间关系的一种规范,他的工作原理是:如果一个类加载器收到了类加载的请求,它不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,这样层层递进,最终所有的加载请求都被传到最顶层的启动类加载器中,只有当父类加载器无法完成这个加载…

基于SSM的实习管理系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的实习管理系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Spri…

Verilog刷题笔记19

题目: A common source of errors: How to avoid making latches When designing circuits, you must think first in terms of circuits: I want this logic gate I want a combinational blob of logic that has these inputs and produces these outputs I want…

【高阶数据结构】B-树详解

文章目录 1. 常见的搜索结构2. 问题提出使用平衡二叉树搜索树的缺陷使用哈希表的缺陷 3. B-树的概念4. B-树的插入分析插入过程分析插入过程总结 5. B-树的代码实现5.1 B-树的结点设计5.2 B-树的查找5.3 B-树的插入实现InsertKey插入和分裂测试 6. B-树的删除(思想&…

使用WPS制作三线表

点击边框和底纹点击1、2、3、4并且应用于表格点击确定 再次选中表格点击右键表格属性选择边框和底纹 选中表格第一行右键点击表格属性选择边框和底纹 如果表格中存在虚线

【Linux开发工具】gcc/g++的使用

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.前言2.gcc/g使用方…

【自动化测试】---Selenium+Java

1.自动化测试分类 接口自动化测试UI自动化测试(移动端自动化测试、Web端自动化测试) 2.选择Selenium作为web自动化工具原因(面试题) 开源免费支持多个浏览器支持多个系统支持多语言Selenium包提供很多供测试使用的API 3.自动化是什…

C++内存模型的内存布局

C内存模型的内存布局 什么是内存模型内存布局及作用C程序的内存布局 本文章介绍了C程序的内存布局,并附有一段演示 数据区和 栈区存储不同类型变量的代码示例。 什么是内存模型 在计算机科学中,程序的内存模型是指程序在内存中的组织结构和存储方式的抽…

编译原理实验2——自上而下语法分析LL1(包含去消除左递归、消除回溯)

文章目录 实验目的实现流程代码运行结果测试1(含公共因子)测试2(经典的ii*i文法,且含左递归)测试3(识别部分标识符) 总结 实验目的 实现自上而下分析的LL1语法分析器,给出分析过程 …

[C#] 如何使用ScottPlot.WPF在WPF桌面程序中绘制图表

什么是ScottPlot.WPF? ScottPlot.WPF 是一个开源的数据可视化库,用于在 WPF 应用程序中创建高品质的绘图和图表。它是基于 ScottPlot 库的 WPF 版本,提供了简单易用的 API,使开发人员能够通过简单的代码创建各种类型的图表&#…

2、6作业

TCP和UDP的区别 TCP和UDP都是通信协议 TCP提供有连接的,稳定的,无误码无失真无乱序无丢失的通信 UDP提供无连接的,尽力的,可能误码可能乱序,可能丢失的通信 TCP每发一个数据包就需要对方回应一个应答包&#xff0c…

自定义npm包从vue2升级到vue3遇到的问题解决

1.执行npm run build时报错: (node:16724) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token ‘??’ at Loader.moduleStrategy (internal/modules/esm/translators.js:149:18 解决:更新node版本 查看了我使用的node版本是14.21.3&…

《合成孔径雷达成像算法与实现》Figure6.10

clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; % 距离过采样率 Nrg 320; % 距离线采样数 距离向…

UUID和雪花(Snowflake)算法该如何选择?

UUID和雪花(Snowflake)算法该如何选择? UUID 和 Snowflake 都可以生成唯一标识,在分布式系统中可以说是必备利器,那么我们该如何对不同的场景进行不同算法的选择呢,UUID 简单无序十分适合生成 requestID, Snowflake 里…

Flink实战六_直播礼物统计

接上文:Flink实战五_状态机制 1、需求背景 现在网络直播平台非常火爆,在斗鱼这样的网络直播间,经常可以看到这样的总榜排名,体现了主播的人气值。 人气值计算规则:用户发送1条弹幕互动,赠送1个荧光棒免费…