2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解

这篇具有很好参考价值的文章主要介绍了2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人简介

🏘️🏘️个人主页:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,CSDN内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。
🎉🎉免费学习专栏

1. 《Python基础入门》——0基础入门
2.《Python网络爬虫》——从入门到精通
3.《Web全栈开发》——涵盖了前端、后端和数据库等多个领域

💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

一·算法概述

K-最近邻算法(K-Nearest Neighbor,简称KNN)是一种基于实例学习的算法,可以应用于分类和回归任务。作为一种非参数算法KNN不对数据分布做任何假设,而是直接使用数据中的最近K个邻居的标签来预测新数据点的标签

在KNN算法中,每个数据点都可以表示为一个n维向量,其中n是特征的数量。对于一个新的数据点,KNN算法会计算它与每个训练数据点之间的距离,并选择最近的K个训练数据点。对于分类问题,KNN算法会将这K个训练数据点中出现最多的类别作为预测结果。而对于回归问题,KNN算法会将这K个训练数据点的输出值的平均值作为预测结果。

在KNN算法中,K的取值是一个超参数,需要根据数据集的特点和算法的性能进行选择。通常情况下,较小的K值可以使模型更复杂,更容易受到噪声的影响,而较大的K值可以使模型更简单、更稳定,但可能会导致模型的欠拟合。因此,选择合适的K值对于KNN算法的性能至关重要。
2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

二·算法思想

KNN(K-最近邻)算法是一种基于实例的分类方法,通过计算不同特征值之间的距离来进行分类

1️⃣其核心思想是
如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某一个类别,则该样本也划分为这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

2️⃣ KNN算法的主要步骤如下

  1. 确定k值,即选取多少个最近邻居参与投票。
  2. 计算待分类样本与已知分类样本之间的距离,通常使用欧氏距离作为距离度量。
  3. 对距离进行排序,找出最近的k个邻居。
  4. 统计这k个邻居中各个类别的数量,将数量最多的类别作为待分类样本的类别。

3️⃣KNN算法涉及3个主要因素
实例集、距离或相似的衡量、k的大小。实例集是指已知分类的样本集合;距离或相似的衡量是指计算样本之间距离的方法,如欧氏距离;k的大小是指选取多少个最近邻居参与投票,k值的选择会影响分类结果的准确性。

一个实例的最近邻是根据标准欧氏距离定义的。更精确地讲,把任意的实例x表示为下面的特征向量:
2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

其中ar(x)表示实例x的第r个属性值。那么两个实例xi和xj间的距离定义为d(xi,xj),其中:

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

2.1 KNN的优缺点

1️⃣K-最近邻算法(KNN)的优点

简单易懂:KNN算法的原理和实现都非常简单,容易理解和掌握。
非参数化:KNN是一种非参数化算法,不需要对数据分布做任何假设。
对异常值不敏感:KNN能够有效处理包含异常值的数据。
多用途:适用于分类和回归问题。
高维数据处理:可以处理高维特征空间的数据。
非线性问题处理:能够适应非线性的数据分布。
高度可解释性:结果直观,易于解释。

2️⃣KNN算法的缺点

效率低:在大型数据集上计算距离时效率较低,尤其是在高维数据中。
对噪声敏感:训练数据中的噪声可能影响最近邻的选择,导致预测结果不准确。
K值选择:K值的选择对算法性能有很大影响,需要通过实验来确定最佳值。
距离度量:选择合适的距离度量方法对算法性能至关重要。
特征缩放敏感:需要对特征进行归一化或标准化,否则可能导致某些特征过于主导。
缺失值处理:处理缺失值较为困难,需要采取特定策略来应对。
解释性差:由于是基于实例的预测,相对于其他模型来说解释性较差。

三·实例演示

3.1电影分类

1.导入数据分析三剑客

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

2.导入KNN算法

# 谷歌的机器学习库 
from sklearn.neighbors import KNeighborsClassifier

3.导入warnings模块,并设置警告过滤器为忽略所有警告

import warnings
warnings.filterwarnings(action='ignore')

4.使用电影数据

movies = pd.read_excel('../data/movies.xlsx',sheet_name=1)
movies

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

#  有标签的:有监督学习

