首页>动态>正文
当前滚动:机器学习-KNN算法
2023-05-30 18:05:39    来源:博客园
1. 算法原理(K-Nearest Neighbor)本质是通过距离判断两个样本是否相似,如果距离够近就认为他们足够相似属于同一类别找到离其最近的 k 个样本,并将这些样本称之 为「近邻」(nearest neighbor)。对这 k 个近邻,查看它们的都属于何种类别(这些类别我们称作「标签」 (labels))。然后根据“少数服从多数,一点算一票”原则进行判断,数量最多的的标签类别就是新样本的标签类别。其中涉及到的原理是“越相近越相似”,这也是KNN的基本假设。2. 实现过程和距离的确定

1) 实现过程


(资料图片仅供参考)

假设 X_test 待标记的数据样本,X_train 为已标记的数据集。遍历已标记数据集中所有的样本,计算每个样本与待标记点的距离,并把距离保存在 Distance 数组中。对 Distance 数组进行排序,取距离最近的 k 个点,记为 X_knn.在 X_knn 中统计每个类别的个数,即 class0 在 X_knn 中有几个样本,class1 在 X_knn 中有几个样本等。待标记样本的类别,就是在 X_knn 中样本个数最多的那个类别。

2) 距离的确定

该算法的「距离」在二维坐标轴就表示两点之间的距离,计算距离的公式有很多。

我们常用欧拉公式,即“欧氏距离”。(x1、x2、x3为特征)$$\sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2 + (x_3 - y_3)^2+...+(x_n - y_n)^2} =\sqrt{ \sum_{i=1}{n}{(x_i-y_i)2}}$$

3. 算法优缺点

算法超参数是 k(人为设置的参数为超参数),k 可以理解为标记数据周围几个数作为参考对象,参数选择需要根据数据来决定。(通过学习曲线找最优的k)

k 值越大,模型的偏差越大,对噪声数据越不敏感。k 值很大时,可能造成模型欠拟合。k 值越小,模型的方差就会越大。但是 k 值太小,容易过拟合4. 算法的变种

变种一:默认情况下,在计算距离时,权重都是相同的,但实际上我们可以针对不同的邻居指定不同的距离权重,比如距离越近权重越高。

这个可以通过指定算法的 weights 参数来实现。

变种二:使用一定半径内的点取代距离最近的 k 个点

在 scikit-learn 中,RadiusNeighborsClassifier 实现了这种算法的变种。当数据采样不均匀时,该算法变种可以取得更好的性能。5. Python代码实现KNN红酒案例
# 红酒参数rowdata = {"颜色深度":[14.13,13.2,13.16,14.27,13.24,12.07,12.43,11.79,12.37,12.04],"酒精浓度": [5.64,4.28,5.68,4.80,4.22,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)
def KNN(x):  #x是输入的点  返回类别       # 1.把10个训练数据提取到data中       data = wine_data.iloc[:,:2].values #将前两列提取出来----data          # 2. 新数据点与10个一维数组的欧式距离       # 数据点第一个特征与10个点的欧式距离       a = ((x-data) ** 2)[:,0] #第一列抽取出来       # 数据点第二个特征与10个点的欧式距离       b = ((x-data) ** 2)[:,1] #第二列抽取出来       # 得到数据点与10个点的欧氏距离       Distance = np.sqrt(a+b)       np.sort(Distance)       # 3.排序找出最近的K个点   K=3       K3 = np.argsort(Distance)[:3] #得到开始表的索引值     6 1 4          # 4.判断类别       y = wine_data.品种       # 根据频数统计判断属于哪一类       return pd.Series([y[i] for i in K3]).value_counts().idxmax()
KNN([[12.3,4.1]])   # OUT:0
6. SCIKIT-LEARN算法库实现KNN(见WineSortKNN.ipynb)

scikit-learn,简称 sklearn, 支持了包括分类回归降维聚类四大机器学习算法,以及特征提取数据预处理模型评估三大模块。

主要设计原则:1) 一致性

​ 所有对象共享一个简单一致的界面(接口)。

