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_neighbors | int, 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_size | int, default=30 | 当使用KD树或球树,它就是是停止建子树的叶子节点数量的阈值 |
p | int, default=2 | p=1为曼哈顿距离p=2为欧式距离 |
metric | str or callable, default=’minkowski‘ | • "euclidean" :欧式距离• "manhattan":曼哈顿距离• "chebyshev":切比雪夫距离• "minkowski": 闵可夫斯基距离,默认参数 |
n_jobs | int, 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]) 属于“黑皮诺”红酒
关键词:
1 算法原理(K-NearestNeighbor)-本质是通过距离判断两个样本是否相似,如果距离够近就认为他们足够2023-05-30
今天小编岚岚来为大家解答以上的问题。好的公司名字可以卖钱吗,好的公司名字相信很多小伙伴还不知道,现在2023-05-30
宝山区2023年适龄幼儿入园区域划分表序号所属街镇幼儿园名称办园性质幼儿园地址招生咨询电话招生范围对应居2023-05-30
5月30日,外交部发言人毛宁主持例行记者会。有记者提问,26日,约800名索马里青年党武装人员袭击了索马里布2023-05-30
遥控器背光照明电路原理详解-想通过红外发射管取信号。拆开看了下,红外发射管一端直接接地,另一端通过一2023-05-30
(付健青)30日,A股开盘后不到10分钟,东鹏饮料触及跌停,股吧中的股民怨声载道,原因是一则减持公告。东2023-05-30
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
今天(5月30日),受暖湿气流影响,湖南大部分地区有阵雨或雷阵雨,局地中雨。同时,气温有所下降,高温将2023-05-30
戴上数据手套,便可以灵活操纵仿人灵巧手,轻松完成抓握以及更复杂的手部运动。这种自适应混控仿人灵巧手将2023-05-30
1、首先,打开电脑,双击桌面上的牛倩图标。2、然后,来到下一页,我们输入用户名和密码;3、然后,登录成2023-05-30
国产大飞机C919实施常态化商业运行首飞成都2023-05-30
IT之家5月30日消息,昨日央视财经曝光了一些直播间使用AI换脸技术,冒充明星进行直播带货的现象。据悉,这种AI2023-05-30
每经AI快讯,有投资者在投资者互动平台提问:公司是否有淡旺季?哪个季度是旺季,哪个季度是淡季?酷特智能2023-05-30
在上周的PS展示会上,《漫威蜘蛛侠2》作为本次发布会的重头戏之一亮相,带来了一段11分钟的长实机。2023-05-30
“你怎么又在刷短视频?”“不刷短视频你就Out了!”“你也不看看自己成绩怎么样!”……这是四川成都王2023-05-30
【ITBEAR科技资讯】5月30日消息,近日,大量Windows11用户反馈在使用某些软件时遭遇AMD显卡驱动不兼容的问2023-05-30
短线方面,教育部表示探索利用AI、VR等技术改进和强化实验教学利好教育及AI板块;工信部表示把脑机接口作为2023-05-30
5月30日电,联合国粮食及农业组织和世界粮食计划署5月29日发布联合报告称,苏丹、海地、布基纳法索和马里已2023-05-30
1、第一步:学会做人,拉近与客户的距离销售员每天都要与不同的客户打交道,销售员只有把与客户的关系处理好2023-05-30
快科技5月29日消息,昔日风光无限、国内共享单车的巨头ofo因经营问题陷入资金危机,欠下了无数车辆押金,至2023-05-30
1、水溶性油淬火液是无色透明液体。2、加有防锈、防腐、润湿、杀菌等多种添加剂制成。3、对水有逆溶性。文2023-05-30
1、从2007年11月29日中午12:00开始,在不改变原有计算方式的情况下,加速QQ会员等级升级。2、QQ会员用户在原2023-05-30