Python高级--K-近邻算法(KNN)

K近邻算法(KNN)及案例(Python) 1 算法简介 K近邻算法(英文为K-Nearest Neighbor,因而又简称KNN算法)是非常经典的机器学习算法。 K近邻算法的原理非常简单:对于一个新样本,K近邻算法的目的就是在已有数据中寻找与它最相似的K个数据,或者说“离它最近”的K个数据,如果这K个数据大多数属于某个类别,则该样本也属于这个类别。 (K的含义)以下图为例,假设五角星代表爱情片,三角形代表科幻片。此时加入一个新样本正方形,需要判断其类别。当选择以离新样本最近的3个近邻点(K=3)为判断依据时,这3个点由1个五角星和2个三角形 阅读详情

文中数据下载

K nearest neighbour
K-近邻算法采用测量不同特征值之间的距离方法进行分类。
优点:精度高、对异常值不敏感、无数据输入假定。
缺点:时间复杂度高、空间复杂度高。
适用数据范围:数值型和标称型。

这里写图片描述

一、K-近邻算法(KNN)举例

这里写图片描述

1)工作原理

存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据

与所属分类的对应关系。输人没有标签的新数据后,将新数据的每个特征与样本集中数据对应的
特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们
只选择样本数据集中前K个最相似的数据,这就是K-近邻算法中K的出处,通常*K是不大于20的整数。
最后 ,选择K个最相似数据中出现次数最多的分类,作为新数据的分类*。

2)算法实例

回到前面电影分类的例子,使用K-近邻算法分类爱情片和动作片。有人曾经统计过很多电影的打斗镜头和接吻镜头,下图显示了6部电影的打斗和接吻次数。假如有一部未看过的电影,如何确定它是爱情片还是动作片呢?我们可以使用K-近邻算法来解决这个问题。
这里写图片描述

首先我们需要知道这个未知电影存在多少个打斗镜头和接吻镜头,上图中问号位置是该未知电影出现的镜头数图形化展示,具体数字参见下表。

这里写图片描述

即使不知道未知电影属于哪种类型,我们也可以通过某种方法计算出来。首先计算未知电影与样本集中其他电影的距离,如图所示。这里写图片描述

现在我们得到了样本集中所有电影与未知电影的距离,按照距离递增排序,可以找到K个距
离最近的电影。假定k=3,则三个最靠近的电影依次是California Man、He’s Not Really into Dudes、Beautiful Woman。K-近邻算法按照距离最近的三部电影的类型,决定未知电影的类型,而这三部电影全是爱情片,因此我们判定未知电影是爱情片。

3)欧几里得距离(Euclidean Distance)

欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。公式如下:
这里写图片描述

二、在scikit-learn库中使用k-近邻算法

  • 分类问题:from sklearn.neighbors import KNeighborsClassifier

  • 回归问题:from sklearn.neighbors import KNeighborsRegressor

三、简单示例(分类)

给出一组数据(身高、体重、鞋子尺码)判断性别

分析:这是一个使用K-临近算法(KNN)的分类问题

1)创建训练数据(特征和结果)

1.训练样本的特征

注意:这里的特征需要和结果一一对应

'''
X_train:训练样本的特征(一列值)
y_train:训练样本的结果(标签)
'''
# 传入训练数据  
#  身高,体重, 鞋码
X_train = np.array([
    [177,73,42],
    [150,44,36],
    [177,63,41],
    [160,52,35],
    [165,70,40],
    [179,80,44],
    [156,40,36],
    [155,50,36]
])
# 一一传入训练数据的样本结果
y_train = np.array(['male','female','male','female','male','male','female','female'])

2)创建 获取分类的模型

KNeighborsClassifier(n_neighbors=5)
功能:实现k近邻投票的分类器。

# n_neighbors:获取最近的几个  默认是5个
knn_c = KNeighborsClassifier(n_neighbors=5)

3)模型训练

knn.fit(X, y)
功能:将训练数据的特征和结果传入进行训练
以X为训练数据,y为目标值 拟合模型

'''
参数 X 是训练数据的特征
参数 y 是训练数据的结果(标签)
'''
knn_c.fit(X_train,y_train)

4)模型测试

knn.predict(X)
功能:通过训练好的模型将测试数据传入,返回测试结果
为提供的数据预测类标签

knn_c.predict([
    [190,100,45],
    [150,35,32]
])

