matlab中knn分类器,MATLAB——KNN分类器实例
%%准备环境
clc,clear all,close all
%%导⼊数据
load bank.mat;
%将分类变量转换成分类数组
names = bank.Properties.VariableNames;%使⽤数据⽂件,记录⾃变量和因变量的属性名
%'uniform':varfun将值串联成⼀个向量。@iscellstr在每次调⽤时都必须返回数据类型相同的标量
matlab生成随机数category = varfun(@iscellstr,bank,'Output','uniform'); %输出格式为数值格式。若变量为字符串的返回结果为1,为数字的返回结果为0
%find函数返回category中⾮零元素的位置(按列查)
for i = find(category)
bank.(names{i}) = categorical(bank.(names{i}));
%将bank中的属性创建分类数组。bank.(names{i})的类别是bank.(names{i})经过分类后的唯⼀值且经过排序
end
%跟踪分类变量
catPred = category(1:end-1);
%设置默认随机数⽣成rng⽅式确保该脚本中的结果是可以重现的
rng('default');
%数据探索——可视化
figure(1)
%gscatter(x,y,group,clr,sym)中clr为规定颜⾊,sym为规定标识符
gscatter(bank.balance,bank.duration,bank.y,'kk','xo')
xlabel('年平均余额/万元','fontsize',12)
ylabel('上次接触时间/秒','fontsize',12)
title('数据可视化效果图','fontsize',12)
set(gca,'linewidth',2);
%设置响应变量和预测变量
X = table2array(varfun(@double,bank(:,1:end-1)));%预测变量%table2array把同构数组转换成变量
Y=bank.y;%响应变量
disp('数据中 YES & NO 的统计结果:');
tabulate(Y)
%将分类数组进⼀步转