svm吧 关注:119贴子:302
  • 0回复贴,共1

SVM故障识别

只看楼主收藏回复

tic
%% 加载数据
clc
clear
close all
format long
format compact%% 网络结构建立
%读取数据
data=xlsread('柴油机故障诊断数据.xlsx');
input=data(:,2:9);%输入
output=[];%输出
for ii = 1:9
output = [output;ii*ones(9,1)];
end
% 归一化
[inputn,inputns]=mapminmax(input',0,1);
data=inputn';
[outputn,outputns]=mapminmax(output',0,1);
output1=outputn';
%% 随机划分数据集 86组为训练集 剩下10组为测试集
% rand('seed',0)
n = [];
for ii = 1:9
n = [n (ii-1)*9+1:(ii-1)*9+7];
end
for ii = 1:9
n = [n (ii-1)*9+8:(ii-1)*9+9];
end
m=72;
P_train=data(n(1:m),:)';
T_train=output1(n(1:m),:)‘’;
P_test=data(n(m+1:end),:)‘’;
T_test=output1(n(m+1:end),:)‘’;
%% 利用训练集参数进行SVM网络训练
bestc=0.1;bestg=0.08; %确定的最佳参数
cmd = ['-s 0 -t 2 ','-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -p 0.1'];
model = svmtrain(T_train,P_train,cmd);
[predict_train,acc]= svmpredict(T_train,P_train,model);
% 反归一化
predict_train1=mapminmax('reverse',predict_train',outputns);
T_train=mapminmax('reverse',T_train',outputns);
figure
plot(predict_train1,'r-*')
hold on
plot(T_train,'b-o')
xlabel('训练集样本编号')
ylabel('实际功率')
title('SVM训练集')
legend('输出参数','实际参数')
%% SVM测试集
x=zeros(size(T_test,1),1);
[predict,fit]= svmpredict(T_test,P_test,model);
% 反归一化
predict1=mapminmax('reverse',predict',outputns);
T_test=mapminmax('reverse',T_test',outputns);
%% 结果分析
disp('显示结果')
bestc
bestg
%
error=predict1-T_test;
mse_svm=mse(error)
toc
figure
plot(predict1,'r-*')
hold on
plot(T_test,'b-o')
xlabel('测试集样本编号')
ylabel('支护强度')
title('SVM测试集')
legend('输出参数','实际参数')
%
figure
plot(error,'k-*')
xlabel('测试集样本编号')
ylabel('误差')
title('SVM测试集')
figure
plot(error./T_test,'k-*')
xlabel('测试集样本编号')
ylabel('误差')
title('SVM测试集


IP属地:河南1楼2023-11-06 09:44回复