机器学习 KNN算法_0_丐版_鸢尾花集分类(matlab实现)

一、数据源

1、iris_dataset下载链接:
https://pan.baidu.com/s/1g9RkyN2TfQG0YjIhoNAC6g
提取码:7tdx

2、KNN函数来源:链接

二、效果

三、代码

1、mian

%%
%数据导入
iris_data=csvread("iris_dataset.csv");

%%
%数据分割
nums_train=120;
nums_test=30;
Dimension=5;
k=4;
[training_set,testing_set]=data_split(iris_data, nums_train, nums_test);

%%
%模型验证
accuracy=training(training_set, testing_set, nums_test, Dimension, k);
disp("The accurary is: "+accuracy);

2、data_split

function [training,testing] = data_split(data,nums_train,nums_test)
training=data(1:nums_train,:);
testing=data(1:nums_test,:);
end

3、training

function [accuracy] = training(training, testing, nums_test, Dimension, k)
accuracy=0;
for i=1:nums_test
    [Neighbors, Classify]=KNN(training, testing(i,1:Dimension-1),k);
    if (testing(i, Dimension)==mode(Classify)) 
        accuracy=accuracy+1;
    end
end
accuracy=accuracy/nums_test;
end

4、KNN

function [Neighbors, Classify] = KNN(A,B,k)
size_A=size(A);
Temp_A=A(:,1:size_A(2)-1);
Dis_A_B=zeros(size_A(1),2);
Dis_A_B(:,1)=1:size_A(1);
Dis_A_B(:,2)=sqrt(sum((Temp_A-B).^2,2));
Sorted_Dis_A_B=sortrows(Dis_A_B,2);
Neighbors=Sorted_Dis_A_B(1:k,1);
Classify=A(Neighbors,size_A(2));
end
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KNN(K-Nearest Neighbors)是一种简单的分类和回归算法,其基本思想是:对于一个新的测试样本,根据其与已知样本的距离,找到距离最近的K个样本,然后根据这K个样本的类别进行投票,将得票最多的类别作为测试样本的类别。 下面是一个简单的KNN二分类算法的MATLAB代码示例: ```matlab % 加载数据 load iris_dataset % 将数据分为训练和测试 [trainInd, testInd] = dividerand(size(irisInputs,2), 0.7, 0.3); trainInputs = irisInputs(:,trainInd); trainTargets = irisTargets(:,trainInd); testInputs = irisInputs(:,testInd); testTargets = irisTargets(:,testInd); % 设置K值 K = 5; % 对测试中的每个样本进行分类 for i = 1:size(testInputs,2) % 计算测试样本与训练中每个样本的距离 distances = sqrt(sum((testInputs(:,i) - trainInputs).^2, 1)); % 找到距离最近的K个样本 [~, indices] = sort(distances); kNearestTargets = trainTargets(:,indices(1:K)); % 对K个样本的类别进行投票 predictedTarget = mode(kNearestTargets); % 输出预测结果和真实结果 fprintf('Predicted target: %d, True target: %d\n', find(predictedTarget), find(testTargets(:,i))); end ``` 在这个示例中,我们使用了鸢尾花数据作为示例数据。首先,我们将数据分为训练和测试。然后,我们设置K值为5,对于测试中的每个样本,计算其与训练中每个样本的距离,找到距离最近的K个样本,并对这K个样本的类别进行投票。最后,输出预测结果和真实结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值