维卷积神经网络,可以用来做一维的数据分析,以家用电器的识别分类作为背景。使用excel画出的简单的图形如下,横坐标为用电器开启后的秒数,纵坐标为某一秒的有功功率,由上至下分别为空调(Air Conditioner),冰箱(Refrigerator),烤炉(Stove):
!
从上面三个图可以看出不同的用电器在工作时会以自己特有的方式工作。从而形成不同的特征峰及平台。接下来使用到的数据一共有9类用电器,包括上面这三种,但是我这边的训练集仅有每分钟一个数据的训练集,如果有朋友有大量的一秒一个数据的dataset,可以分享一下哈,感恩。
一维卷积神经网络应用于电信号的分类的大致逻辑如下图:
!
对比于其它维度的卷积神经网络,其卷积运算过程(ConV),池化过程(pooling)和全连接等可以理解为下图:
!
具体的一维卷积运算过程如下图,蓝色框框就是我们的卷积核,也就是特征提取的detector,箭头方向即为我们卷积核的移动方向,因为是一维的,所以它只有一个方向上移动,而不像多维那样,往复:
!
一、导入包和数据:
import os
import csv
import keras
import pandas as pd
import numpy as np
from sklearn.metrics import classification_report
from sklearn.preprocessing import LabelEncoder,StandardScaler
from sklearn.model_selection import StratifiedShuffleSplit
from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten, Convolution1D, Dropout
from keras.optimizers import SGD
from keras.utils import np_utils
import time
from datetime import datetime
from sklearn.datasets import make_blobs #generate isotropic Gaussian blobs for clustering
path=r'E:\ilm\train_data'
files=os.listdir(path)
column_names=[]
train=pd.DataFrame()
for item in files:
data_frame=pd.read_csv('E:/ilm/train_data/'+item)
data_frame['mins']=range(len(data_frame))
data_frame=data_frame.drop(['Unnamed: 0'],axis=1)
data_frame=pd.pivot_table(data_frame,columns=['mins'])
train=train.append(data_frame)
train=train.reset_index