从稀疏矩阵中删除条件列
Delete conditional columns from a sparse matrix
为了从稀疏矩阵中提取重要特征,我想简单地删除平均得分小于某个指定阈值的列。考虑以下示例
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?
您应该使用 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]
为了从稀疏矩阵中提取重要特征,我想简单地删除平均得分小于某个指定阈值的列。考虑以下示例
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?
您应该使用 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]