%% 该代码为基于lssvm的预测算法
%% 清空环境变量
clc
close all
clear all
tic
rand('state',1)
%%%% 训练数据预测数据提取及归一化
[MIX_train,MIX_test,DATA_train,DATA_test]=online_dataproducetestdata();
%归一化
[train_x,trps]=mapminmax(MIX_train,0,1);
[test_x]=mapminmax('apply',MIX_test,trps);
train_x=train_x';
train_y=DATA_train';
test_x=test_x';
%%建立lssvm模型
type='classification';%分类
gam=5*ones(1,1);%正则参数
sig2=1.8*ones(1,1);%核函数参数
kernel = 'RBF_kernel';%核函数类型
proprecess='proprecess';%proprecess表明数据已归一化处理,original表明数据没有进行归一化处理
codefct = 'code_MOC';
[Yc,codebook,old_codebook] = code(train_y, codefct);
model=initlssvm(train_x,Yc,type,gam,sig2,kernel,proprecess);
model=trainlssvm(model);
%%求出训练集和测试集的预测值
[train_predict_y,zt,model]=simlssvm(model,train_x);%仿真得出输出
[test_predict_y,zt,model]=simlssvm(model,test_x);
train_predict_y = code(train_predict_y,old_codebook,[],codebook);
test_predict_y = code(test_predict_y,old_codebook,[],codebook);
train_predict=train_predict_y;
test_predict=test_predict_y;
figure %绘图
plot(test_predict,'r*-') %绘制预测值曲线
hold on %继续绘图
plot(DATA_test,'bo') %实际值曲线
legend('预测值','实际值') %图例
grid on
set(gca,'ytick',1:8,'yticklabel',{'正常','气门异常','缸盖异常','凸轮轴异常','缸孔异常','活塞环异常','挺住超长','挺住超短'})
xlabel('样本编号')
ylabel('分类')
% set(legend1,'Location','southeast');
string_1 = {'测试集预测结果对比';
};
title(string_1)
% figure %绘图
% plot(train_predict,'r*-') %绘制预测值曲线
% hold on %继续绘图
% plot(DATA_train,'bo') %实际值曲线
% legend('预测值','实际值') %图例
% grid on
% xlabel('样本编号')
% ylabel('信号')
% string_1 = {'训练集预测结果对比';
% };
% title(string_1)
% acu=0;
% for i=1:length(DATA_train)
% if train_predict(i)==DATA_train(i)
% acu=acu+1;
% end
% end
% acu=acu/length(DATA_train);
% fprintf('训练集hit rate:%d%%\n',acu*100)
acu=0;
for i=1:length(DATA_test)
if test_predict(i)==DATA_test(i)
acu=acu+1;
end
end
acu=acu/length(DATA_test);
fprintf('测试集hit rate:%d%%',acu*100)
toc
评论0