MATLAB knn对load fisheriris分类产生分类图
时间: 2023-12-14 15:05:57 浏览: 65
以下是使用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);
YPred = predict(mdl,Xtest);
% 绘制分类图
gscatter(Xtest(:,1),Xtest(:,2),YPred,'rgb','osd');
xlabel('Sepal length');
ylabel('Sepal width');
title('k-NN Classification of Fisher Iris');
```
这段代码与之前的示例代码相似,不同之处在于最后一部分加入了绘制分类图的代码。使用MATLAB的`gscatter`函数,可以将测试集数据点按照预测结果进行分类标记,并绘制出分类图。图中横轴和纵轴分别代表花萼长度和花萼宽度,不同颜色的数据点代表不同的鸢尾花品种。
相关问题
MATLAB knn对load fisheriris分类,有四个特征分别为花萼的长度和宽度以及花瓣的长度和宽度产生分类图
以下是使用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);
YPred = predict(mdl,Xtest);
% 绘制分类图
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');
```
这段代码在之前的基础上添加了绘制第二个分类图的代码。使用MATLAB的`hold on`函数,可以保持第一个图的坐标轴,并在其上添加第二个分类图。第二个分类图的横轴和纵轴分别代表花瓣长度和花瓣宽度。同样地,不同颜色的数据点代表不同的鸢尾花品种。
MATLAB knn对load fisheriris分类,有四个特征分别为花萼的长度和宽度以及花瓣的长度和宽度,三种类别,产生分类图
以下是使用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`函数,可以创建一个新的图形窗口。在该图形窗口上,我们可以绘制两个分类图,其中一个是以花萼长度和花萼宽度为横纵轴,另一个是以花瓣长度和花瓣宽度为横纵轴。不同颜色的数据点代表不同的鸢尾花品种,不同的符号代表不同的预测类别。
阅读全文