理論以前寫過:https://www.cnblogs.com/fangxiaoqi/p/11306545.html,這里根據天氣、是否周末、有無促銷的情況,來預測銷量情況。

function [ matrix,attributes ] = bp_preprocess( inputfile ) %% BP神經網絡算法數據預處理,把字符串轉換為0,1編碼 % inputfile: 輸入數據文件; % output: 轉換后的0,1矩陣; % attributes: 屬性和Label; %% 讀取數據 [~,txt]=xlsread(inputfile); attributes=txt(1,2:end); data = txt(2:end,2:end); %% 針對每列數據進行轉換 [rows,cols] = size(data); matrix = zeros(rows,cols); for j=1:cols matrix(:,j) = cellfun(@trans2onefalse,data(:,j)); end end function flag = trans2onefalse(data) if strcmp(data,'壞') ||strcmp(data,'否')... ||strcmp(data,'低') flag =0; return ; end flag =1; end
%% 使用BP神經網絡算法預測銷量高低 clear ; % 參數初始化 inputfile = '../data/sales_data.xls'; % 銷量及其他屬性數據 %% 數據預處理 disp('正在進行數據預處理...'); [matrix,~] = bp_preprocess(inputfile); %% 輸入數據變換 input = matrix(:,1:end-1); target = matrix(:,end); input=input'; target=target'; target=full(ind2vec(target+1)); %% 新建BP神經網絡,並設置參數 % net = feedforwardnet(10); net = patternnet(10); net.trainParam.epochs=1000; net.trainParam.show=25; net.trainParam.showCommandLine=0; net.trainParam.showWindow=1; net.trainParam.goal=0; net.trainParam.time=inf; net.trainParam.min_grad=1e-6; net.trainParam.max_fail=5; net.performFcn='mse'; % 訓練神經網絡模型 net= train(net,input,target); disp('BP神經網絡訓練完成!'); %% 使用訓練好的BP神經網絡進行預測 y= sim(net,input); plotconfusion(target,y); disp('銷量預測完成!');


可以看出,檢測樣本為34個,預測正確的個數為26,預測准確率為76.5%,預測准確率較低,是由於神經網絡預測時需要較多的樣本,是在此預測數據較少造成的。