array(['male', 'female'], dtype='<U6')

5)得出结果

返回测试结果与实际数据符合实际情况,这就是K-近邻算法(KNN)处理分类问题

四、机器学习–鸢尾花(分类)

机器学习常用库sklearn

scikit-learning 提供数据样本,可以供我们研究机器学习模型

# 机器学习里面包含的数据集
from sklearn import datasets

1)获取训练数据(特征和结果)

使用load方法加载数据可以加载很多可供我们使用的数据
这里我们使用鸢尾花数据

iris_data = datasets.load_iris()
iris_data

#这里返回数据较多,我们拿出部分分析
# data:鸢尾花样本,该样本有四个特征,表示 花萼长度 花萼宽度 花瓣长度 花瓣宽度
# target:表示鸢尾花的种类 0(setosa) 1(versicolor) 2(virginica)
{'data': array([[5.1, 3.5, 1.4, 0.2],
        [4.9, 3. , 1.4, 0.2],
        [4.7, 3.2, 1.3, 0.2],
        [4.6, 3.1, 1.5, 0.2],
        。。。
        [6.5, 3. , 5.2, 2. ],
        [6.2, 3.4, 5.4, 2.3],
        [5.9, 3. , 5.1, 1.8]]),
 'target': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]),}
        #还有一些描述的信息

我们获取的iris_data是一个字典类型的数据

1. 获取训练样本特征

data = iris_data.data        #训练样本的值
feature = iris_data.feature_names  #训练样本的值对应的名称

2. 获取训练样本结果

target = iris_data.target  # 所有样本的目标值
target_names = iris_data.target_names  # 目标值对应的名称

3. 将得到的数据绘制图形

DataFrame(data).plot()

这里写图片描述


画图研究前两个特征和分类之间的关系

(二维散点图只能展示两个维度)

1、这里截取前两个特征来展示

X_train = data[:,0:2]  # 训练样本的特征
y_train = target  # 训练样本的结果
#目前取得样本特征和结果依旧是一一对应的关系

2、展示特征和结果之间的关系

花萼长度为x, 花萼宽度为y 对所有样本进行定位

我们使用点的颜色对其进行分类,散点图参数c可以传入一个数组,数组我们可以用样本的值使传入的x, y对应的点得颜色与值一一对应,这样就将图中的点分为三类区分开

plt.scatter(X_train[:,0],X_train[:,1],c=y_train)
plt.xlabel('sepal length')  #设置x轴的标签
plt.ylabel('sepal width')  #设置y轴的标签

这里写图片描述

2)创建 获取分类的模型

创建分类模型

knn_c = KNeighborsClassifier(n_neighbors=5)

3)模型训练

将训练数据样本特征和结果放入模型训练

knn_c.fit(X_train,y_train)

4)模型测试

将测试数据传入训练模型,返回训练结果

knn_c.predict([
    [4.5,4.0],
    [7.5,3.0],
    [5.25,2.25]
])

array([0, 2, 1])

4)测试结果分析

测试数据的预测结果与实际结果相同

5)创造测试数据,测试模型结果

1、创造测试数据

先取到x轴线的范围和y轴的范围取到

# 为了全面,将数据的范围稍微扩大一点
xmin = X_train[:,0].min()-0.5   
xmax = X_train[:,0].max()+0.5
ymin = X_train[:,1].min()-0.5
ymax = X_train[:,1].max()+0.5

将x轴的数据和y轴的数据每隔 0.01 取一份

# x轴范围内要取遍
x = np.arange(xmin,xmax,0.01)
# y轴范围内也要取遍
y = np.arange(ymin,ymax,0.01)
#我们拿到坐标轴的数据之后,我们要拿到每个点的坐标

拿到每个点对应的x,y坐标

xx,yy = np.meshgrid(x,y)     # 将画布上所有的点取遍

这里写图片描述

xx.flatten(),yy.flatten()    # 将矩阵扁平化

(array([3.8 , 3.81, 3.82, ..., 8.38, 8.39, 8.4 ]),
 array([1.5, 1.5, 1.5, ..., 4.9, 4.9, 4.9]))

这里写图片描述

# 把对应位置的两个内容取出来 变成新的列表
X_test = np.c_[xx.flatten(),yy.flatten()] # 将平面上所有的点取遍 并 用来作为测试数据

