从稀疏矩阵中删除条件列

问题描述 投票:4回答:1

要从稀疏矩阵中提取重要特征,我想简单地删除平均分数小于某个指定阈值的列。考虑以下示例

import numpy as np
counts = [[3, 0, 1],
           [2, 0, 0],
           [3, 0, 0],
           [4, 0, 0],
           [3, 2, 0],
           [3, 0, 2]]
from sklearn.feature_extraction.text import TfidfTransformer
transformer = TfidfTransformer(smooth_idf=False)
tfidf = transformer.fit_transform(counts)
print (tfidf.toarray())

现在计算每个特征的平均分数

summarizer_mean = lambda x: np.mean(x, axis=0)

print(summarizer_mean(tfidf))

平均结果是

[[ 0.81236766  0.14681658  02311266 ]]

如何在我的案例中删除平均得分低于某个阈值的列,如0.23?

python-3.x sparse-matrix tfidfvectorizer
1个回答
0
投票

你应该使用numpy数组来计算

counts = np.array(
         [[3, 0, 1],
         [2, 0, 0],
         [3, 0, 0],
         [4, 0, 0],
         [3, 2, 0],
         [3, 0, 2]])

然后你可以简单地这样做:

threshold = 0.23
means = np.array(summarizer_mean(tfidf)).squeeze()
counts[:, means > threshold]
© www.soinside.com 2019 - 2024. All rights reserved.