# 训练数据
# x_train,y_train 

# 测试数据
# x_test,y_test

# data  : x特征数据
# target :y标签数据

data = movies[['武打镜头','接吻镜头']]
data # 二维

target = movies.分类情况
target  # 一维

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

KNN模型
1.创建模型

# n_neighbors=5, k值  k = 5
# p = 2 距离算法,p=2表示欧氏距离 ,p = 1 表示曼哈顿距离
# 
knn = KNeighborsClassifier(n_neighbors=5,p=2)

2.训练

knn.fit(data,target)

3.预测

# 自己提供测试数据,训练数据和测试数据列得相同,行可以不同

x_test=np.array([[20,1],[0,20],[10,10],[33,2],[2,13]])
x_test = pd.DataFrame(x_test,columns= data.columns)
y_test = np.array(['动作片','爱情片','爱情片','动作片','爱情片'])
y_pred = knn.predict(x_test)
y_pred

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能
4.得分 ,准确率
2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

3.2使用KNN算法预测 鸢(yuan)尾花 的种类

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

1.导入数据分析三剑客

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

2.导入KNN算法

# 谷歌的机器学习库 
from sklearn.neighbors import KNeighborsClassifier

3.导入warnings模块,并设置警告过滤器为忽略所有警告

import warnings
warnings.filterwarnings(action='ignore')

4.得到鸢尾花数据

from sklearn.datasets import load_iris
# return_X_y=True  只返回data和target
#  data,target = load_iris(return_X_y=True)

5.使用sklearn库中的load_iris()函数加载鸢尾花数据集,并将数据集分为数据(data)、目标(target)、目标名称(target_names)、特征名称(feature_names)四个部分。

iris = load_iris()
data = iris['data']
target = iris['target']
target_names = iris['target_names']
feature_names = iris['feature_names']
df = pd.DataFrame(data,columns=feature_names)
df

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

6.拆分数据集
把data和target取一部分作为测试数据,剩下的作为训练数据
从sklearn库的model_selection模块中导入train_test_split函数,该函数用于将数据集划分为训练集和测试集。

from sklearn.model_selection import train_test_split 
# test_size
# 整数:测试数据的数量
# 小数:测试数据的占比,一般比较小,0.2,0.3

x_train, x_test, y_train, y_test = train_test_split(data,
                                                    target,
                                                    test_size=0.2)
x_train.shape, x_test.shape
# y_test 表示测试数据的真实结果
# y_pred:表示测试数据的预测结果

7.使用KNN算法

knn = KNeighborsClassifier()
knn.fit(x_train, y_train)
knn.score(x_test,y_test)
#0.33 
#0.7以上:得分正常
#0.8以上:比较好
#0.9以上:非常好

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

3.3 预测年收入是否大于50K美元

1.导入数据分析三剑客

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

2.导入KNN算法

# 谷歌的机器学习库 
from sklearn.neighbors import KNeighborsClassifier

3.导入warnings模块,并设置警告过滤器为忽略所有警告

import warnings
warnings.filterwarnings(action='ignore')

读取adults.csv文件,最后一列是年收入,并使用KNN算法训练模型,然后使用模型预测一个人的年收入是否大于50

