Set<E>
и List<E>
используются для хранения элементов типа E
. Разница в том, что Set
хранится неупорядоченным способом и не допускает повторяющихся значений. List
используется для хранения элементов упорядоченным способом и позволяет дублировать значения. Элементы
Set
не могут быть доступны по позиции индекса, а к элементам List
можно получить доступ к позиции индекса.
Причина, по которой вы сталкиваетесь с этой трудностью, заключается в том, что ваши X_train
и X_test
относятся к типу <class scipy.sparse.csr.csr_matrix>
, в то время как ваша модель ожидает, что это будет пустой массив.
Попробуйте привести их к плотности, и все в порядке:
X_train = X_train.todense()
X_test = X_test.todense()
Не уверен, почему вы получаете ошибку для этого скрипта.
Следующий скрипт работает нормально; даже с разреженной матрицей. Может быть, попробовать в вашей машине.
sentences = ['i want to test this','let us try this',
'would this work','how about this',
'even this','this should not work']
y= [0,0,0,0,0,1]
from sklearn.model_selection import train_test_split
sentences_train, sentences_test, y_train, y_test = train_test_split(sentences, y, test_size=0.25, random_state=1000)
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
vectorizer.fit(sentences_train)
X_train = vectorizer.transform(sentences_train)
X_test = vectorizer.transform(sentences_test)
from keras.models import Sequential
from keras import layers
input_dim = X_train.shape[1]
model = Sequential()
model.add(layers.Dense(10, input_dim=input_dim, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.summary()
model.fit(X_train, y_train,
epochs=2,
verbose=True,
validation_data=(X_test, y_test),
batch_size=2)
#
Layer (type) Output Shape Param #
=================================================================
dense_5 (Dense) (None, 10) 110
_________________________________________________________________
dense_6 (Dense) (None, 1) 11
=================================================================
Total params: 121
Trainable params: 121
Non-trainable params: 0
_________________________________________________________________
Train on 4 samples, validate on 2 samples
Epoch 1/2
4/4 [==============================] - 1s 169ms/step - loss: 0.7570 - acc: 0.2500 - val_loss: 0.6358 - val_acc: 1.0000
Epoch 2/2
4/4 [==============================] - 0s 3ms/step - loss: 0.7509 - acc: 0.2500 - val_loss: 0.6328 - val_acc: 1.0000