knn算法 鸢尾花 matlab
时间: 2023-12-09 15:36:30 浏览: 175
根据提供的引用内容,我们可以了解到KNN算法是一种基于实例的学习或非泛化学习的方法,它可以用于分类和回归。在分类问题中,KNN算法的目标是预测一个未知样本所属的类别,该样本的类别由其最近邻居的类别决定。在回归问题中,KNN算法的目标是预测一个未知样本的值,该值由其最近邻居的平均值决定。
下面是使用Matlab实现KNN算法对鸢尾花数据集进行分类的示例代码:
```matlab
% 加载数据集
load iris_dataset.mat
% 将数据集分为训练集和测试集
[trainInd,testInd] = dividerand(size(irisInputs,2),0.7,0.3);
trainInputs = irisInputs(:,trainInd);
trainTargets = irisTargets(:,trainInd);
testInputs = irisInputs(:,testInd);
testTargets = irisTargets(:,testInd);
% 训练模型
k = 5; % 设置K值
mdl = fitcknn(trainInputs',trainTargets','NumNeighbors',k);
% 预测测试集
predictedTargets = predict(mdl,testInputs');
% 计算准确率
accuracy = sum(predictedTargets == testTargets')/length(testTargets)
% 显示结果
figure
gscatter(testInputs(1,:),testInputs(2,:),predictedTargets)
hold on
gscatter(trainInputs(1,:),trainInputs(2,:),trainTargets,'k','+')
xlabel('花萼长度')
ylabel('花萼宽度')
legend('预测结果','训练集')
```
该代码首先加载了鸢尾花数据集,然后将其分为训练集和测试集。接下来,代码使用fitcknn函数训练了一个KNN分类器,并使用predict函数对测试集进行预测。最后,代码计算了预测的准确率,并使用gscatter函数将预测结果可视化。
阅读全文