```python
adults = pd.read_csv('../data/adults.csv')
adults

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

4.获取年龄age、教育程度education、职位workclass、每周工作时间hours_per_week 作为机器学习数据 获取薪水作为对应结果

data = adults[['age','education','workclass','hours_per_week']].copy()
target = adults['salary']

5.数据转换,将String/Object类型数据转换为int,用0,1,2,3…表示
使用factorize()函数

data['education'] = data['education'].factorize()[0]
data['workclass'] = data['workclass'].factorize()[0]
data

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能
6.拆分数据集:训练数据和预测数据

x_train,x_test,y_train,y_test = train_test_split(data,target,test_size=0.2)
x_train

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能

7.使用KNN算法

knn = KNeighborsClassifier()
knn.fit(x_train,y_train)
knn.score(x_test,y_test)

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解,机器学习算法,机器学习,分类,人工智能文章来源地址https://www.toymoban.com/news/detail-816583.html

到了这里,关于2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习】分类算法 - KNN算法(K-近邻算法)KNeighborsClassifier

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 is_array() 可以 「检测」 变量是不是 「数组」 类型。 语法 参数 $var :需要检

    2024年02月16日
    浏览(31)
  • 【k近邻】 K-Nearest Neighbors算法汇总

    目录 k近邻算法思想 k近邻算法原理 k近邻算法流程 距离度量的选择 数据维度归一化 k值的选择 k近邻算法优缺点 少数服从多数 K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例 最邻近 的K个实例, 这K个实例的多数属于某个类 ,就把该输

    2024年02月22日
    浏览(30)
  • 算法笔记 近似最近邻查找(Approximate Nearest Neighbor Search,ANN)

    精准最近邻搜索中数据维度一般较低,所以会采用穷举搜索,即在数据库中依次计算其中样本与所查询数据之间的距离,抽取出所计算出来的距离最小的样本即为所要查找的最近邻。 当数据量非常大的时候,搜索效率急剧下降。 ——近似最近邻查找(Approximate Nearest Neighbor

    2024年02月09日
    浏览(27)
  • 李飞飞计算机视觉k-Nearest Neighbor

    给计算机很多数据,然后实现学习算法,让计算机学习到每个类的外形 输入:输入是包含N个图像的集合,每个图像的标签是K种分类标签中的一种。这个集合称为训练集。 学习:这一步的任务是使用训练集来学习每个类到底长什么样。一般该步骤叫做训练分类器或者学习一个

    2024年02月17日
    浏览(28)
  • 机器学习——K近邻(KNN)算法

    目录 一、knn算法概述 1.简单介绍 2.工作原理 3.knn算法中常用的距离指标 4.knn算法优势 5.knn算法一般流程 二、knn算法经典实例——海伦约会网站 三、关于天气和旅行适合度的例子 四、总结 K近邻算法(KNN)是一种用于分类和回归的统计方法。k-近邻算法采用测量不同特征值之

    2024年01月16日
    浏览(26)
  • 【机器学习实战】K- 近邻算法(KNN算法)

    K-近邻算法 ,又称为  KNN 算法 ,是数据挖掘技术中原理最简单的算法。 KNN  的工作原理:给定一个已知类别标签的数据训练集,输入没有标签的新数据后,在训练数据集中找到与新数据最临近的 K 个实例。如果这 K 个实例的多数属于某个类别,那么新数据就属于这个类别。

    2023年04月20日
    浏览(39)
  • 机器学习——K最近邻算法(KNN)

    机器学习——K最近邻算法(KNN) 在传统机器学习中,KNN算法是一种基于实例的学习算法,能解决分类和回归问题,而本文将介绍一下KNN即K最近邻算法。 K最近邻(KNN)算法是一种基于实例的学习算法,用于分类和回归问题。它的原理是 根据样本之间的距离来进行预测 。 核

    2024年02月09日
    浏览(30)
  • 【Python机器学习】实验06 KNN最近邻算法

    1. k k k 近邻法是基本且简单的分类与回归方法。 k k k 近邻法的基本做法是:对给定的训练实例点和输入实例点,首先确定输入实例点的 k k k 个最近邻训练实例点,然后利用这 k k k 个训练实例点的类的多数来预测输入实例点的类。 2. k k k 近邻模型对应于基于训练数据集对

    2024年02月15日
    浏览(31)
  • 【Python】机器学习-K-近邻(KNN)算法【文末送书】

             目录 一 . K-近邻算法(KNN)概述  二、KNN算法实现 三、 MATLAB实现 四、 实战         K-近邻算法(KNN)是一种基本的分类算法,它通过计算数据点之间的距离来进行分类。在KNN算法中,当我们需要对一个未知数据点进行分类时,它会与训练集中的各个数据点进

    2024年02月08日
    浏览(31)
  • 用K近邻(KNN)机器学习算法进行股票走势预测-Python

    K近邻(KNN,K-Nearest Neighbors)是最简单的机器学习算法之一,可用于回归和分类。KNN是一种“惰性”学习算法,从技术上讲,它不训练模型来进行预测。K近邻的逻辑是,假设有一个观测值,这个观测值被预测属于离它k个最近观测值中所占比例最大的那一个类。KNN方法是直接尝试

    2024年02月04日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包