本帖最后由 鸿蒙123 于 2017-4-24 12:42 编辑
%% 清空环境变量
clc
%输入输出数据
input=data(:,1:2219);
output=[ones(1000,1);zeros(1000,1);ones(509,1);zeros(638,1)];
%随机提取2000个样本为训练样本,1147个样本为预测样本
input_train=input(1:2000,1:2219);
output_train=output(1:2000,1);
input_test=input(2001:3147,1:2219);
output_test=output(2001:3147,1);
%输入数据归一化
[inputn,inputps]=mapminmax(input_train);
%% BP网络训练
% %初始化网络结构
net=newff(inputn,output_train,10);
net.trainParam.epochs=1000;
net.trainParam.lr=0.1;
net.trainParam.goal=0.0000004;
%% 网络训练
net=train(net,input_train,output_train);
%% BP网络预测
%预测数据归一化
input_test=mapminmax('apply',input_test,inputps);
%网络预测输出
BPoutput=sim(net,input_test);
%% 结果分析
%根据网络输出找出数据属于哪类
BPoutput(BPoutput<0.5)=0;
BPoutput(BPoutput>=0.5)=1;
%% 结果分析
%画出预测种类和实际种类的分类图
figure(1)
plot(BPoutput,'og')
hold on
plot(output_test,'r*');
legend('预测类别','输出类别')
title('BP网络预测分类与实际类别比对','fontsize',12)
ylabel('类别标签','fontsize',12)
xlabel('样本数目','fontsize',12)
ylim([-0.5 1.5])
%预测正确率
rightnumber=0;
for i=1:size(output_test,2)
if BPoutput(i)==output_test(i)
rightnumber=rightnumber+1;
end
end
rightratio=rightnumber/size(output_test,2)*100;
sprintf('测试准确率=%0.2f',rightratio)
要做一个对酒店评论的分类的实训
1.data为一个酒店评论语料的特征向量,维度为3147*2219(代表3147条评论,2219个特征词);
2.数据集中每一行代表一条评论,其中序号1-1000,2001-2509为正面评论,序号1000-2000、2510-3147为负面评论(建议前两2000条评论作为训练集,后1147条评论作为测试集);
现在运行代码出现如下错误
Error using network/train (line 272)
Inputs and targets have different numbers of samples.
Error in Untitled (line 21)
net=train(net,input_train,output_train);
错误1:指向 if ~isempty(err), nnerr.throw('Args',err), end
错误2:指向 net=train(net,input_train,output_train);
新人第一次接触MATLAB 代码也是在网上找了一个类似的修改了一部分 求各路大神详细指点 先拜谢了