本程序爲Matlab程序(咱不耽誤鐵汁們時間)
在有監督深度學習中,數據集和標籤集是缺一不可的,標籤是啥呢,就是用來區分數據之間的分類命名,那麼咱們開門見山,走起。
首先,確定數據集的維數,以m行1列的電機軸承數據集爲例
需要做啥呢?
均值+歸一化處理,ok不
咋整呢
給兩個小程序,都能實現,效果一樣
(1)
load Normal_3.mat %導入正常數據
x0 = X100_DE_time(1:480000,:); %令x0賦值爲驅動端數據,總共48萬個
x0 = x0 - mean(x0); % 去均值處理 ,mean爲MATLAB自帶求均值函數
x0 = x0'; %令x0重新賦值,爲去均值之後的數
y0 = mapminmax(x0,0,1); %歸一化處理 歸一化函數爲[A1,PS]=mapminmax(A)
A1爲矩陣,ps爲對應關係
也可表示成y0=map(取值,下界,上界)
A0 = zeros(600,800); %創建矩陣A0,zeros函數爲創建矩陣函數,(行,列)
for i = 1:600 之前數據爲48萬行,1列,每取600個數放入一列
for j = 1:800
A0(i,j) = y0(800*(i-1)+j); %對新建矩陣進行賦值,新矩陣建成,600行800列
end;
end;
下一步,各種故障類型矩陣建立成功,開始合併,加入標籤
traindata = [A0;A1;A2;A3;A4;A5;A6;A7;A8;A9]; % 合併處理,[;]代表縱向拼接[,]爲橫向拼接,一共6000行數據
trainlabels=zeros(6000,10); %新建標籤矩陣6000行,10列
for i=1:10
trainlabels(600*i-599:600*i,i)=1; %每600行做一次賦值處理,賦值爲1,一共十次,對應10類故障
end
save('traindata','traindata'); %保存文件
save('trainlabels','trainlabels');
一個不夠?
再來一個!
(2)
Mt1f2=mt1f2(202:10201,:); %每小時20個數據故障截取10-510小時的數據,即202行到10201行 ,共10000行
Mt1f4=mt1f4(202:10201,:);
Mt1f8=mt1f8(202:10201,:);
增加隨機打亂數據分佈
Mt1f2=mt1f2(randperm(size(mtaf2,1)),:); %隨機打亂排序,mt1f2代表mt1f2的行數
Mt1f4=mt1f4(randperm(size(mtaf4,1)),:);
Mt1f8=mt1f8(randperm(size(mtaf8,1)),:);
Traindata=[mt1f2(1:8000,:);mt1f4(1:8000,:);mt1f8(1:8000,:);mt1f12(1:8000,:)mt1.......mtiff18(1:8000,:);];
%每類取80%的數據爲訓練集,再合成一個訓練集
testdata=[mt1f2(8001:10000,:);mt1f4(8001:10000,:);mt1f8(8001:10000,:);mt1f12(8001:10000,:)mt1.......mtiff18(8001:10000,:);];
%每類取20%的數據合成測試集
Save進行保存
T1=[1 0 0 0 0 0 0];
T2=[0 1 0 0 0 0 0];
T3=[0 0 1 0 0 0 0];
T4=[0 0 0 1 0 0 0]; %對故障進行編碼
Rt1=repmat(t1,400,1);
Rt2=repmat(t2,400,1);
Rt3=repmat(t3,400,1);
Rt4=repmat(t4,400,1); %對t重複400行,進行賦值
Te1=repmat(t1,100,1);
Te2=repmat(t2,400,1);
......
Trainlabels=[rt1;tr2;tr3;tr4;tr5;tr6;tr7;tr8]; %合成樣本訓練標籤集
Testlabels=[te1;te2;te3;te4;....] %合成樣本測試標籤集
歐不歐?!
好使!
整就完了!
PS:看好自己保存的位置,別找不到了,完犢子。