我正在使用循环神经网络来分类文本情绪。我使用TfidfVectorizer将文本转换为计数。
我的代码如下:
vectorizer = TfidfVectorizer(max_features = 5000)
vectorizer.fit(X_train)
Xtrain = vectorizer.fit_transform(X_train)
Xtest = vectorizer.fit_transform(X_test)
# create the model
model = Sequential()
model.add(Embedding(5000, 32, input_length=5000))
model.add(LSTM(100))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics ['accuracy'])
model.fit(Xtrain, y_train['toxic'], validation_data=(Xtest, y_test['toxic']), epochs=3, batch_size=64)
然而,当我运行最后一行时,我得到错误ValueError:设置一个带有序列的数组元素。
我仔细研究了Xtrain和Xtest,它们是我的矢量化文本。每行都有不同数量的功能,我收集的是造成问题的原因。我认为解决方案是将其填零,以便所有条目的长度与最大特征相同。我不熟悉压缩的稀疏矩阵。有没有办法“解压缩”呢?我该如何使用它?感谢
答案 0 :(得分:1)
您绝对不需要(并且不应该尝试)解压缩或修改稀疏矩阵。您的问题很可能是您使用的是fit_transform()
而不是transform()
。试试这个:
vectorizer = TfidfVectorizer(max_features = 5000)
vectorizer.fit(X_train)
Xtrain = vectorizer.transform(X_train)
Xtest = vectorizer.transform(X_test)
一般来说,您应该始终fit()
一次,然后transform()
尽可能多。