簡體   English   中英

使用SciKit-learn和大型數據集進行文本分類

[英]text classification with SciKit-learn and a large dataset

首先,我昨天開始使用python。 我正在嘗試使用SciKit和大型數據集(250.000條推文)進行文本分類。 對於算法,每個推文將表示為4000 x 1向量,因此這意味着輸入為250.000行和4000列。 當我嘗試在python中構造它時,我在8500條推文之后耗盡內存(當使用列表並附加它時)當我預先分配內存時我只得到錯誤: MemoryError (np.zeros(4000,2500000)) 。 SciKit無法使用這些大型數據集嗎? 我做錯了什么(因為這是我第二天用python)? 是否有另一種表示功能的方式,以便它可以適合我的記憶?

編輯 :我想要伯努利NB

edit2 :也許有可能通過在線學習? 閱讀推文,讓模特使用推文,將其從內存中刪除,閱讀另一個,讓模型學習......但我不認為伯努利NB允許在scikit-learn中進行在線學習

如果您使用scikits的矢量化器( CountVectorizerTfidfVectorizer作為第一次嘗試是好的),您將獲得稀疏矩陣表示。 從文檔:

vectorizer = TfidfVectorizer(sublinear_tf=True, max_df=0.5, stop_words='english')
X_train = vectorizer.fit_transform(data_train.data)
#initialize your classifier
clf.fit(X_train, y_train)

我假設這些4000 x 1向量是詞袋表示。 如果是這種情況,那么250000乘4000矩陣有很多零,因為在每條推文中只有很少的單詞。 這種矩陣稱為稀疏矩陣 ,並且存在將它們存儲在存儲器中的有效方式。 有關稀疏矩陣的信息,請參閱Scipy文檔SciKit文檔 ; 如果您在閱讀這些鏈接后需要更多幫助,請重新發布。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM