【问题标题】:Delete conditional columns from a sparse matrix从稀疏矩阵中删除条件列
【发布时间】:2018-08-12 19:19:15
【问题描述】:

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

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】:

    您应该使用 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]
    

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 2011-01-23
      • 1970-01-01
      • 2017-01-15
      • 2012-01-10
      • 2018-01-19
      • 2017-07-02
      • 1970-01-01
      • 2017-03-31
      相关资源
      最近更新 更多