array([[3.8 , 1.5 ],
       [3.81, 1.5 ],
       [3.82, 1.5 ],
       ...,
       [8.38, 4.9 ],
       [8.39, 4.9 ],
       [8.4 , 4.9 ]])

这里写图片描述

2、使用刚刚训练好的模型进行预测

y_ = knn_c.predict(X_test)  #预测后返回预测结果值

3、绘制测试结果图形

根据特征绘制样本的两个特征 X_test[:,0],X_test[:,1]
根据模型预测的结果 y_
绘制样本的颜色


plt.scatter(X_test[:,0],X_test[:,1],c=y_) 

这里写图片描述

4、将训练数据和自己创建的测试数据作比较

把真实的训练数据也画到图上

plt.scatter(X_test[:,0],X_test[:,1],c=y_)
plt.scatter(X_train[:,0],X_train[:,1],c=y_train,cmap=cmap0) #这里的cmap给color设置颜色

这里写图片描述

5、为图像制定颜色

需要导入

from matplotlib.colors import ListedColormap
cmap0 = ListedColormap(['red','green','blue'])
# 将cmap0传入上面的图的效果

五、预测趋势(回归)

导包

from sklearn.neighbors import KNeighborsRegressor

1)生成训练样本数据

1、种子生成器

功能:固定随机数,多次执行,产生相同的随机数
np.random.seed(0)

np.random.seed(0)
np.random.random()
nd = np.random.rand(40,1)  #  样本 40行1列
nd

2、对生成的训练数据排序np.sort

np.sort() 默认对最内层的数据进行排序 现在要对每一行进行排序 让样本从小到大排列
设置 np.sort(nd,axis=0)

对nd进行排序 然后放大5倍数

X_train = 5*np.sort(nd,axis=0)

3、训练数据值

结果集 是一个一维数组,所以在这里要将他改变

y_train = np.sin(X_train).flatten()

2)绘制训练数据

plt.scatter(X_train,y_train)

这里写图片描述

3)添加噪声

给y_train添加一些噪声 让x和y的关系不要那么明确

我们的训练数据为 40 行一列的数据,我们每隔4个给加一个随机噪声

1、制造噪声

noise = np.random.random(size=10)/2
noise

array([0.2343256 , 0.48838054, 0.30242276, 0.36963179, 0.0195939 ,
       0.14140348, 0.06009828, 0.1480701 , 0.05936386, 0.15899159])

2、添加噪声

每隔4个加一个噪声

y_train[::4] += noise

2、添加噪声后的图形

plt.scatter(X_train,y_train)

这里写图片描述

4)生成模型

from sklearn.neighbors import KNeighborsRegressor
# 获取模型
knn = KNeighborsRegressor(n_neighbors=30)

5)训练数据

把训练数据传入模型,
x:训练样本特征
y:训练样本值

'''
# X_train是多行数据 有几个样本就有几行 有几个特征就有几列
# y_train 是一个一维的数组 里面直接装着结果值
'''
knn.fit(X_train,y_train)

6)创建测试数据

把x范围内的值取遍 然后用机器学习模型获取y_
这里的样本数据为一列,所以绘图时不用调整坐标(相对于上面鸢尾花来说)。

xmin = X_train.min()
xmax = X_train.max()
X_test = np.arange(xmin,xmax,0.01)

7)测试样本值

注意,有一个特征,传入的样本值应该为n行1列

y_ = knn.predict(X_test.reshape(-1,1))

8)绘图显示数据

plt.plot(X_test,y_,color='green',label='predict')  #设置颜色和图标
plt.scatter(X_train,y_train,label='real',color='k')
plt.legend()  #显示图标

这里写图片描述

六、人类动作识别

1) 数据保存np.save(保存路径, 数据)

1)保存*.npy数据文件np.save

nd = np.array([1,2,3])
nd
# np.save方法可以把数据保存到本地 参数 1.是路径 2.是数据
np.save('./test',nd)  #这里可以不输入文件后缀

2)加载*.npy数据文件np.load(”文件路径”)

np.load('./test.npy') 

array([1, 2, 3])

2) 导入训练集和测试集

1、导入数据

X_train = np.load('./data/x_train.npy')
y_train = np.load('./data/y_train.npy')

2、查看数据信息

X_train.shape

(7352, 561)  #数据有 7352行,561列
y_train.size

7352
Series(y_train).unique()

