KNN 近邻算法










@page { margin: 2cm }
p { margin-bottom: 0.25cm; line-height: 120% }
a:link { so-language: zxx }


机器学习实战:

KNN算法 本章内容来至于《统计学习与方法》李航,《机器学习》周志华,以及《机器学习实战》Peter HarringTon,相互学习,不足之处请大家多多指教

1.1 KNN算法的优缺点

1.2 KNN算法的工作机制

1.3 KNN算法的python实现

1.4 我对KNN算法的理解


1.1 KNN算法的优缺点

优点:KNN算法是 1.2 KNN算法的工作机制 KNN算法,给定测试样本,基于某种距离度量找到训练集中最靠近的K个训练样本,然后基于这K个邻居的信息来进行预测,通常在分类任务重可以使用“投票法”,即选择这K个样本中出现最多的类别标记作为预测结果,在回归任务中可以使用平均分,将k个样本的实值输出标记的平均值作为预测值,或者是积极与距离远近进行加权平均或者加权投票,距离越近的样本权重越大。—–周志华 《机器学习P225页》

距离度量K近邻模型中,K近邻的特征空间一般是n维的实数向量空间 Rn ,通常使用的是欧式距离,但是也可以使用其他的距离,如更一般的 LP 距离或者曼哈顿距离,欧氏距离可以认为是 LP 距离P等于2的情况 LP 距离的定义 设特征空间Xn维实数向量空间 Rn , xi , xj 属于空间Xx_i=</span></span></span></font></font></font></span></span></font></font><span style="font-variant: normal"><font color="#808080"><span style="letter-spacing: normal"><font face="microsoft yahei"><font size="3" style="font-size: 12pt"><span style="font-style: normal"><span style="font-weight: normal">()</span></span></font></font></span></font></span><font face="Liberation Serif, serif"><font size="3" style="font-size: 12pt"><span lang="en-US"><span style="font-variant: normal"><font color="#808080"><font face="microsoft yahei"><font size="3" style="font-size: 12pt"><span style="letter-spacing: normal"><span style="font-style: normal"><span style="font-weight: normal">


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KNN(K-Nearest Neighbors)近邻算法的MATLAB代码可以按照以下步骤实现: 1. 定义一个距离矩阵,初始化为全零矩阵。 2. 定义训练数据集和测试数据集的长度。 3. 对每个测试样本,计算与训练样本的距离,并存储在距离矩阵中。 4. 使用选择排序的方法,对距离矩阵进行排序,找出最小的前K个距离对应的训练样本。 5. 统计这K个样本中最常出现的类别,作为测试样本的预测类别。 6. 返回测试样本的预测类别。 具体的MATLAB代码如下: ```matlab function predicted_labels = knn(train_data, train_labels, test_data, K) train_length = size(train_data, 1); test_length = size(test_data, 1); distance = zeros(train_length, 1); predicted_labels = zeros(test_length, 1); for i = 1:test_length for j = 1:train_length distance(j) = calculate_distance(test_data(i,:), train_data(j,:)); end % 使用选择排序的方法对距离矩阵进行排序,并得到最小的前K个距离对应的标签 for g = 1:K ma = distance(g); tmp = 1; label_ma = 0; for j = g+1:train_length if distance(j) < ma ma = distance(j); label_ma = train_labels(j); tmp = j; end end distance(tmp) = distance(g); distance(g) = ma; train_labels(tmp) = train_labels(g); train_labels(g) = label_ma; end % 统计最小的前K个样本中最常出现的类别,作为测试样本的预测类别 unique_labels = unique(train_labels(1:K)); counts = histc(train_labels(1:K), unique_labels); [~, max_idx = max(counts); predicted_labels(i) = unique_labels(max_idx); end end function distance = calculate_distance(x1, x2) % 计算两个样本之间的距离(这里可以根据具体问题选择不同的距离度量方法) distance = sqrt(sum((x1 - x2).^2)); end ``` 这是一个基本的KNN近邻算法的MATLAB实现,你可以将训练数据集、训练标签、测试数据集和K值作为输入,然后得到测试样本的预测类别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值