2022年数据挖掘实验 .pdf
实验报告说明本课程一共需要写两个实验报告:实验报告一:基于人工神经网络的曲线拟合实验目的:首先, 熟悉人工神经网络的产生背景、算法的思想和原理以及步骤;其次,熟悉人工神经网络的Matlab 工具箱;最后,通过对曲线的拟合的实验,熟练掌握神经网络的程序设计。实验时间:第 11周周二 9-10节、第 12 周周二 9-10 节;学时: 4 参考程序:实验数据集文件名:data.mat% 清空环境变量clc clear % 训练数据预测数据提取及归一化%下载输入输出数据load data input output %input 是 2000 行 2 列, output 是 1行 2000 列%从 1 到 2000 间随机排序k=rand(1,2000); %随机生成一个1 行 2000 列的矩阵m,n=sort(k); %对矩阵 K 排序,其中m 表示从小到大的排序结果,n 表示 m 中各数据的排序前的索引(位置结果)%产生训练数据和预测数据input_train=input(n(1:1900),:); %input_train 为 2 行 1900 列的训练的输入矩阵output_train=output(n(1:1900); %output_train 为 1 行 1900 列的训练的输出矩阵input_test=input(n(1901:2000),:); output_test=output(n(1901:2000); %选连样本输入输出数据归一化inputn,inputps=mapminmax(input_train); % mapminmax 是对矩阵的行进行归一化处理,其中 inputn 为归一化后的数据矩阵,inputps 是归一化后的结构体,包含最大值、最小值、平均值等信息outputn,outputps=mapminmax(output_train); % BP 网络训练% %初始化网络结构net=newff(inputn,outputn,5); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - net.trainParam.epochs=100; %迭代次数net.trainParam.lr=0.1; %学习率net.trainParam.goal=0.00004;% 目标%网络训练net=train(net,inputn,outputn); % BP 网络预测%预测数据归一化inputn_test=mapminmax(apply,input_test,inputps); %按照 inputps 的规则进行反归一化%网络预测输出an=sim(net,inputn_test); %网络输出反归一化BPoutput=mapminmax(reverse,an,outputps); % 结果分析figure(1) plot(BPoutput,:og) hold on plot(output_test,-*); legend(预测输出 ,期望输出 ) title(BP 网络预测输出,fontsize,12) ylabel(函数输出 ,fontsize,12) xlabel(样本 ,fontsize,12) %预测误差error=BPoutput-output_test; figure(2) plot(error,-*) title(BP 网络预测误差,fontsize,12) ylabel(误差 ,fontsize,12) xlabel(样本 ,fontsize,12) figure(3) plot(output_test-BPoutput)./BPoutput,-*); title( 神经网络预测误差百分比) errorsum=sum(abs(error) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 实验报告二:基于支持向量机的葡萄酒分类实验目的:首先, 熟悉支持向量机的产生背景、算法的思想和原理以及步骤;其次,熟悉支持向量机的Matlab 软件包 -LibSVM (使用LibSVM 软件时,请先安装VC 软件) ;最后,通过对葡萄酒分类的实验,熟练掌握支持向量机的程序设计。实验时间:第 13 周周二 9-10 节、第 14 周周二 9-10 节、第 15 周周二 9-10 节;学时: 6 参考程序:实验数据集文件名:chapter12_wine.mat% SVM 的数据分类预测- 意大利葡萄酒种类识别% 问题描述: wine的数据来自于UCI 数据库, 记录的是在意大利同一区域上三种不同品种的葡萄酒的化学成分,数据里有178个样本,每个样本含有13个特征分量(化学成分),每个样本的类标签已给。% 清空环境变量close all; clear; clc; format compact; %紧凑格式。数据之间无空行% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13 的矩阵 ,wine_labes:178*1 的列向量load chapter12_wine.mat; % 画出测试数据的box可视化图figure; boxplot(wine,orientation,horizontal,labels,categories); title(wine 数据的 box可视化图 ,FontSize,12); xlabel( 属性值 ,FontSize,12); grid on; % 画出测试数据的分维可视化图% 画出 178个样本的类别图figure subplot(3,5,1); hold on for run = 1:178 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - plot(run,wine_labels(run),*); end 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); %num2str将数值转化为字符for i = 1:178 plot(i,wine(i,run-1),*); end xlabel( 样本 ,FontSize,10); ylabel( 属性值 ,FontSize,10); title(str,FontSize,10); end % 选定训练集和测试集% 将第一类的 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);%mtrain为train_wine 行数, ntrain 为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 网络训练名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 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; 以上程序请在 Matlab7.1 以上版本运行。注意事项:实验报告按照其规定的框架和格式书写,尽量详细,特别是程序设计部分和实验结果 (尽量用可视化的方法来显示试验结果)。本学期第 18 周周五之前各班统一收齐之后交到基础数学教研室。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -