MATLAB knn对load fisheriris分类,有四个特征分别为花萼的长度和宽度以及花瓣的长度和宽度,三种类别,产生分类图
时间: 2024-02-09 08:08:46 浏览: 74
基于matlab的Fisher判别分类与作图
以下是使用MATLAB的k-NN算法对经典数据集"Fisher Iris"进行分类(包括四个特征和三种类别)并绘制分类图的示例代码:
```matlab
% 加载 Fisher Iris 数据集
load fisheriris
% 将数据集随机分为训练集和测试集
idx = randperm(size(meas,1));
Xtrain = meas(idx(1:100),:);
Ytrain = species(idx(1:100));
Xtest = meas(idx(101:end),:);
Ytest = species(idx(101:end));
% 使用 k-NN 算法进行分类
mdl = fitcknn(Xtrain,Ytrain,'NumNeighbors',5);
YPred = predict(mdl,Xtest);
% 绘制分类图
figure;
gscatter(Xtest(:,1),Xtest(:,2),YPred,'rgb','osd');
xlabel('Sepal length');
ylabel('Sepal width');
title('k-NN Classification of Fisher Iris');
hold on;
gscatter(Xtest(:,3),Xtest(:,4),YPred,'rgb','x*');
xlabel('Petal length');
ylabel('Petal width');
title('k-NN Classification of Fisher Iris');
```
这段代码在之前的基础上添加了将分类结果绘制在一个新的图形窗口上的代码。在这个例子中,我们使用了`NumNeighbors`参数来设置k-NN算法的邻居数。使用MATLAB的`figure`函数,可以创建一个新的图形窗口。在该图形窗口上,我们可以绘制两个分类图,其中一个是以花萼长度和花萼宽度为横纵轴,另一个是以花瓣长度和花瓣宽度为横纵轴。不同颜色的数据点代表不同的鸢尾花品种,不同的符号代表不同的预测类别。
阅读全文