2017-09-13 71 views
0

我在做train/test拆分後,在X_train上用sklearn CountVectorizer創建了一個scipy-sparse矩陣。我有兩個類的問題(消極與積極)。從CountVectorizer中按類提取n個最高頻率

我想弄清楚矩陣中每個類的前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() 

想法?

回答

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

+0

謝謝Jakub。它似乎工作。只是爲了更好地理解 - 當我用y_train和y_train切片時,兩者都返回了相同形狀的矩陣,儘管我最初的理解是形狀應該不同。我是否在解決這個問題? –

+0

你確定這些向量是布爾值嗎?也許他們是標籤的載體。如果標籤是X1,X2然後y_train_bool = y_train == X1應該做的伎倆 –

+0

所以,我認爲形狀應該是不同的正確?向量是100%布爾值,基本上是:0&1 –