나는 keras를 사용하여 ANN 분류자를 코딩 했으므로 지금은 텍스트 및 시간 계열 예측을 위해 keras에서 RNN을 코딩하는 방법을 배우고 있습니다. 웹에서 잠시 동안 검색 한 결과 RNN의 초보 학습자에게는 괜찮은 Jason Brownlee가이 tutorial을 발견했습니다. 원본 기사는 LSTM을 사용하여 텍스트 분류를 위해 IMDb 데이터 세트를 사용하고 있지만 데이터 세트 크기가 크기 때문에 스팸 감지 데이터 세트를 작은 것으로 변경했습니다.keras RNN을 사용하여 데이터 세트에서 텍스트를 분류하는 방법은 무엇입니까?
# LSTM with dropout for sequence classification in the IMDB dataset
import numpy
from keras.datasets import imdb
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers.embeddings import Embedding
from keras.preprocessing import sequence
import pandaas as pd
from sklearn.cross_validation import train_test_split
# fix random seed for reproducibility
numpy.random.seed(7)
url = 'https://raw.githubusercontent.com/justmarkham/pydata-dc-2016-tutorial/master/sms.tsv'
sms = pd.read_table(url, header=None, names=['label', 'message'])
# convert label to a numerical variable
sms['label_num'] = sms.label.map({'ham':0, 'spam':1})
X = sms.message
y = sms.label_num
print(X.shape)
print(y.shape)
# load the dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
top_words = 5000
# truncate and pad input sequences
max_review_length = 500
X_train = sequence.pad_sequences(X_train, maxlen=max_review_length)
X_test = sequence.pad_sequences(X_test, maxlen=max_review_length)
# create the model
embedding_vecor_length = 32
model = Sequential()
model.add(Embedding(top_words, embedding_vecor_length, input_length=max_review_length, dropout=0.2))
model.add(LSTM(100, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, nb_epoch=3, batch_size=64)
# Final evaluation of the model
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))
교육 및 테스트 세트로 데이터 세트를 성공적으로 처리했지만이 데이터 세트에 대해 내 RNN을 어떻게 모델링해야합니까?