发布于2019-08-22 16:33 阅读(124) 评论(0) 点赞(24) 收藏(2)
- #数据处理代码
-
- import pandas as pd
- import numpy as np
-
- #提取M1数据
- pinlv=[]
- #M_number=['M1','M2','M3','M4','M5']
- M_xilie=['a','b','c','d','e']
- boxing=['压缩机非联端X','压缩机非联端Y','压缩机联端X','压缩机联端Y','压缩机轴位移A(波形)','压缩机轴位移B(波形)','压缩机轴位移C(波形)']
-
- fenlei=pd.DataFrame({'压缩机非联端X':[[]],'压缩机非联端Y':[[]],'压缩机联端X':[[]],'压缩机联端Y':[[]],'压缩机轴位移A(波形)':[[]],\
- '压缩机轴位移B(波形)':[[]],'压缩机轴位移C(波形)':[[]],'label':[[]]})
-
- file_all_count=[]
- k=0
- import os
- for h in range(5):
- for i in range(7):
- file_count=len(os.listdir('D:\训练数据\M1\M1%s\%s'%(M_xilie[h],boxing[i])))
- file_all_count.append(file_count)
-
- for g in range(5):
- for h in range(7):
- for i in range(file_all_count[k]):
- df=pd.read_csv('D:\训练数据\M1\M1%s\%s\wave_%s.csv' %(M_xilie[g],boxing[h],(i+1)),skiprows=5)
- df=df.drop(['wave'],axis=1)
- #df.loc[i+1]=list(data)
- listdata=list(df)
- listdata=[x[:4] for x in listdata]
- listdata=[float(x) for x in listdata]
-
- df2=pd.read_csv('D:\训练数据\M1\M1%s\%s\wave_%s.csv' %(M_xilie[g],boxing[h],(i+1)),nrows=1,header=None)
- freq=df2.loc[0,1]
-
- listdata2=[x*freq for x in listdata]
-
- pinlv=pinlv+listdata2
-
- #import array
- #int16重要!
- #pinlv=np.array(pinlv,dtype=np.int16)
- #import wave
- #import numpy as np
- #import scipy.signal as signal
- #import scipy.io.wavfile
-
- #scipy.io.wavfile.write('D:\训练数据\M1\M1a\%s.wav' %(boxing[h]),44100,pinlv) #7.2
-
- fenlei.loc[g,['%s'%(boxing[h])]]=[pinlv]
- pinlv=[]
- k=k+1
- fenlei.to_csv('d:\训练数据\M1.csv')
- import pandas as pd
- import numpy as np
-
- #提取M2数据
- pinlv=[]
- #M_number=['M1','M2','M3','M4','M5']
- M_xilie=['a','b','c','d','e']
- boxing=['压缩机非联端X','压缩机非联端Y','压缩机联端X','压缩机联端Y','压缩机轴位移A(波形)','压缩机轴位移B(波形)']
-
- fenlei=pd.DataFrame({'压缩机非联端X':[[]],'压缩机非联端Y':[[]],'压缩机联端X':[[]],'压缩机联端Y':[[]],'压缩机轴位移A(波形)':[[]],\
- '压缩机轴位移B(波形)':[[]],'压缩机轴位移C(波形)':[[]],'label':[[]]})
-
- file_all_count=[]
- k=0
- import os
- for h in range(5):
- for i in range(6):
- file_count=len(os.listdir('D:\训练数据\M2\M2%s\%s'%(M_xilie[h],boxing[i])))
- file_all_count.append(file_count)
-
- for g in range(5):
- for h in range(6):
- for i in range(file_all_count[k]):
- df=pd.read_csv('D:\训练数据\M2\M2%s\%s\wave_%s.csv' %(M_xilie[g],boxing[h],(i+1)),skiprows=5)
- df=df.drop(['wave'],axis=1)
- #df.loc[i+1]=list(data)
- listdata=list(df)
- listdata=[x[:4] for x in listdata]
- listdata=[float(x) for x in listdata]
-
- df2=pd.read_csv('D:\训练数据\M2\M2%s\%s\wave_%s.csv' %(M_xilie[g],boxing[h],(i+1)),nrows=1,header=None)
- freq=df2.loc[0,1]
-
- listdata2=[x*freq for x in listdata]
-
- pinlv=pinlv+listdata2
-
- #import array
- #int16重要!
- #pinlv=np.array(pinlv,dtype=np.int16)
- #import wave
- #import numpy as np
- #import scipy.signal as signal
- #import scipy.io.wavfile
-
- #scipy.io.wavfile.write('D:\训练数据\M1\M1a\%s.wav' %(boxing[h]),44100,pinlv) #7.2
-
- fenlei.loc[g,['%s'%(boxing[h])]]=[pinlv]
- pinlv=[]
- k=k+1
- fenlei.to_csv('d:\训练数据\M2.csv')
- import pandas as pd
- import numpy as np
-
- #提取M3数据
- pinlv=[]
- #M_number=['M1','M2','M3','M4','M5']
- M_xilie=['a','b','c','d','e']
- boxing=['压缩机非联端X','压缩机非联端Y','压缩机联端X','压缩机联端Y','压缩机轴位移A(波形)','压缩机轴位移B(波形)','压缩机轴位移C(波形)']
-
- fenlei=pd.DataFrame({'压缩机非联端X':[[]],'压缩机非联端Y':[[]],'压缩机联端X':[[]],'压缩机联端Y':[[]],'压缩机轴位移A(波形)':[[]],\
- '压缩机轴位移B(波形)':[[]],'压缩机轴位移C(波形)':[[]],'label':[[]]})
-
- file_all_count=[]
- k=0
- import os
- for h in range(5):
- for i in range(7):
- file_count=len(os.listdir('D:\训练数据\M3\M3%s\%s'%(M_xilie[h],boxing[i])))
- file_all_count.append(file_count)
-
- for g in range(5):
- for h in range(7):
- for i in range(file_all_count[k]):
- df=pd.read_csv('D:\训练数据\M3\M3%s\%s\wave_%s.csv' %(M_xilie[g],boxing[h],(i+1)),skiprows=5)
- df=df.drop(['wave'],axis=1)
- #df.loc[i+1]=list(data)
- listdata=list(df)
- listdata=[x[:4] for x in listdata]
- listdata=[float(x) for x in listdata]
-
- df2=pd.read_csv('D:\训练数据\M3\M3%s\%s\wave_%s.csv' %(M_xilie[g],boxing[h],(i+1)),nrows=1,header=None)
- freq=df2.loc[0,1]
-
- listdata2=[x*freq for x in listdata]
-
- pinlv=pinlv+listdata2
-
- #import array
- #int16重要!
- #pinlv=np.array(pinlv,dtype=np.int16)
- #import wave
- #import numpy as np
- #import scipy.signal as signal
- #import scipy.io.wavfile
-
- #scipy.io.wavfile.write('D:\训练数据\M1\M1a\%s.wav' %(boxing[h]),44100,pinlv) #7.2
-
- fenlei.loc[g,['%s'%(boxing[h])]]=[pinlv]
- pinlv=[]
- k=k+1
- fenlei.to_csv('d:\训练数据\M3.csv')
- import pandas as pd
- import numpy as np
-
- #提取M4数据
- pinlv=[]
- #M_number=['M1','M2','M3','M4','M5']
- M_xilie=['a','b','c','d','e']
- boxing=['压缩机非联端A','压缩机非联端B','压缩机联端A','压缩机联端B','压缩机轴位移A(波形)','压缩机轴位移B(波形)','压缩机轴位移C(波形)']
-
- fenlei=pd.DataFrame({'压缩机非联端A':[[]],'压缩机非联端B':[[]],'压缩机联端A':[[]],'压缩机联端B':[[]],'压缩机轴位移A(波形)':[[]],\
- '压缩机轴位移B(波形)':[[]],'压缩机轴位移C(波形)':[[]],'label':[[]]})
-
- file_all_count=[]
- k=0
- import os
- for h in range(5):
- for i in range(7):
- file_count=len(os.listdir('D:\训练数据\M4\M4%s\%s'%(M_xilie[h],boxing[i])))
- file_all_count.append(file_count)
-
- for g in range(5):
- for h in range(7):
- for i in range(file_all_count[k]):
- df=pd.read_csv('D:\训练数据\M4\M4%s\%s\wave_%s.csv' %(M_xilie[g],boxing[h],(i+1)),skiprows=5)
- df=df.drop(['wave'],axis=1)
- #df.loc[i+1]=list(data)
- listdata=list(df)
- listdata=[x[:3] for x in listdata]
- listdata=[float(x) for x in listdata]
-
- df2=pd.read_csv('D:\训练数据\M4\M4%s\%s\wave_%s.csv' %(M_xilie[g],boxing[h],(i+1)),nrows=1,header=None)
- freq=df2.loc[0,1]
-
- listdata2=[x*freq for x in listdata]
-
- pinlv=pinlv+listdata2
-
- #import array
- #int16重要!
- #pinlv=np.array(pinlv,dtype=np.int16)
- #import wave
- #import numpy as np
- #import scipy.signal as signal
- #import scipy.io.wavfile
-
- #scipy.io.wavfile.write('D:\训练数据\M1\M1a\%s.wav' %(boxing[h]),44100,pinlv) #7.2
-
- fenlei.loc[g,['%s'%(boxing[h])]]=[pinlv]
- pinlv=[]
- k=k+1
- fenlei.to_csv('d:\训练数据\M4.csv')
- import pandas as pd
- import numpy as np
-
- #提取M5数据
- pinlv=[]
- #M_number=['M1','M2','M3','M4','M5']
- M_xilie=['a','b','c','d','e']
- boxing=['压缩机非联端X','压缩机非联端Y','压缩机联端X','压缩机联端Y','压缩机轴位移A(波形)','压缩机轴位移B(波形)','压缩机轴位移C(波形)']
-
- fenlei=pd.DataFrame({'压缩机非联端X':[[]],'压缩机非联端Y':[[]],'压缩机联端X':[[]],'压缩机联端Y':[[]],'压缩机轴位移A(波形)':[[]],\
- '压缩机轴位移B(波形)':[[]],'压缩机轴位移C(波形)':[[]],'label':[[]]})
-
- file_all_count=[]
- k=0
- import os
- for h in range(5):
- for i in range(7):
- file_count=len(os.listdir('D:\训练数据\M5\M5%s\%s'%(M_xilie[h],boxing[i])))
- file_all_count.append(file_count)
-
- for g in range(5):
- for h in range(7):
- for i in range(file_all_count[k]):
- df=pd.read_csv('D:\训练数据\M5\M5%s\%s\wave_%s.csv' %(M_xilie[g],boxing[h],(i+1)),skiprows=5)
- df=df.drop(['wave'],axis=1)
- #df.loc[i+1]=list(data)
- listdata=list(df)
- listdata=[x[:4] for x in listdata]
- listdata=[float(x) for x in listdata]
-
- df2=pd.read_csv('D:\训练数据\M5\M5%s\%s\wave_%s.csv' %(M_xilie[g],boxing[h],(i+1)),nrows=1,header=None)
- freq=df2.loc[0,1]
-
- listdata2=[x*freq for x in listdata]
-
- pinlv=pinlv+listdata2
-
- #import array
- #int16重要!
- #pinlv=np.array(pinlv,dtype=np.int16)
- #import wave
- #import numpy as np
- #import scipy.signal as signal
- #import scipy.io.wavfile
-
- #scipy.io.wavfile.write('D:\训练数据\M1\M1a\%s.wav' %(boxing[h]),44100,pinlv) #7.2
-
- fenlei.loc[g,['%s'%(boxing[h])]]=[pinlv]
- pinlv=[]
- k=k+1
- fenlei.to_csv('d:\训练数据\M5.csv')
- def xiaoshudian(x):
- t=0
- for i in range(len(x)):
- if x[i]=='.':
- t=t+1
- if t==2:
- return x[:i]
- if i==len(x)-1:
- return x
- #xiaoshudian('1.1.23456789')
- import pandas as pd
- import numpy as np
-
- #提取决赛数据
- pinlv=[]
- M_xilie=['_1','_2','_3','_4','_5']
- boxing=['压缩机非联端X','压缩机非联端Y','压缩机联端X','压缩机联端Y','压缩机轴位移A(波形)','压缩机轴位移B(波形)']
-
- boxing2=['汽轮机非联端A','汽轮机非联端B','汽轮机联端A','汽轮机联端B','汽轮机位移A(波形)','汽轮机位移B(波形)']
-
- fenlei=pd.DataFrame({'压缩机非联端X':[[]],'压缩机非联端Y':[[]],'压缩机联端X':[[]],'压缩机联端Y':[[]],'压缩机轴位移A(波形)':[[]],\
- '压缩机轴位移B(波形)':[[]],'压缩机轴位移C(波形)':[[]],'label':[[]]})
-
- file_all_count=[]
- k=0
- import os
- for h in range(5):
- for i in range(6):
- file_count=len(os.listdir('D:\决赛数据\M18\M18%s\%s'%(M_xilie[h],boxing2[i])))
- file_all_count.append(file_count)
-
- for g in range(5):
- for h in range(6):
- for i in range(file_all_count[k]):
- df=pd.read_csv('D:\决赛数据\M18\M18%s\%s\wave_%s.csv' %(M_xilie[g],boxing2[h],(i+1)),skiprows=5)
- df=df.drop(['wave'],axis=1)
- #df.loc[i+1]=list(data)
- listdata=list(df)
- listdata=[xiaoshudian(x) for x in listdata]
- listdata=[float(x) for x in listdata]
-
- df2=pd.read_csv('D:\决赛数据\M18\M18%s\%s\wave_%s.csv' %(M_xilie[g],boxing2[h],(i+1)),nrows=1,header=None)
- freq=df2.loc[0,1]
-
- listdata2=[x*freq for x in listdata]
-
- pinlv=pinlv+listdata2
-
- fenlei.loc[g,['%s'%(boxing[h])]]=[pinlv]
- pinlv=[]
- k=k+1
- fenlei.to_csv('d:\决赛数据\M18.csv')
- #转化为 .wav文件
- import librosa
- import numpy as np
- import pandas as pd
- import scipy
- df=pd.read_csv('d:\决赛数据\M17.csv')
- df2=df.drop(['Unnamed: 0'],axis=1)
-
- M_xilie=['_1','_2','_3','_4','_5']
- boxing=['压缩机非联端X','压缩机非联端Y','压缩机联端X','压缩机联端Y','压缩机轴位移A(波形)','压缩机轴位移B(波形)']
-
- for h in range(5):
- for i in range(6):
- df2.iloc[h,i]=df2.iloc[h,i][1:-1]
- pinlv=df2.iloc[h,i].split(',')
- pinlv=[float(x) for x in pinlv]
- pinlv=np.array(pinlv,dtype=np.int16)
- scipy.io.wavfile.write('D:\决赛数据\M17%s%s.wav' %(M_xilie[h],boxing[i]),44100,pinlv)
- #模型的训练和检验
-
- #建立模型一: 区分机器是否坏掉
- #读入数据 X y
- import librosa
- import numpy as np
-
- M_xilie=['a','b','c','d','e']
- boxing=['压缩机非联端X','压缩机非联端Y','压缩机联端X','压缩机联端Y','压缩机轴位移A(波形)','压缩机轴位移B(波形)','压缩机轴位移C(波形)']
-
- for g in range(5):
- for h in range(5):
- for i in range(7):
-
- if g==1 and i==6:
- break
-
- file_name='D:\训练数据\M%s%s%s.wav'%(g+1,M_xilie[h],boxing[i])
- X, sample_rate = librosa.load(file_name, res_type='kaiser_fast')
- mfccs = np.mean(librosa.feature.mfcc(y=X, sr=sample_rate, n_mfcc=40).T,axis=0)
-
- if g==0 and h==0 and i==0:
- tezhen=mfccs
- else:
- tezhen=np.vstack((tezhen,mfccs))
-
- from sklearn.preprocessing import LabelEncoder
- from keras.utils import np_utils
-
- X=tezhen
- y=np.array([['a'],['a'],['a'],['a'],['a'],['a'],['a'],\
- ['a'],['a'],['a'],['a'],['a'],['a'],['a'],\
- ['a'],['a'],['a'],['a'],['a'],['a'],['a'],\
- ['a'],['a'],['a'],['a'],['a'],['a'],['a'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
-
- ['a'],['a'],['a'],['a'],['a'],['a'],\
- ['a'],['a'],['a'],['a'],['a'],['a'],\
- ['a'],['a'],['a'],['a'],['a'],['a'],\
- ['a'],['a'],['a'],['a'],['a'],['a'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],\
-
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
-
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
-
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g'],\
- ['g'],['g'],['g'],['g'],['g'],['g'],['g']])
-
- lb = LabelEncoder()
-
- y = np_utils.to_categorical(lb.fit_transform(y))
- #训练模型 1
- import numpy as np
- from keras.models import Sequential
- from keras.layers import Dense,Dropout,Activation,Flatten,LSTM
- from keras.layers import Convolution2D,MaxPooling2D
- from keras.optimizers import Adam
- from sklearn import metrics
-
- num_labels = y.shape[1]
- filter_size = 2
-
- # build model
- model=Sequential()
-
- model.add(Dense(256,input_shape=(40,)))
- model.add(Activation('relu'))
- model.add(Dropout(0.1))
-
- model.add(Dense(64))
- model.add(Activation('relu'))
- model.add(Dropout(0.1))
-
- model.add(Dense(num_labels))
- model.add(Activation('softmax'))
-
- model.compile(loss='binary_crossentropy',metrics=['accuracy'],optimizer='adam')
-
- model.fit(X,y,batch_size=34,epochs=25)
-
-
- #获取全组决赛数据
- import librosa
- import numpy as np
-
- M_xilie=['_1','_2','_3','_4','_5']
- boxing=['压缩机非联端X','压缩机非联端Y','压缩机联端X','压缩机联端Y','压缩机轴位移A(波形)','压缩机轴位移B(波形)']
-
- for g in range(8):
- for h in range(5):
- for i in range(6):
-
- file_name='D:\决赛数据\M%s%s%s.wav'%(g+11,M_xilie[h],boxing[i])
- X, sample_rate = librosa.load(file_name, res_type='kaiser_fast')
- mfccs = np.mean(librosa.feature.mfcc(y=X, sr=sample_rate, n_mfcc=40).T,axis=0)
-
- if g==0 and h==0 and i==0:
- tezhen_juesai=mfccs
- else:
- tezhen_juesai=np.vstack((tezhen_juesai,mfccs))
- X_juesai=tezhen_juesai
- print(X_juesai.shape)
- (240, 40)
- #预测决赛全组数据
- ar=model.predict_classes(X_juesai)
- for i in np.arange(0,240,6):
- print(ar[i:i+6])
- if (i+1)%5==0:
- print('')
-
- #建立模型二: 区分机器具体时间坏掉
- #读入数据 X y
- import librosa
- import numpy as np
-
- M_xilie=['a','b','c','d','e']
- boxing=['压缩机非联端X','压缩机非联端Y','压缩机联端X','压缩机联端Y','压缩机轴位移A(波形)','压缩机轴位移B(波形)','压缩机轴位移C(波形)']
-
- for g in range(2):
- for h in range(5):
- for i in range(7):
-
- if g==1 and i==6:
- break
-
- file_name='D:\训练数据\M%s%s%s.wav'%(g+1,M_xilie[h],boxing[i])
- X, sample_rate = librosa.load(file_name, res_type='kaiser_fast')
- mfccs = np.mean(librosa.feature.mfcc(y=X, sr=sample_rate, n_mfcc=40).T,axis=0)
-
- if g==0 and h==0 and i==0:
- tezhen=mfccs
- else:
- tezhen=np.vstack((tezhen,mfccs))
-
- from sklearn.preprocessing import LabelEncoder
- from keras.utils import np_utils
-
- X2=tezhen
- y2=np.array([['a'],['a'],['a'],['a'],['a'],['a'],['a'],\
- ['b'],['b'],['b'],['b'],['b'],['b'],['b'],\
- ['c'],['c'],['c'],['c'],['c'],['c'],['c'],\
- ['d'],['d'],['d'],['d'],['d'],['d'],['d'],\
- ['e'],['e'],['e'],['e'],['e'],['e'],['e'],\
-
- ['a'],['a'],['a'],['a'],['a'],['a'],\
- ['b'],['b'],['b'],['b'],['b'],['b'],\
- ['c'],['c'],['c'],['c'],['c'],['c'],\
- ['d'],['d'],['d'],['d'],['d'],['d'],\
- ['e'],['e'],['e'],['e'],['e'],['e']])
-
- lb = LabelEncoder()
-
- y2 = np_utils.to_categorical(lb.fit_transform(y2))
- #训练模型 2
- import numpy as np
- from keras.models import Sequential
- from keras.layers import Dense,Dropout,Activation,Flatten,LSTM
- from keras.layers import Convolution2D,MaxPooling2D
- from keras.optimizers import Adam
- from sklearn import metrics
-
- num_labels = y2.shape[1]
- filter_size = 2
-
- # build model
- model2=Sequential()
-
- model2.add(Dense(256,input_shape=(40,)))
- model2.add(Activation('relu'))
- model2.add(Dropout(0.1))
-
- model2.add(Dense(64))
- model2.add(Activation('relu'))
- model2.add(Dropout(0.1))
-
- model2.add(Dense(num_labels))
- model2.add(Activation('softmax'))
-
- model2.compile(loss='categorical_crossentropy',metrics=['accuracy'],optimizer='adam')
-
- model2.fit(X2,y2,batch_size=34,epochs=25)
-
- #获取故障组决赛数据
- import librosa
- import numpy as np
-
- M_number=['11','16','17','18']
- M_xilie=['_1','_2','_3','_4','_5']
- boxing=['压缩机非联端X','压缩机非联端Y','压缩机联端X','压缩机联端Y','压缩机轴位移A(波形)','压缩机轴位移B(波形)']
-
- for g in range(4):
- for h in range(5):
- for i in range(6):
-
- file_name='D:\决赛数据\M%s%s%s.wav'%(M_number[g],M_xilie[h],boxing[i])
- X, sample_rate = librosa.load(file_name, res_type='kaiser_fast')
- mfccs = np.mean(librosa.feature.mfcc(y=X, sr=sample_rate, n_mfcc=40).T,axis=0)
-
- if g==0 and h==0 and i==0:
- tezhen_juesai=mfccs
- else:
- tezhen_juesai=np.vstack((tezhen_juesai,mfccs))
- X_juesai=tezhen_juesai
- print(X_juesai.shape)
- (120, 40)
- #预测故障组决赛数据
- ar=model2.predict_classes(X_juesai)
- for i in np.arange(0,120,6):
- print(ar[i:i+6])
- if (i+1)%5==0:
- print('')
-
作者:齐天大圣
链接:https://www.pythonheidong.com/blog/article/52943/e393a3a4193e5f24340e/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!