matlab KNN代码
时间: 2023-08-28 09:04:14 浏览: 162
当然可以!以下是一个使用MATLAB实现K最近邻算法(K-Nearest Neighbors, KNN)的示例代码:
```matlab
% 生成样本数据
features = [1 1; 1 2; 2 2; 4 4; 5 4; 5 5]; % 特征向量
labels = [1; 1; 1; 2; 2; 2]; % 标签
% 定义要预测的数据点
newData = [3 3];
% 计算新数据点与所有样本之间的欧氏距离
distances = sqrt(sum((features - newData).^2, 2));
% 根据距离进行排序
[sortedDist, idx] = sort(distances);
% 设置K值
k = 3;
% 选择最近的K个样本
kNearestLabels = labels(idx(1:k));
% 统计最近K个样本中每个类别的数量
counts = histc(kNearestLabels, unique(kNearestLabels));
% 找到数量最多的类别
[~, maxIdx] = max(counts);
predictedLabel = unique(kNearestLabels(maxIdx));
disp(['预测结果:' num2str(predictedLabel)]);
```
在这个示例中,我们首先生成了一些样本数据,其中特征向量存储在`features`矩阵中,对应的标签存储在`labels`矩阵中。然后,我们定义了一个新的数据点`newData`,我们希望通过KNN算法对其进行分类预测。
接下来,我们计算新数据点与所有样本之间的欧氏距离,并对距离进行排序。然后,我们选择最近的K个样本,并统计这K个样本中每个类别的数量。最后,我们选择数量最多的类别作为预测结果。
请注意,这只是一个简单的示例代码,实际应用中可能需要进行更多的数据预处理和模型优化。希望对你有所帮助!如有任何问题,请随时提问。
阅读全文