资源简介

用matlab实现的SVM分类器,以及对原始SVM进行的一些改进,改进之后提高了SVM分类性能,可以用于信号分类识别,分类有关的研究领域

资源截图

代码片段和文件信息

function [Acu]=AdaptFunc(XXYY)
%C为最小二乘支持向量机的正则化参数,theta为高斯径向基的核函数参数,两个需要进行优化选择调试
NumOfPre =1;%预测天数,在此预测本季度最后七天
Time = 24;
XX =30;
YY = 2;
Data = xlsread(‘a23.xls‘);%此为从excel表格读数据的命令,表示将表格的数据读到Data数组中,省略表格中的第一行第一列文字部分 可输入你要预测的表格名称
[M N] = size(Data);%计算读入数据的行和列 M行N列
for i = 1:3
    maxData = max(Data(:i));
    minData = min(Data(:i));
    Data1(:i) = (Data(:i) - minData)/(maxData-minData);%对温度进行归一化处理
end
for i = 4:5
    Data1(:i) = Data(:i);
end
for i = 6:N
    Data1(:i) = log10(Data(:i)) ;%对负荷进行对数处理 温度和负荷的预处理 可采用不同的方法 可不必拘泥
end
Dim =  M - 2 - NumOfPre;%训练样本数%训练样本数
Input = zeros(M-212Time);%预先分配处理后的输入向量空间
y = zeros(DimTime);
for i = 3:M 
    for j = 1:Time
        %%选取前一天温度、同一时刻的负荷,前两天的负荷,当天的温度作为输入特征
        x = [Data1(i-11:5) Data1(i-1j+5) Data1(i-2j+5)Data1(i1:5)];
        Input(i-2:j) = x;
        y(i-2j) = Data1(ij+5);
    end
end
Dist = zeros(DimDimTime);%预先分配距离空间
for i=1:Time
    for j=1:Dim
        for k=1:Dim
            Dist(jki) = (Input(j:i) - Input(k:i))*(Input(j:i) - Input(k:i))‘;
        end
    end
end
Dist1=exp(-Dist/(2*YY));%RBF
for i=1:Time
    H = Dist1(::i) + eye(Dim)/XX;%最小二乘支持向量的H矩阵
    f = -y(1:Dimi); 
    Aeq = ones(Dim1)‘;
    beq = [0];
    option.MaxIter=1000;
    [afval]=quadprog(Hf[][]Aeqbeq);%[][][]option);
    b = 0;
    for j = 1:Dim
        b(j) = y(ji) - a(j)/XX - a‘* Dist1(:ji);%求每个输入特征对应的b
    end
    b = sum(b)/Dim;%求平均b,消除误差
    for j = Dim + 1:M-2
        for k = 1:Dim
            K(k) = exp(-(Input(j:i) - Input(k:i))*(Input(j:i) - Input(k:i))‘/(2*YY));%预测输入特征与训练特征的RBF距离
        end
        Pre(j-Dimi) = sum(a‘*K‘) + b;  %求解预测值   
    end
end
Len = M  - (Dim + 3) + 1;%预测的天数 取本季度最后Len天
Pre = 10.^Pre;
%for i = 1:Len
%   figure
%   plot(1:TimeData(i+Dim+26:N)‘-ro‘1:TimePre(i:)‘-k^‘);%画出每一天的预测值和真实值
%   hold on
%
%   axis([0 25 0 100])%坐标范围
%   hold off
%end
acu = (Pre - Data(Dim+3:M6:N))./Data(Dim+3:M6:N);%相对误差
s=0;
for i=1:Time
    s=abs(acu(1i))+s;
end
Acu=s/Time;
save acu.mat acu
% err = abs(Pre - Data(Dim+3:M6:N));
% errpct = abs(err)./Data(Dim+3:M6:N);
% MAE = mean(abs(err));
% MAPE = mean(errpct(~isinf(errpct)));
% fprintf(‘Mean Absolute Percent Error (MAPE): %0.2f%% \nMean Absolute Error (MAE): %0.2f MWh\n‘...
%     MAPE MAE);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-09-12 09:04  SVM\
     文件       22016  2010-06-03 19:41  SVM\a23.xls
     文件         381  2019-11-18 16:09  SVM\Acu.mat
     文件         381  2019-11-18 16:09  SVM\acu1.mat
     文件        2674  2018-09-10 20:22  SVM\AdaptFunc.m
     文件        2787  2018-09-11 18:56  SVM\AdaptFunc1.m
     文件        3813  2010-05-18 10:36  SVM\baseStepPso.m
     文件       12826  2015-09-13 14:40  SVM\figure.fig
     文件        2762  2018-04-18 10:31  SVM\gaijin.m
     文件       10730  2015-09-13 20:53  SVM\gui.fig
     文件       17949  2015-09-13 21:33  SVM\gui.m
     文件        2174  2010-05-18 10:36  SVM\InitSwarm.m
     文件        2144  2015-09-13 21:33  SVM\pso.m
     文件        2615  2018-09-12 09:06  SVM\shorttime.m
     文件      402432  2018-09-11 17:35  SVM\svmdataset - 副本.xls
     文件      333312  2018-09-11 19:02  SVM\svmdataset.xls
     文件      327680  2018-09-11 20:12  SVM\svmdataset1.xls
     文件      329728  2018-09-12 08:20  SVM\svmdataset12.xls
     文件      330752  2018-09-12 08:41  SVM\svmdataset123.xls
     文件      326144  2018-09-12 09:04  SVM\svmdataset1day.xls
     目录           0  2013-08-16 18:27  svm程序\
     目录           0  2013-08-16 18:27  svm程序\libsvm-3.11\
     目录           0  2013-08-16 18:27  svm程序\libsvm-3.11\libsvm-3.11\
     文件        8925  2012-04-08 11:01  svm程序\libsvm-3.11\libsvm-3.11\A.mat
     文件       10063  2012-04-08 11:01  svm程序\libsvm-3.11\libsvm-3.11\B.mat
     文件        1497  2012-04-06 19:10  svm程序\libsvm-3.11\libsvm-3.11\COPYRIGHT
     文件       71213  2012-04-06 19:10  svm程序\libsvm-3.11\libsvm-3.11\FAQ.html
     文件       27670  2012-04-06 19:10  svm程序\libsvm-3.11\libsvm-3.11\heart_scale
     目录           0  2013-08-16 18:27  svm程序\libsvm-3.11\libsvm-3.11\java\
     目录           0  2013-08-16 18:27  svm程序\libsvm-3.11\libsvm-3.11\java\libsvm\
     文件       50037  2012-04-06 19:10  svm程序\libsvm-3.11\libsvm-3.11\java\libsvm.jar
............此处省略72个文件信息

评论

共有 条评论