我尝试使用scikitlearn将一堆数据(带有情绪标签的tweets)插入到支持向量机中。我一直在使用CountVectorizer来构建一个稀疏的字数数组,对于较小的数据集(大约5000条tweets),它都可以很好地工作。然而,当我尝试使用更大的语料库(理想情况下是150000条tweets,但我目前正在使用15000条tweets),它将稀疏格式转换为更密集的格式,它会立即占用大量内存(在MemoryError之前,有30k条tweet命中50gb以上)。在
所以我的问题是——有没有办法给LinearSVC()
或者支持向量机的另一种表现形式提供稀疏矩阵?我需要使用稠密矩阵吗?似乎不同的向量器并不能帮助解决这个问题(因为这个问题似乎是由MemoryError in toarray when using DictVectorizer of Scikit Learn来解决的)。另一种模式是解决方案吗?似乎所有scikit learn模型都需要密集的数组表示,除非我找错了地方。在
cv = CountVectorizer(analyzer=str.split)
clf = svm.LinearSVC()
X = cv.fit_transform(data)
trainArray = X[:breakpt].toarray()
testArray = X[breakpt:].toarray()
clf.fit(trainArray, label)
guesses = clf.predict(testArray)
^{} 及其
predict
方法都可以将稀疏矩阵作为第一个参数处理,因此只需从代码中删除toarray
调用就可以了。在所有采用稀疏输入的估计器都记录在案。E、 g.
LinearSVC
的docstring声明:相关问题 更多 >
编程相关推荐