array([5, 4, 6, 1, 3, 2], dtype=int64)
'''
这里训练结果集代表的运动类型
    1:'walking',              #走
    2:'walking upstairs',     #上楼
    3:'walking downstairs',   #下楼
    4:'sitting',              #坐着
    5:'standing',             #站着
    6:'laying'                #躺着
'''

3、画图查看各个特征的图形

我们随机抽查 第100,200,300,400,500,600个样本查看训练样本的结果

n = 100
y_train[n]
labels[y_train[n]]

'walking'
------------------------
n = 200
y_train[n]
labels[y_train[n]]

'standing'
------------------------
n = 300
y_train[n]
labels[y_train[n]]

'walking downstairs'
------------------------
n = 400
y_train[n]
labels[y_train[n]]

'sitting'
------------------------
n = 500
y_train[n]
labels[y_train[n]]

'walking upstairs'
------------------------
n = 600
y_train[n]
labels[y_train[n]]

'laying'

我们可以看出抽取的这 6 个数据将全部类型的取出来,我们将这6个训练样本绘图展示观察

plt.figure(figsize=(20,10))  #设置画布大小
for i in [1,2,3,4,5,6]:
    axes = plt.subplot(3,2,i)  #创建子画布
    axes.plot(X_train[i*100],color=colors[i-1])  #在子画布上画图
    axes.set_title(labels[y_train[i*100]])  设置子画布的标题

这里写图片描述

3) 训练模型

1、创建训练模型

knn = KNeighborsClassifier(n_neighbors=5)

2、训练数据

传入训练数据与训练结果

knn.fit(X_train,y_train)

3、

4、

4) 模型预测

y_ = knn.predict(X_test)

array([5, 5, 5, ..., 2, 2, 1], dtype=int64)

5) 预测准确率

1、自己计算

将预测值与测试值相等,得出预测正确的个数

y_ == y_test  # 获取的是布尔值的序列 相等的是True 不想等是False

array([ True,  True,  True, ...,  True,  True, False])

测试结果个数与预测结果个数

(y_ == y_test).sum()

2657

y_test.size

2947

两者相乘

(y_ == y_test).sum() / y_test.size

0.9066847641669494

2、KNN自带方法

机器学习模型 给我们提供了 打分的方法

# 参数 1.是测试集的特征数据 2.是测试集的真实结果
# 把测试集的特征数据传入后 机器学习模型 会 计算得到预测结果y_
# 然后和传入的真是结果 y_test 对比 返回准确率
knn.score(X_test,y_test)
KNN算法原理及python实现 1 KNN算法原理 2 python手工实现KNN算法 3 sklearn实现KNN算法 1 KNN算法原理 1.1 基本概念 KNN(K-NearestNeighbor)即K近邻算法,是数据挖掘分类技术中最简单的方法之一。所谓K近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻近值来代表。 1.2 KNN算法原理 假设特征空间有8个样本点,其中红色点为良性肿瘤,蓝色点为恶性肿瘤,现在要预测绿色点是良性肿瘤还是恶性肿瘤,我们需要计算出绿色点到所有其他样本点的距离,选择出距离最小的K. 阅读详情

相关推荐

数据挖掘领域十大经典算法之—K-邻近算法/kNN(超详细附代码)

相关文章: 数据挖掘领域十大经典算法之—C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之—K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之—SVM算法(超详细附代码) 数据挖掘领域十大经典算法之—Apriori算法 数据挖掘领域十大经典算法之—EM算法 数据挖掘领域十大经典算法之—PageRank算法 数据挖掘领域十大经典算法之—...

fuqiuai的博客 2万+

python【机器学习实战】K-邻近算法(KNN)

什么是K-邻近算法? K-邻近算法(k-NearestNeighbor)简称KNN,是分类算法中的一种。KNN通过计算新数据与历史样本数据中不同类别数据点间的距离对新数据进行分类。简单来说就是通过与新数据点最邻近的K个数据点来对新数据进行分类和预测。K-邻近分类算法是数据挖掘(classification)技术中最简单的算法之一,其指导思想是”近朱者赤,近墨者黑“,即由你的邻居来推断出你的类别。 k-邻近算法工作原理 存在一个样本数据集合,也称作训练样本集,并且样本集合每个数据都存在标签,即我们知道样本集中

qq_51307413的博客 827

