matlab编写一个KNN并测试
时间: 2024-05-01 09:21:46 浏览: 56
KNN算法的matlab编程
4星 · 用户满意度95%
好的,下面是一个简单的MATLAB实现KNN的代码:
```matlab
% 训练数据
train_data = [2,3;5,4;9,6;4,7;8,1;7,2];
train_label = [1;1;2;2;3;3];
% 测试数据
test_data = [6,3;2,8;7,4;4,4];
test_label = [1;2;2;3];
% 设置参数k
k = 3;
% 预测结果
predict_label = knn(train_data, train_label, test_data, k);
% 计算准确率
accuracy = sum(predict_label == test_label) / length(test_label);
disp(['Accuracy: ', num2str(accuracy)]);
% KNN函数
function predict_label = knn(train_data, train_label, test_data, k)
n_test = size(test_data, 1);
predict_label = zeros(n_test, 1);
for i = 1:n_test
dist = sqrt(sum((train_data - test_data(i,:)).^2, 2)); % 计算距离
[~, indices] = sort(dist); % 排序
k_labels = train_label(indices(1:k)); % 取出前k个标签
predict_label(i) = mode(k_labels); % 取众数作为预测标签
end
end
```
在这个例子中,我们使用训练集和测试集来测试KNN算法的准确性。首先,我们定义了一个训练集和一个测试集,然后设置参数k。接着,我们调用`knn`函数来进行预测,并计算准确率。`knn`函数接受四个参数:训练数据、训练标签、测试数据和k值。在函数内部,我们首先计算测试数据与训练数据之间的距离,然后按照距离进行排序,并取出前k个标签。最后,我们取这k个标签的众数作为预测标签。
你可以把上面的代码复制到MATLAB编辑器中,然后运行它来测试KNN算法的准确性。
阅读全文