一周蹭、讀入數(shù)據(jù)
數(shù)據(jù)集來源https://github.com/wuyimengmaths/data/tree/master
import pandas as pd
import numpy as np
path = 'model.xls'
df = pd.read_excel(path)
data = df.values
dianliang = data[:,0] ##電量趨勢
xiansun = data[:,1] ##線損指標(biāo)
gaojin = data[:,2] ##告警類指標(biāo)
target = data[:,3] ##是否漏電 標(biāo)簽
二疲恢、拆分?jǐn)?shù)據(jù)集
將樣本前三列數(shù)據(jù)合并作為特征,第四列當(dāng)作標(biāo)簽棚愤,進(jìn)行有監(jiān)督訓(xùn)練。通過train_test_split將數(shù)據(jù)集拆分成訓(xùn)練集和測試集(80%用于訓(xùn)練宛畦,20%用于測試)揍移。
a = np.vstack((dianliang, xiansun))
feature = np.vstack((a,gaojin))
feature = feature.transpose() ##轉(zhuǎn)置
from sklearn.model_selection import train_test_split
feature_train, feature_test, target_train, target_test = train_test_split(feature, target, test_size=0.2,random_state=0)
三、搭建神經(jīng)網(wǎng)絡(luò)
我們搭建一個簡單的神經(jīng)網(wǎng)絡(luò)那伐。
from keras.models import Sequential
from keras.layers.core import Dense, Activation
net = Sequential()
##因?yàn)樘卣魇侨校琲nput_dim是三維的
net.add(Dense(input_dim =3,output_dim =14))
net.add(Activation('relu'))
net.add(Dense(input_dim = 14,output_dim =18))
net.add(Activation('relu'))
net.add(Dense(input_dim =18,output_dim =1))
net.add(Activation('sigmoid'))
net.compile(loss='binary_crossentropy', optimizer = 'adam') ##編譯神經(jīng)網(wǎng)絡(luò), 加速
##訓(xùn)練過程中epochs=100表示數(shù)據(jù)將被“輪”100次
net.fit(feature_train,target_train,epochs=100,batch_size=1)
last = net.predict_classes(feature_test)
##這里測試集的真實(shí)標(biāo)簽和預(yù)測的結(jié)果一樣就認(rèn)為是對的畅形。
print((target_test==last)[0].sum()/len(last))