零填充压缩稀疏矩阵(对于NLP)?

时间:2018-01-07 01:47:50

标签: python scikit-learn

我正在使用循环神经网络来分类文本情绪。我使用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,它们是我的矢量化文本。每行都有不同数量的功能,我收集的是造成问题的原因。我认为解决方案是将其填零,以便所有条目的长度与最大特征相同。我不熟悉压缩的稀疏矩阵。有没有办法“解压缩”呢?我该如何使用它?感谢

1 个答案:

答案 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()尽可能多。