%一次运行可得到每种情感的识别率
clear all;
clc;
load TYUTwasffs100.mat;%情感类别依次是悲伤、生气、高兴、惊奇、中性
load class250.mat;
%A=normc(A);% 训练集 normc数值归一化
train=[TYUTwasffs(1:33,:);TYUTwasffs(51:83,:);TYUTwasffs(101:133,:);TYUTwasffs(151:183,:);TYUTwasffs(201:233,:)];
train_label=[class250(1:33,1);class250(51:83,1);class250(101:133,1);class250(151:183,1);class250(201:233,1)];
test=[TYUTwasffs(34:50,:);TYUTwasffs(84:100,:);TYUTwasffs(134:150,:);TYUTwasffs(184:200,:);TYUTwasffs(234:250,:)];
test_label=[class250(34:50,1);class250(84:100,1);class250(134:150,1);class250(184:200,1);class250(234:250,1)];
[train_final,test_final] = scaleForSVM(train,test,-1,1);
[bestCVaccuracy,bestc,bestg] = SVMcgForClass(train_label,train_final);%参数寻优(核函数为径向基核函数,采用的参数寻优方法为网格寻优)
tic;
model=svmtrain(train_label,train_final, '-c 6.123 -g 0.4743');
% SVM模型有两个非常重要的参数C与gamma。其中 C是惩罚系数,即对误差的宽容度。c越高,说明越不能容忍出现误差,容易过拟合。C越小,容易欠拟合。C过大或过小,泛化能力变差
% gamma是选择RBF函数作为kernel后,该函数自带的一个参数。隐含地决定了数据映射到新的特征空间后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的个数影响训练与预测的速度。
toc;
tic;
[predict_label,accuracy]=svmpredict(test_label,test_final,model);
toc;
type = 1;
CR = ClassResult(test_label,test_final, model, type);