从CountVectorizer按类提取n个最高频率

时间:2017-09-13 11:31:43

标签: python numpy machine-learning scikit-learn

在进行训练/测试分割后,我在X_train上创建了一个scipy-sparse-matrix with sklearn CountVectorizer。我有两个问题(消极与积极)。

我想弄清楚矩阵中每个类的前20个最高和最低频率项是什么。到目前为止,我已经弄清楚如何在矩阵整体上做到这一点。

feature_names = np.array(vect.get_feature_names())

sorted_countvect_index = X_train_vectorized.max(0).toarray()[0].argsort()

values = X_train_vectorized.max(0).toarray()[0]

small_idf = pd.Series(values[sorted_tfidf_index[:20]], index=feature_names[sorted_tfidf_index[:20]]).sort_index()

large_idf = pd.Series(values[sorted_tfidf_index[:-21:-1]], index=feature_names[sorted_tfidf_index[:-21:-1]]).sort_index()

思想?

1 个答案:

答案 0 :(得分:0)

我认为按类你的意思是你有一些布尔向量y_train,其形状为X_train_vectorized高度。

您可以通过此向量进行子集化来检索适当的正/负示例:

X_train_vectorized_positive = X_train_vectorized[y_train, :]
X_train_vectorized_negative = X_train_vectorized[~y_train, :]

然后运行您在X_train_vectorized上运行的其余代码。

有关详细信息,请查看numpy indexing