我的这些数据连续有不同数量的元素
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 :(得分: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的内置函数可以为您完成此任务。