python 实现K近邻算法并进行可视化 调用sklearn的knn算法进行结果对比

  K近邻算法 思想:不知其人视其友 K近邻算法(knn)实现步骤:     计算当前点与已知类别数据集中的点的距离     距离递增排序,选出距离最小的k个点     确定前k个点类别出现的频率     将频率最高的类别作为当前点的预测分类 完整代码实现 #!/usr/bin/python # -*- coding: utf-8 -*- # @author: T # 导入数据集 f...

TDW blog 4256

k近邻详解及其Python实现

一 模型概述 1 定义 给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的 k 个实例,这 k 个实例的多数属于某个类,就把该输入实例分为这个类。 2 距离度量 k 近邻法常用的距离度量是欧氏距离,公式如下: 3 k 值的选择 如果选择比较小的k值,预测结果会对近邻的实例点比较敏感,如果近邻的实例点是噪声点,会导致预测出错,也就是容易发生过拟合。 如果选择比较大的k值,距离待预测实例点较远的实例点(不相似的)也会对预测起作用,使预测失误。在实际应用中k值一般取一个比较小的数值,通常采用

qq_44822951的博客 729

深入详解K近邻算法(KNN)在眼科疾病诊断中的应用及实现

本文探讨了深度学习技术在眼科疾病诊断中的应用,重点研究了糖尿病视网膜病变和青光眼两种常见眼病的自动识别方法。通过构建卷积神经网络模型,我们在眼底图像和OCT扫描图像的分类任务上取得了突破性进展。研究结果表明,深度学习模型在眼科疾病早期筛查中具有重要应用价值,能够有效辅助临床诊断工作。

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 2014

机器学习实战k-邻近算法(kNN)简单实施代码解读

一.概念k-邻近算法是最简单的机器学习算法之一。k-邻近算法采用测量不同特征值之间的距离(具体说是欧氏距离)的方法进行分类。输入待分类的数据后,计算输入特征与样本集数据对应特征的距离,选择样本集中与输入特征距离最小的前k个样本,统计这k个样本数据中出现次数最多的类别作为新数据的分类。二.kNN的简单实施代码及注释from numpy import * import operatordef creat

SCUT_Arucee的博客 3269

k-近邻算法(Python)

k-近邻算法(kNN) 1.简介 k-近邻算法采用测量不同特征值之间的距离方法进行分类 优点:精度高,对异常值不敏感,无数据输入假定 缺点:计算复杂度高,空间复杂度高 适用数据范围:数值型和标称型2.工作原理 存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,即我们知道样本集中的每一数据与所属分类的关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应

u010637238的专栏 330

Python高级算法——K近邻算法(K-Nearest Neighbors,KNN)

K近邻算法是一种简单而强大的监督学习算法,适用于多种分类和回归问题。本文详细介绍了KNN的算法原理、距离度量、K值选择、优缺点,并通过代码示例演示了KNN在鸢尾花数据集上的应用。在实践中,根据具体问题选择合适的K值和距离度量方法非常重要。通过深入理解KNN,可以更好地应用于实际场景中,取得更好的分类效果。

Echo_Wish 1487

K-近邻算法(k-NN)的原理及python代码案例实现

1 K-NN算法的原理 1.1 K-NN概念 K Nearest Neighbor算法⼜叫KNN算法, 这个算法是机器学习⾥⾯⼀个⽐较经典的算法, 总体来说KNN算法是相对⽐ 较容易理解的算法。 定义: 如果⼀个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某⼀个类别, 则该样本也属于这 个类别。(起源:KNN最早是由Cover和Hart提出的一种分类算法);俗话就是:根据“邻居”来推断出你的类别。 1.2 基本流程 1)计算已知类别数据集中...

A496608119的博客 2544

蓝牙RSSI定位实战:用Arduino+BLE4.0搭建厘米级室内定位系统(附完整代码)

本文详细介绍了如何利用Arduino和BLE4.0模块构建厘米级精度的蓝牙RSSI室内定位系统。通过硬件选型、系统架构设计、三点定位算法实现及误差补偿技术,实现在商场导览、仓储管理等场景中的高精度定位。附完整代码和实测数据,帮助开发者快速部署商用级解决方案。

peace的博客 897

论文阅读------Exposure Fusion: A Simple and Practical Alternative to High Dynamic Range Photography