估算器:fit()方法。基于数据估算参数的任意对象,使用的参数是一个数据集(对应 X, 有监督算法还需要一个 y),引导估算过程的任意其他参数称为超参数,必须被设置为实例变量。转换器:transform()方法。使用估算器转换数据集,转换过程依赖于学习参数。可以使用便捷方式: fit_transform(),相当于先 fit()再 transform()。(fit_transform 有时被优化过,速度更快)预测器:predict()方法。使用估算器预测新数据,返回包含预测结果的数据,还有score()方法:用于度量给定测试集的预测效果的好坏。(连续 y 使用 R 方,分类 y 使用准确率 accuracy)

2)监控

检查所有参数,所有估算器的超参数可以通过公共实例变量访问,所有估算器的学习参数都可以通过有下划线后缀的公共实例变量访问。

3)防止类扩散

对象类型固定,数据集被表示为 Numpy 数组或 Scipy 稀疏矩阵,超参是普通的 Python 字符或数字。

4) 合成

现有的构件尽可能重用,可以轻松创建一个流水线 Pipeline。

5)合理默认值

大多数参数提供合理默认值,可以轻松搭建一个基本的工作系统

6)SKlearn KNN 实现

class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, *, weights="uniform", algorithm="auto", leaf_size=30, p=2, metric="minkowski", metric_params=None, n_jobs=None)[source]
参数名形式意义
n_neighborsint, default=5近邻 个数
weights{‘uniform’, ‘distance’}, callable or None, default=’uniform’• "uniform":默认参数,不管远近权重都一样,就是最普通的 KNN 算法的形式。• "distance":权重和距离成反比,距离预测目标越近具有越高的权重。• 自定义函数:自定义一个函数,根据输入的坐标值返回对应的权重,达到自定义权重的目的。
algorithm{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, default=’auto’•"brute" :蛮力实现• "kd_tree":KD 树实现 KNN• "ball_tree":球树实现 KNN • "auto": 默认参数,自动选择合适的方法构建模型
leaf_sizeint, default=30当使用KD树或球树,它就是是停止建子树的叶子节点数量的阈值
pint, default=2p=1为曼哈顿距离p=2为欧式距离
metricstr or callable, default=’minkowski‘• "euclidean" :欧式距离• "manhattan":曼哈顿距离• "chebyshev":切比雪夫距离• "minkowski": 闵可夫斯基距离,默认参数
n_jobsint, default=None指定多少个CPU进行运算,-1表示全部都算
红酒案例
from sklearn.neighbors import KNeighborsClassifierclf = KNeighborsClassifier(n_neighbors=3)clf = clf.fit(wine_data.iloc[:,0:2].values,wine_data.iloc[:,-1].values)
#测试单个点clf.predict([[12.3,4.1]])# OUT: array([0]) 属于“黑皮诺”红酒

关键词:

当前滚动:机器学习-KNN算法

1 算法原理(K-NearestNeighbor)-本质是通过距离判断两个样本是否相似,如果距离够近就认为他们足够2023-05-30

今日观点!好的公司名字可以卖钱吗(好的公司名字)

今天小编岚岚来为大家解答以上的问题。好的公司名字可以卖钱吗,好的公司名字相信很多小伙伴还不知道,现在2023-05-30

2023宝山区幼儿园招生对口地段表一览-快播

宝山区2023年适龄幼儿入园区域划分表序号所属街镇幼儿园名称办园性质幼儿园地址招生咨询电话招生范围对应居2023-05-30

外交部:中方强烈谴责对索马里布罗马雷尔军事基地的恐怖袭击_每日速讯

5月30日,外交部发言人毛宁主持例行记者会。有记者提问,26日,约800名索马里青年党武装人员袭击了索马里布2023-05-30

遥控器背光照明电路原理详解 全球新资讯

遥控器背光照明电路原理详解-想通过红外发射管取信号。拆开看了下,红外发射管一端直接接地,另一端通过一2023-05-30

【全球独家】独家|股民出逃!东鹏饮料盘中触及跌停,公司回应:不希望对市场带来负面影响

(付健青)30日,A股开盘后不到10分钟,东鹏饮料触及跌停,股吧中的股民怨声载道,原因是一则减持公告。东2023-05-30

may是几月份英文缩写是几月_may是几月

1、may是5月。2、英文五月名称May,大概是源自罗马神话中专门司管春天和生命的女神玛雅(拉丁文叫Maius),2023-05-30

环球观速讯丨上海云锦东方云筑项目开盘销售摇号排序暂停

上海云锦东方云筑项目开盘销售摇号排序暂停2023年05月30日15:04中国网财经2023-05-30

组图 | 来凤:千亩水稻制种基地播下“致富种” 世界速讯

5月29日,三胡乡苗寨沟村谭家坝内,一幅热闹景象正在上演。40余名苗寨沟村村民穿着轻便的农作服,戴着宽檐2023-05-30

老人高速上迷路 民警救助护送回家 全球实时

原标题:老人高速上迷路民警救助护送回家近日,一对老夫妇出门散步,不料竟然走到了附近的高速公路上,幸得2023-05-30

30日湖南大部有阵雨或雷雨局地中雨 高温将缓解 全球速讯

今天(5月30日),受暖湿气流影响,湖南大部分地区有阵雨或雷阵雨,局地中雨。同时,气温有所下降,高温将2023-05-30

践行科普责任 高精尖实验室带孩子走近爆炸科学

戴上数据手套,便可以灵活操纵仿人灵巧手,轻松完成抓握以及更复杂的手部运动。这种自适应混控仿人灵巧手将2023-05-30

千牛电脑版登录地址_千牛电脑版登录

1、首先,打开电脑,双击桌面上的牛倩图标。2、然后,来到下一页,我们输入用户名和密码;3、然后,登录成2023-05-30

全球热推荐:国产大飞机C919实施常态化商业运行首飞成都

国产大飞机C919实施常态化商业运行首飞成都2023-05-30

快消息!AI 换脸冒充明星直播带货:仅需 3.5 万元,随意“换脸”

IT之家5月30日消息,昨日央视财经曝光了一些直播间使用AI换脸技术,冒充明星进行直播带货的现象。据悉,这种AI2023-05-30

【天天播资讯】酷特智能:公司的产品需求没有明显季度变化差异

每经AI快讯,有投资者在投资者互动平台提问:公司是否有淡旺季?哪个季度是旺季,哪个季度是淡季?酷特智能2023-05-30

《漫威蜘蛛侠2》画面遭吐槽!官方做出回应

在上周的PS展示会上,《漫威蜘蛛侠2》作为本次发布会的重头戏之一亮相,带来了一段11分钟的长实机。2023-05-30

热讯:记者调查:孩子没完没了刷短视频怎么办?

“你怎么又在刷短视频?”“不刷短视频你就Out了!”“你也不看看自己成绩怎么样!”……这是四川成都王2023-05-30

环球播报:防止Windows 11自动更新替换AMD显卡驱动的方法

【ITBEAR科技资讯】5月30日消息,近日,大量Windows11用户反馈在使用某些软件时遭遇AMD显卡驱动不兼容的问2023-05-30

环球速递!脑机接口作为未来产业发展方向!A股将继续震荡筑底

短线方面,教育部表示探索利用AI、VR等技术改进和强化实验教学利好教育及AI板块;工信部表示把脑机接口作为2023-05-30

环球滚动:联合国将苏丹等四国粮食问题警戒级别提至最高级

5月30日电,联合国粮食及农业组织和世界粮食计划署5月29日发布联合报告称,苏丹、海地、布基纳法索和马里已2023-05-30

如何开发新客户的方法_如何去开发新客户

1、第一步:学会做人,拉近与客户的距离销售员每天都要与不同的客户打交道,销售员只有把与客户的关系处理好2023-05-30

天天速看:小黄车押金退款彻底没戏?ofo戴威美国二次创业卖咖啡陷困境

快科技5月29日消息,昔日风光无限、国内共享单车的巨头ofo因经营问题陷入资金危机,欠下了无数车辆押金,至2023-05-30

水溶性油淬火液_关于水溶性油淬火液简述-世界看点

1、水溶性油淬火液是无色透明液体。2、加有防锈、防腐、润湿、杀菌等多种添加剂制成。3、对水有逆溶性。文2023-05-30

uu你已试用过会员加速_会员加速 讯息

1、从2007年11月29日中午12:00开始,在不改变原有计算方式的情况下,加速QQ会员等级升级。2、QQ会员用户在原2023-05-30