• 大小: 9KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-05
  • 语言: Matlab
  • 标签: matlab  

资源简介

支持向量机SVM故障诊断。支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM是用来解决二分类问题的有监督学习算法,在引入了核方法之后SVM也可以用来解决非线性问题。

资源截图

代码片段和文件信息

tic % 计时器
%% 清空环境变量
close all
clear
clc
format compact
%% 数据提取

% 载入测试数据wine其中包含的数据为classnumber = 3wine:178*13的矩阵wine_labes:178*1的列向量
load ([‘E:\李博华\研究生\学习资料\代码数据\数据西储\xichuimf.mat‘])
load ([‘E:\李博华\研究生\学习资料\代码数据\数据西储\xichu_labels1.mat‘])
%选定训练集和测试集
% 将第一类的1-30第二类的60-95第三类的131-153做为训练集 
train_xichu = [xichuimf(1:200:);xichuimf(1501:1700:);xichuimf(3001:3200:);xichuimf(4501:4700:)];
% 相应的训练集的标签也要分离出来
train_xichu_labels = [xichu_labels1(1:200);xichu_labels1(1501:1700);xichu_labels1(3001:3200);xichu_labels1(4501:4700)];
% 将第一类的31-59第二类的96-130第三类的154-178做为测试集 ;xichudate1(4001:4020:);xichudate1(5001:5020:)
test_xichu = [xichuimf(201:350:);xichuimf(1656:1805:);xichuimf(3201:3350:);xichuimf(4751:4900:)];
% 相应的测试集的标签也要分离出来
test_xichu_labels = [xichu_labels1(1001:1150);xichu_labels1(2501:2650);xichu_labels1(3501:3650);xichu_labels1(5001:5150)];
% % 选定训练集和测试集
% % 将第一类的1-30第二类的60-95第三类的131-153做为训练集
% train_xichu = [xichudate(1:150:);xichudate(201:350:);xichudate(401:550:);xichudate(601:750:)];
% % 相应的训练集的标签也要分离出来
% train_xichu_labels = [xichu_labels(1:150);xichu_labels(201:350);xichu_labels(401:550);xichu_labels(601:750)];
% % % 将第一类的31-59第二类的96-130第三类的154-178做为测试集
% % test_xichu = [xichudate(151:170:);xichudate(351:370:);xichudate(551:570:);xichudate(751:770:)];
% % % 相应的测试集的标签也要分离出来
% % test_xichu_labels = [xichu_labels(151:170);xichu_labels(351:370);xichu_labels(551:570);xichu_labels(751:770)];
% % 将第一类的31-59第二类的96-130第三类的154-178做为测试集
% test_xichu = [xichudate(1:50:);xichudate(201:250:);xichudate(401:450:);xichudate(601:650:)];
% % 相应的测试集的标签也要分离出来
% test_xichu_labels =[xichu_labels(1:50);xichu_labels(201:250);xichu_labels(401:450);xichu_labels(601:650)];

%% 数据预处理
% 数据预处理将训练集和测试集归一化到[01]区间
[train_xichutest_xichu] = scaleForSVM(train_xichutest_xichu01);
[mtrainntrain] = size(train_xichu);
[mtestntest] = size(test_xichu);

dataset = [train_xichu;test_xichu];
% [mtrainntrain] = size(train_xichu);
% [mtestntest] = size(test_xichu);

% dataset = [train_xichu;test_xichu];
% % mapminmax为MATLAB自带的归一化函数
% [dataset_scaleps] = mapminmax(dataset‘01);
% dataset_scale = dataset_scale‘;

% train_xichu = dataset_scale(1:mtrain:);
% test_xichu = dataset_scale( (mtrain+1):(mtrain+mtest): );
%% pca降维处理        
        [dataset_coefdataset_scoredataset_latentdataset_t2] = princomp(dataset);
        dataset_cumsum = 100*cumsum(dataset_latent)./sum(dataset_latent);
        index = find(dataset_cumsum >= 0.99);
     
        train_xichu = dataset_score(1:mtrain:);
        test_xichu = dataset_score( (mtrain+1):(mtrain+mtest): );
        train_xichu = train_xichu(:1:index(1));
        test_xichu = test_xichu(:1:index(1));
%% PSO算法
 pso_option = struct(‘c1‘1.5‘c2‘1.7‘maxgen‘100‘sizepop‘20 ...
            ‘k‘0.6‘wV‘1‘wP‘1‘v‘5 ...
            ‘popcmax‘10^2‘popcmin‘10^(-1)‘popgmax‘10^3‘popgmin‘10^(-2));
       
        pso_option.maxg

评论

共有 条评论