Mertens T, Kautz J, Van Reeth F. Exposure fusion: A simple and practical alternative to high dynamic range photography[C]//Computer graphics forum. Oxford, UK: Blackwell Publishing Ltd, 2009, 28(1): 161-171. 摘要 本文提出了一种将包围曝光的序列融合到高质量图像中的技术,而无需先转换为高动态范围(HD.

qq_25283239的博客 3396

KNN算法——python实现

二、Python实现 对于机器学习而已,Python需要额外安装三件宝,分别是Numpy,scipy和Matplotlib。前两者用于数值计算,后者用于画图。安装很简单,直接到各自的官网下载回来安装即可。安装程序会自动搜索我们的python版本和目录,然后安装到python支持的搜索路径下。反正就python和这三个插件都默认安装就没问题了。 另外,如果我们需要添加...

weixin_34032827的博客 118

2月底速申!国家超算互联网免费算力全攻略|编程小白零消耗实操首测_2026-02-26

2月底速申!国家超算互联网免费算力全攻略|编程小白零消耗实操首测作为一名编程小白,我目前正在学习编译和运行 Qt 框架,也在逐步摸索开发环境的配置方法,目标是打造一款属于自己的个人效率工具。就在这时,我挖到了一个国家级硬核福利:国家超算互联网核心节点开放免费试运行!哪怕是零基础如我,也能申领到 100 卡时异构加速卡算力,关键是——2 月底前申请更稳妥,早占位早使用。

qq_58517981的博客 2101

Python KNN k-邻近算法 手动实现及分析 分类、回归、糖尿病预测实战

Python KNN k-邻近算法 算法原理 \qquad k-邻近算法的核心思想是未标记样本的类别,由距离其最近的k个邻近投票来决定。 \qquad 假设,我们有一个已经标记的数据集,即已经知道了数据集中每个样本所属的类别。此外,有一个未标记的数据样本,我们的任务是预测出这个数据样本所属的类别。k-邻近算法的原理是,计算待标记的数据样本和数据集中每个样本的距离,取距离最近的k个样本。待标记的数据...

Rp的博客 2863

ESP32锂电池电量检测实战:从引脚选择到低功耗优化(附完整电路图)

本文详细介绍了ESP32锂电池电量检测的实战方案,从ADC引脚选择到低功耗优化,提供完整的电路图和代码实现。通过MOS管智能开关和深度睡眠技术,显著降低静态功耗至0.5μA,提升设备续航能力。适合物联网开发者解决电量检测中的常见问题。

weixin_28731223的博客 461

C#通过Aforge调用电脑摄像头(附代码)

C#标准库本身不带有能调用电脑摄像头的库,如果利用windows自身的API来实现的话,着实有些麻烦。Aforge这个第三方库能很好的实现调用、处理的功能。 PS:文末给大家分享了完整的项目源码,各位最好先下载下来,对照着来看 1、先看一下效果 2、Aforge介绍 AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。 3、我使用的开发环境 操作系统

weixin_44996090的博客 1万+

K-邻近算法(KNN)

