现代机器学习理论大作业(4)

2019-08-30 19:21

xlabel('样本','FontSize',10); ylabel('类别标签','FontSize',10); title('class','FontSize',10); for run = 2:14

subplot(3,5,run); hold on;

str = ['attrib ',num2str(run-1)]; for i = 1:178

plot(i,wine(i,run-1),'*'); end

xlabel('样本','FontSize',10); ylabel('属性值','FontSize',10); title(str,'FontSize',10); End

实验二:

%% SVM--葡萄酒种类识别

%机器学习作业 实验二:建立分类模型,进行类别标签预测 % 2015.6 lvyuxuan %

%% 清空环境变量 close all; clear; clc;

format compact; %% 数据提取

% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量 load lyx_wine.mat;

% 选定训练集和测试集

% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集 train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)]; % 相应的训练集的标签也要分离出来

train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)]; % 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集 test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)]; % 相应的测试集的标签也要分离出来

test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];

%% 数据预处理

% 数据预处理,将训练集和测试集归一化到[0,1]区间

16

[mtrain,ntrain] = size(train_wine); [mtest,ntest] = size(test_wine);

dataset = [train_wine;test_wine];

% mapminmax为MATLAB自带的归一化函数 [dataset_scale,ps] = mapminmax(dataset',0,1); dataset_scale = dataset_scale';

train_wine = dataset_scale(1:mtrain,:);

test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: ); %% SVM网络训练

model = svmtrain(train_wine_labels, train_wine, '-c 2 -g 1');

%% SVM网络预测

[predict_label, accuracy] = svmpredict(test_wine_labels, test_wine, model);

%% 结果分析

% 测试集的实际分类和预测分类图

figure; hold on;

plot(test_wine_labels,'o'); plot(predict_label,'r*');

xlabel('测试集样本','FontSize',12); ylabel('类别标签','FontSize',12);

legend('实际测试集分类','预测测试集分类');

title('测试集的实际分类和预测分类图','FontSize',12); grid on;

实验三:

%% SVM--葡萄酒种类识别

%机器学习作业 实验三:ROC图形分析 % 2015.6 lvyuxuan %

%% 清空环境变量 close all; clear; clc;

format compact; %% 数据提取

% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩

17

阵,wine_labes:178*1的列向量 load lyx_wine.mat;

% 选定训练集和测试集

% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集 train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)]; % 相应的训练集的标签也要分离出来

train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)]; % 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集 test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)]; % 相应的测试集的标签也要分离出来

test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];

%% 数据预处理

% 数据预处理,将训练集和测试集归一化到[0,1]区间

[mtrain,ntrain] = size(train_wine); [mtest,ntest] = size(test_wine);

dataset = [train_wine;test_wine];

% mapminmax为MATLAB自带的归一化函数 [dataset_scale,ps] = mapminmax(dataset',0,1); dataset_scale = dataset_scale';

train_wine = dataset_scale(1:mtrain,:);

test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: ); %% SVM网络训练

option = ['-t ' '2' ' -c ' '2' ' -g ' ' 1' ' -b ' '1'];

model = svmtrain(train_wine_labels, train_wine,option);

%% SVM网络预测

[predict_label,accuracy,dec_values] = svmpredict(test_wine_labels, test_wine, model,'-b 1'); %[predictlabel,accuracy,] = svmpredict(testlabel,test,model,'-b 1');

%% 结果分析

plotSVMroc(test_wine_labels,dec_values,3);

实验四:

%% SVM--葡萄酒种类识别

%机器学习作业 实验四:运用不同数量的训练样本及采用不同核函数的对比 % 2015.6 lvyuxuan %

18

%% 清空环境变量 close all; clear; clc;

format compact; %% 数据提取

% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量 load lyx_wine.mat;

% 选定训练集和测试集 x1=[10 15 20 25 30 35 40]; x2=[69 74 79 84 89 94 99];

x3=[140 145 150 155 160 165 170]; saccuracy1=[]; saccuracy2=[]; saccuracy3=[]; saccuracy4=[]; i=1;

%每类有i个训练数据 %每类有10个训练数据 for i=1:7

% 将第一类的1-10/15/20/25/30/35/40,第二类的60-69/74/79/84/89/94/99,第三类的131-140/145/150/155/160/165/170做为训练集

train_wine = [wine(1:x1(i),:);wine(60:x2(i),:);wine(131:x3(i),:)];

% 相应的训练集的标签也要分离出来

train_wine_labels = [wine_labels(1:x1(i));wine_labels(60:x2(i));wine_labels(131:x3(i))];

% 将第一类的11-59,第二类的80-130,第三类的141-178做为测试集 test_wine = [wine(x1(i)+1:59,:);wine(x2(i)+1:130,:);wine(x3(i)+1:178,:)];

% 相应的测试集的标签也要分离出来

test_wine_labels = [wine_labels(x1(i)+1:59);wine_labels(x2(i)+1:130);wine_labels(x3(i)+1:178)];

%% 数据预处理

% 数据预处理,将训练集和测试集归一化到[0,1]区间

[mtrain,ntrain] = size(train_wine); [mtest,ntest] = size(test_wine);

19

dataset = [train_wine;test_wine];

% mapminmax为MATLAB自带的归一化函数 [dataset_scale,ps] = mapminmax(dataset',0,1); dataset_scale = dataset_scale';

train_wine = dataset_scale(1:mtrain,:);

test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: ); %% SVM网络训练

model1 = svmtrain(train_wine_labels, train_wine, '-c 2 -g 1 -t 0'); model2 = svmtrain(train_wine_labels, train_wine, '-c 2 -g 1 -t 1'); model3 = svmtrain(train_wine_labels, train_wine, '-c 2 -g 1 -t 2'); model4 = svmtrain(train_wine_labels, train_wine, '-c 2 -g 1 -t 3');

%% SVM网络预测

[predict_label, accuracy1] = svmpredict(test_wine_labels, test_wine, model1); saccuracy1=[saccuracy1 accuracy1];

[predict_label, accuracy2] = svmpredict(test_wine_labels, test_wine, model2); saccuracy2=[saccuracy2 accuracy2];

[predict_label, accuracy3] = svmpredict(test_wine_labels, test_wine, model3); saccuracy3=[saccuracy3 accuracy3];

[predict_label, accuracy4] = svmpredict(test_wine_labels, test_wine, model4); saccuracy4=[saccuracy4 accuracy4]; end

%% 结果分析

figure;

plot(x1,saccuracy1(1,:)','-^r','LineWidth',1,'MarkerFaceColor',[.49 1 .63],'MarkerSize',10);hold on; plot(x1,saccuracy2(1,:)','-oy','LineWidth',1,'MarkerFaceColor',[.49 1 .63],'MarkerSize',10);hold on;

plot(x1,saccuracy3(1,:)','-*b','LineWidth',1,'MarkerFaceColor',[.49 1 .63],'MarkerSize',10);hold on;

plot(x1,saccuracy4(1,:)','-sg','LineWidth',1,'MarkerFaceColor',[.49 1 .63],'MarkerSize',10);hold off; grid on;

title('采用不同核函数的对比')

legend('linear','polynomial','radial basis function','sigmoid'); xlabel('每类训练样本数量','FontSize',14);

ylabel('测试集预测分类准确率','FontSize',14);axis([10 45 75 100]);

20


现代机器学习理论大作业(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:湖南工业大学科技学院机械装备设计课程设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: