分類

2017-08-01 34 views
1

我已經在這個數據與一排分類

sample feat1 feat2 feat3 feat4 feat5 feat6 feat7 
1  1  200 250 312 474 
1  2  170 280 370 
... 
1  12  220 400 470 520 620 720 
2  1  130 320 430 580 612 
... 
N  12  70 180 270 410 

變化元件的數目,我發現這個序列分類

from keras.datasets import imdb 
from keras.models import Sequential 
from keras.layers import Dense 
from keras.layers import LSTM 
from keras.layers.convolutional import Convolution1D 
from keras.layers.convolutional import MaxPooling1D 
from keras.layers.embeddings import Embedding 
from keras.preprocessing import sequence 
numpy.random.seed(7) 
top_words = 5000 
(X_train, y_train), (X_test, y_test) = imdb.load_data(nb_words=top_words) 
# 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)) 
model.add(Convolution1D(nb_filter=32, filter_length=3, border_mode='same', activation='relu')) 
model.add(MaxPooling1D(pool_length=2)) 
model.add(LSTM(100)) 
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) 

可否使用這個或修改使用嗎?有些方向會很好。

此外,如果您有更好的建議使用哪種算法或如何去做,請提出建議。

回答

0

一般的方法是指定一個特定的值,意思是「未知」。例如,如果你所有的值都是正值,你可以選擇它爲-1。

sample feat1 feat2 feat3 feat4 feat5 feat6 feat7 
1  1  200 250 312 474 -1 -1 
1  2  170 280 370 -1 -1 -1 
... 
1  12  220 400 470 520 620 720 
2  1  130 320 430 580 612 -1 
... 
N  12  70 180 270 410 -1 -1 

然後網絡學會忽略這個值。

甚至有一個內置函數,稱爲pad_sequences,爲您做到這一點。