繁体   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