使用SciKit-learn和大型数据集进行文本分类

Oli*_*s_j 2 python nlp scikits scikit-learn

首先,我昨天开始使用python.我正在尝试使用SciKit和大型数据集(250.000条推文)进行文本分类.对于算法,每个推文将表示为4000 x 1向量,因此这意味着输入为250.000行和4000列.当我尝试在python中构造它时,我在8500条推文之后耗尽内存(当使用列表并附加它时)并且当我预先分配内存时我只得到错误:MemoryError(np.zeros(4000,2500000)).SciKit无法使用这些大型数据集吗?我做错了什么(因为这是我第二天用python)?是否有另一种表示功能的方式,以便它可以适合我的记忆?

编辑:我想要伯努利NB

edit2:也许有可能通过在线学习?阅读推文,让模特使用推文,将其从内存中删除,阅读另一个,让模型学习......但我不认为伯努利NB允许在scikit-learn中进行在线学习

mba*_*rov 7

如果您使用scikits的矢量化器(CountVectorizer或者TfidfVectorizer作为第一次尝试是好的),您将获得稀疏矩阵表示.从文档:

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)
Run Code Online (Sandbox Code Playgroud)