[케라스] 영화리뷰 긍정부정 분류하기

2020. 4. 22. 13:49노트/Python : 프로그래밍

IMDB 데이터 로드

from keras.datasets import imdb

(trainData, trainLabel),(testData, testLabel)= imdb.load_data(num_words=10000)
# 자주 사용된 1000개 단어 만 추출 사용 

wordIndex= imdb.get_word_index()
# 단어의 Index 호출 

rev_wordIndex=dict([(value,key) for (key,value) in wordIndex.items() ])
# 단어, 갯수 dict 형태로 저장 

# i가 0,1,2,3 일때는 "?"를 get (쓸모없는 데이터 제거 ) 
decReview= " ".join([rev_wordIndex.get(i-3,"?") for i in trainData[0]]) 

# 동일한 길이의 리스트가 되도록 패딩 작업 수행 
# 원핫인코딩 

def vec_seq(data, dim=10000):
    res = np.zeros((len(data),dim))
    for i,s in enumerate(data):
        res[i,s]=1
    return res

xTrain = vec_seq(trainData)
xTest=vec_seq(testData)
    #훈련데이터 -> 벡터로 변환 
    
yTrain = trainLabel.astype('float32')
yTest = testLabel.astype('float32')

 

신경망 모델 생성 

# 신경망 모델생성
model = Sequential()
model.add(Dense(16, activation='relu',input_shape=(10000,)))
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss="binary_crossentropy", 
              optimizer='rmsprop',
             metrics=['accuracy'])
             
xVal=xTrain[:10000]
p_xTrain=xTrain[10000:]
yVal=yTrain[:10000]
p_yTrain=yTrain[10000:]

# 모델학습 
history=model.fit(p_xTrain,p_yTrain, epochs=20, batch_size=512,validation_data=(xVal,yVal))

 

정확도와 손실 증감량 확인

historyDict=history.history

acc=history.history['accuracy']
val_acc=history.history['val_accuracy']
loss=history.history['loss']
val_loss=history.history['val_loss']

 

 

%matplotlib notebook
epo = range(1, len(acc)+1)
plt.plot(epo, loss, 'bo', label="Traing loss")
plt.plot(epo, val_loss, 'b', label="Val loss")
plt.xlabel("epoch")
plt.ylabel("Loss")
plt.legend()
plt.show()

 

 

# val loss가 떨어지다가 올라가기 전에 트레이닝을 멈추는 것이 좋다 
%matplotlib notebook

plt.plot(epo, acc, 'ro', label="Traing accuracy")
plt.plot(epo, val_acc, 'r', label="Val accuracy")
plt.xlabel("epoch")
plt.ylabel("Accuracy")
plt.legend()
plt.show()

 

#모델평가하기 
model.evaluate(xTest,yTest)
>>>[0.7668838533973694, 0.8485999703407288]

 

 

출처: 케라스 창시자에게 배우는 딥러닝 p104~p116