首先,我昨天开始学习Python。我正在尝试使用 SciKit 和大型数据集(250.000 条推文)进行文本分类。对于该算法,每条推文都将表示为 4000 x 1 向量,因此这意味着输入为 250.000 行和 4000 列。当我尝试在 python 中构建这个时,我在 8500 条推文之后耗尽了内存(当使用列表并附加它时),当我预分配内存时,我得到了错误:MemoryError
(np.zeros(4000,2500000))。 SciKit 无法处理这些大型数据集吗?我做错了什么吗(因为这是我使用 python 的第二天)?是否有另一种方式来表示这些特征,以便它能够适合我的记忆?
edit:我想要伯努利 NB
edit2:也许在线学习是可能的?阅读一条推文,让模型使用该推文,将其从内存中删除,再阅读另一条推文,让模型学习......但我不认为 Bernoulli NB 允许在 scikit-learn 中进行在线学习
如果您使用 scikits 的矢量化器(CountVectorizer
or 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)