资源简介
感知机H-K算法实例,对真实数据进行分类,matlab代码+数据都在里面,可直接运行.m文件,错误率0.04。
代码片段和文件信息
clc
clear
%% 读取数据
%读取excel数据sheet2中的所有数据,num是所读取的数据
[numtxtraw] = xlsread(‘DATASETS_Cork Stoppers_Cork Stoppers.xls‘2);
%第二列是标签
label=num(:2);
%第3到12列是特征
tz=num(:3:12);
%mn为特征的行数和列数
[mn]=size(tz);
tz = [tz ones(m1)];%增广矩阵
X = tz;
%% 将多分类标签转换为2分类标签
for i=1:m
if(label(i)==1)
label1(i)=1;
else
label1(i)=-1;
X(i:) = -X(i:);
end
end
label1=label1‘;
%% H-K算法
%初始化
b = ones(size(X1)1); %初始化b=[1;1;1;...1]与数据个数相同
c = 1; %步长
flag = 0; %表示是否线性可分
xx=inv(X‘*X)*X‘; %求X的伪逆
w=xx*b; %初始权向量w
e=X*w-b; %初始误差向量
t=0; %当前迭代次数
Iteration=20;
%迭代求解
while (1)
temp=min(e);
temp1=max(e);
if temp>-1e-4 && temp<0 %【当误差稍小于0时,看做0,结束】
temp=0;
end
if temp>1e-3 %【误差较大时,继续】
deltab=e+abs(e);
b=b+c.*deltab; %更新松弛向量
w=w+c.*xx*abs(e); %更新权向量
e=X*w-b; %计算误差向量
else
if temp>=0 && temp1<1e-4 %【相当于误差=0,结束】
break;
else
if temp1<0 %线性不可分
flag=1;
fprintf(‘非线性可分\n‘);
break;
else %【误差小于1e-3大于1e-4,趋近时迭代】
deltab=e+abs(e);
b=b+c.*deltab;
w=w+c.*xx*abs(e);
e=X*w-b;
t=t+1;
if t>=Iteration %超过最大迭代次数
break;
end
end
end
end
end
%% 计算错误率
a = tz*w; %%权值和特征的乘积,150*1
%初始化错误个数为0
err_cou=0;
%统计错误个数,计算错误率
for i = 1:m
if a(i)>=0
h1(i) = 1;
else
h1(i) = -1;
end
if(h1(i)~=label1(i))
err_cou=err_cou+1;
end
end
err_rate = err_cou/m; %错误率 = 错误个数/样本个数
fprintf(‘总样本数:%d\n‘‘分类错误个数%d\n‘‘错误率%f\n‘merr_couerr_rate)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 38400 2020-04-03 03:28 DATASETS_Cork Stoppers_Cork Stoppers.xls
文件 2032 2020-04-03 09:57 H_K_2.m
相关资源
- matlab画图 横坐标为时间轴
- 毕业设计 一种改进的自适应滤波LMS算
- matlab编写的FIR哈明窗低通滤波器的设
- 3Gpp scm模型matlab代码
- FM的MATLAB调制与解调仿真程序,可以直
- 关于GPS信号如何产生、如何捕获、如
- gardner位定时同步MATLAB仿真代码,可以
- matlab原木图像分割与计数.zip
- 基于卡尔曼滤波的机器人slam导航算法
- pdaf-matlab
- matlab 结构振动控制代码-RBPF
- 灰度共生矩阵matlab代码
- matlab代码-雷达脉冲压缩及多普勒处理
- 基于SIFT特征的图像配准Matlab源代码
- MATLAB课程设计(cantor三分集)
- Matlab保留ROI区域
- 逆滤波,维纳滤波实现源代码MATLAB)
- 元胞自动机-Matlab实现.zip
- 沈再阳MATLAB信号处理 代码.zip
- MPC-test.zip
- 扩频方法实现图像水印
- 单相并网逆变器PQ仿真
- 学会用MATLAB实现傅里叶变换的时移,
-
Simuli
nk_RBF神经网络PID控制 - 基于粒子群算法的配电网无功优化.
- MATLAB 2009a 注册文件2017年11月11日之后
- 以MATLAB为平台的电弧模型
- 一个用matlab编写的串口调试程序,可
- 开关磁阻电机MATLAB模型 非线性 电压
- 利用MATLAB从图片中提取曲线数据的小
评论
共有 条评论