鸢尾花数据集是一个经典的用于分类的数据集。该数据集采集了150个鸢尾花样本,测量了它们的花萼长度、花萼宽度、花瓣长度、花瓣宽度这4个属性。这150个样本分属3个品种:setosa、versicolor、virginica,每个品种分别有50个样本。该数据集在MATLAB中可直接用'load fisheriris'导入。请从该数据集中每个品种随机抽取10个样本作为测试集,其余的样本作为训练集,试用matlab支持向量机对训练集分类,然后判断测试集样本的类别,并计算分类正确率
时间: 2023-06-14 22:03:19 浏览: 182
鸢尾花数据集(共150个样本)-数据集
5星 · 资源好评率100%
以下是MATLAB代码实现:
```matlab
% 导入数据集
load fisheriris
% 随机抽取测试集样本
test_setosa = datasample(find(strcmp(species,'setosa')),10,'Replace',false);
test_versicolor = datasample(find(strcmp(species,'versicolor')),10,'Replace',false);
test_virginica = datasample(find(strcmp(species,'virginica')),10,'Replace',false);
% 构建训练集和测试集
train_setosa = setdiff(find(strcmp(species,'setosa')),test_setosa);
train_versicolor = setdiff(find(strcmp(species,'versicolor')),test_versicolor);
train_virginica = setdiff(find(strcmp(species,'virginica')),test_virginica);
train_data = [meas(train_setosa,:); meas(train_versicolor,:); meas(train_virginica,:)];
train_label = [ones(length(train_setosa),1); 2*ones(length(train_versicolor),1); 3*ones(length(train_virginica),1)];
test_data = [meas(test_setosa,:); meas(test_versicolor,:); meas(test_virginica,:)];
test_label = [ones(length(test_setosa),1); 2*ones(length(test_versicolor),1); 3*ones(length(test_virginica),1)];
% 训练SVM模型
model = fitcsvm(train_data,train_label);
% 预测测试集样本的类别
pred_label = predict(model,test_data);
% 计算分类正确率
accuracy = sum(pred_label==test_label)/length(test_label);
disp(['Accuracy: ' num2str(accuracy*100) '%']);
```
运行上述代码可以得到测试集的分类正确率。
阅读全文