将混合数据类型加载到MATLAB神经网络工具箱中

时间:2012-07-30 15:42:52

标签: machine-learning neural-network matlab

我很难将制表符分隔的输入文件加载到MATLAB nprtool中,我认为这是因为nprtool GUI不支持加载混合数据类型。我加载的.tab文件大约有1100个数据样本(行),每个样本看起来像:

864 1342470776.212023000    172.25.177.41   155.34.234.20   HTTP    440 58689   http-alt    GET http://i.cdn.turner.com/cnn/.e/img/3.0/global/header/hdr-main.gif   image/png,image/*;q=0.8,*/*;q=0.5   gzip,deflate            0.000094000     http://www.cnn.com/

以上只是输入向量中的单个样本。我尝试使用nprtool GUI加载文件,但它无法正确识别数据。它将所有内容视为“textdata”,在“数据”部分中包含一些垃圾。然后,我试图通过脚本没有GUI。此方法抛出错误(如下)。有什么方法吗?下面是我用来加载文件和错误的脚本片段。任何帮助表示赞赏。谢谢!

text1 = fopen('/Users/cgarry/Desktop/CRANEUM/output.tab');
pacTargets = importdata('/Users/cgarry/Desktop/CRANEUM/data.tab','\t');
pacInputs = textscan(text1,'%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s');
fclose(text1);

inputs = pacInputs;
targets = pacTargets;

% Create a Pattern Recognition Network
hiddenLayerSize = 10;
net = patternnet(hiddenLayerSize);


% Setup Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;


% Train the Network
[net,tr] = train(net,inputs,targets);

% Test the Network
outputs = net(inputs);
errors = gsubtract(targets,outputs);
performance = perform(net,targets,outputs);

% View the Network
view(net)

% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, plotconfusion(targets,outputs)
%figure, ploterrhist(errors)


>> nnet
Error using trainscg (line 97)
Inputs X{1,1} is not numeric or logical.

Error in network/train (line 106)
[net,tr] = feval(net.trainFcn,net,X,T,Xi,Ai,EW,net.trainParam);

Error in nnet (line 21)
[net,tr] = train(net,inputs,targets);

1 个答案:

答案 0 :(得分:1)

多数是正确的,Matlab神经网络不支持混合数据类型。但不要担心有多种方法可以解决这个问题。最简单的方法是对数据进行分类。例如,包括HTTP的所有数据都用1表示,而其他数据可以用2,3表示.... 还有一些其他软件可用。我认为R神经网络包可以处理这个(不确定)。