当前位置:文档之家› 数据挖掘实验

数据挖掘实验

实验报告说明本课程一共需要写两个实验报告:实验报告一:基于人工神经网络的曲线拟合实验目的:首先,熟悉人工神经网络的产生背景、算法的思想和原理以及步骤;其次,熟悉人工神经网络的Matlab工具箱;最后,通过对曲线的拟合的实验,熟练掌握神经网络的程序设计。

实验时间:第11周周二9-10节、第12周周二9-10节;学时:4参考程序:实验数据集文件名:data.mat%% 清空环境变量clcclear%% 训练数据预测数据提取及归一化%下载输入输出数据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);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 onplot(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))实验报告二:基于支持向量机的葡萄酒分类实验目的:首先,熟悉支持向量机的产生背景、算法的思想和原理以及步骤;其次,熟悉支持向量机的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个样本的类别图figuresubplot(3,5,1);hold onfor run = 1:178plot(run,wine_labels(run),'*');endxlabel('样本','FontSize',10);ylabel('类别标签','FontSize',10);title('class','FontSize',10);%% 按照属性进行绘图for run = 2:14subplot(3,5,run);hold on;str = ['attrib ',num2str(run-1)]; %num2str将数值转化为字符for i = 1:178plot(i,wine(i,run-1),'*');endxlabel('样本','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网络训练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周周五之前各班统一收齐之后交到基础数学教研室。

相关主题