1. KNN 算法原理 k-近邻算法(k-Nearest Neighbour algorithm)的工作原理:给定一个已知标签类别的训练数据集,输入没有标签的新数据后,在训练数据集中找到与新数据最邻近的 k 个实例,如果这 k 个实例的多数属于某个类别,那么新数据就属于这个类别。即由那些离新数据最近的 k 个实例来投票决定新数据归为哪一类。 最邻近分类算法是数据挖掘分类(classificat...

wangprince2017 1万+

一文让你轻松理解Wi-Fi理论速率计算方式

如上所示,在使用FDM的802.11协议上,最小子载波带宽为312.5KHz,那一个信道频宽为20MHz的信道可以分成64个子载波,但是由于技术原因,有效使用的是52个子载波,实际用于数据传输的只有48个,有4个子载波充当导频载波。载波:交流信号或者直流信号本身不具备数据传输能力,但是如果信号发生很小的波动或者变化,从而实现数据的收发。所谓子载波,就是将信号划为为很多的小信道,这些小信道可以实现数据的并发传输,子载波我们英文称为subcarrier,也称为音调(tone)。Symbol time如下所示。

1042484520@qq.com(邮箱) 3447

机器学习——K-近邻算法(KNN)

K-近邻算法(K-Nearest Neighbors, 简称 KNN)是一种基于实例的机器学习算法,广泛应用于分类和回归任务。它通过计算数据点之间的相似度(通常是距离度量),然后预测新的数据点的标签或数值。在图像分类任务中,KNN 可以通过计算图像特征向量之间的距离来分类,例如手写数字识别。KNN 可用于垃圾邮件检测,通过比较新邮件和历史邮件的相似性,判断其类别。原则,根据 kkk 个最近邻居的类别进行投票,选出出现最多的类别。基于用户相似度的推荐系统中,KNN 常用于查找兴趣相似的用户群体。

CYTLOVELY的博客 4917

【YOLOv8科研级优化】集成YOLOv10的SCDown采样模块,让你的模型下采样更高效更精准

打开确保模型解析器能识别SCDown模块。通过将YOLOv10的SCDown模块集成到YOLOv8中,我们实现了一个“细节保留+高效下采样”的目标检测模型。这个改进不仅在工程上能提升小目标、细粒度场景的检测效果,更在科研上提供了“分阶段下采样”的创新思路——这种思路可以延伸到其他卷积网络(如ResNet、MobileNet)的下采样层改进中,帮你在论文中打造独特的研究点。

m0_71589036的博客 136

核心组件大换血:Backbone与Neck魔改篇:YOLO26魔改Neck:引入BiFPN(双向特征金字塔),多尺度融合能力飙升

本文深入解析了YOLO26目标检测模型中Neck部分的优化策略,重点探讨了BiFPN(双向特征金字塔网络)的原理与实现。文章首先指出YOLO26原生FPN+PAN结构在多尺度特征融合上的局限性,特别是在小目标检测和边缘部署场景中的性能瓶颈。随后系统梳理了Neck网络的演进历程,从FPN、PANet到BiFPN和ASFF,详细对比了各架构的特点。核心部分展示了如何将BiFPN引入YOLO26,包括可学习权重融合、双向跨尺度连接等关键技术实现,并提供了PyTorch代码示例。本文为需要提升小目标检测性能或优化边

ZDQ58818的博客 246

k近邻算法K-Nearest Neighbors(KNN)

KNN算法的核心思想以及相关优化

2401_88885149的博客 1882

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

KNN(邻近算法)

一、 什么是KNN 1、概念: KNN(K-NearesNeighbor) 即K邻近法,是一个理论上比较成熟的、也是最简单的机器学习算法之一 。 2、核心思想 一个样本与数据集中的k个样本最相似, 如果这k个样本中的大多数属于某一个类别, 则该样本也属于这个类别。也就是说,该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。KNN方法在类别决策时,只与极少量的相邻样本有关。 3、KNN算法步骤 3.1、计算距离 给定两个样本 和 ,其中n表示特征数 ,X和Y两个向量间的欧

冷锋的博客 2万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【机器学习实战】K- 近邻算法(KNN算法)

K-近邻算法 一、概述 K-近邻算法,又称为KNN 算法,是数据挖掘技术中原理最简单的算法。 KNN的工作原理:给定一个已知类别标签的数据训练集,输入没有标签的新数据后,在训练数据集中找到与新数据最临近的 K 个实例。如果这 K 个实例的多数属于某个类别,那么新数据就属于这个类别。 简单理解为: 由那些离 X 最近的 K 个点来投票决定 X 归为哪一类 举个例子,可以用 KNN 算法来分类一部电影是爱情片还是动作片(利用打架镜头和接吻镜头来做大致判断) 这个表就是我们已有的数...

forever_bryant的博客 4233

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

k-近邻算法(KNN)Python实现

优快云 博客 创作中心 学院 ...

roc__chen的博客 1万+

【python】KNN(K近邻算法)实现及可视化

文章目录KNN(K近邻算法)实现及可视化1 算法描述:2 KNN算法的Python实现:2.1 实践问题背景:2.2 目标:2.3 数据集:2.4 要求:2.5 实施步骤:3 改进:4 截止到3中改进的第二步,代码如下: KNN(K近邻算法)实现及可视化 1 算法描述: KNN的工作原理::给定一个已知标签类别的训练数据集,输入没有标签的新数据后,在训练数据集中找到与新数据最邻 近的k个实例,如果这k个实例的多数属于某个类别,那么新数据就属于这个类别。可以简单理解为:由那些离X最 近的k个点来投票

5041
上一篇: Python高级--城市气候与海洋距离关系的研究
下一篇: ocr 光学字符识别(Optical Character Recognition)识别数字
PyRookie
博客等级 码龄8年 89粉丝 32原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值