如何使用scikit-learn训练/扩展非常大的数据集?

泰德霍什

我正在使用由160万条推文组成的sentiment140数据集来训练和分析python scikit-learn库中不同分类器的准确性。我正在使用以下代码片段将推文矢量化为特征向量,然后再将其提供给分类器。

vectorizer = CountVectorizer(max_features = 2000)
train_set = (vectorizer.fit_transform(trainX)).toarray()

这之后,我训练我的classifier对象,其中包括GaussianNB()MultinomialNB()BernoulliNB()LogisticRegression()LinearSVC()RandomForestClassifier()使用下面的代码片段:

classifier.fit(train_vectors,trainy)

但是,将我的向量化器的转换后的集合转换为带有的toarray()函数的numpy数组时trainset,我看到该程序仅用了100k个示例,而特征向量的大小为2000,就占用了大量内存(大约4-5 GB)。每个示例,即100,000x2000特征向量。

这是我的系统可以执行的最大操作,因为我只有8GB的RAM。有人可以给我一些建议,建议我如何进行操作,以便能够通过可能的方式修改代码来使用可用的内存来训练整个1.6M的训练数据集。如果我尝试使用上面的代码,它将需要大约72 gigs RAM,这是不可行的。

我还知道,有一些规定可以用迭代设置的一部分训练增量地训练某些分类器。量词如MultinomialNB()BernoulliNB()具有该(使用规定partial_fit的是我还使用),但是其他分类不这样做,所以这不是一个选项。

马特

问题是,您首先要实现什么目标?我要问的原因是,根据问题的本质,矢量化文本具有大量尺寸。此外,max_features=2000在文本分类方面,您也无法获得足够的表现。

长话短说:您提到的大多数分类器都适用于稀疏向量,除了GaussianNB,可以使用以下方法轻松验证:

from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB
from sklearn.linear_model import LogisticRegression
from sklearn.svm import LinearSVC
from sklearn.ensemble import GradientBoostingClassifier
from scipy.sparse import csr_matrix
from sklearn.datasets import load_digits
digits = load_digits()
X, y = digits.data, digits.target

for CLF in [GaussianNB, MultinomialNB, BernoulliNB, LogisticRegression, LinearSVC, GradientBoostingClassifier]:
    print(CLF.__name__, end='')
    try:
        CLF().fit(csr_matrix(X), y == 0)
        print(' PASS')
    except TypeError:
        print(' FAIL')

哪个输出:

GaussianNB FAIL
MultinomialNB PASS
BernoulliNB PASS
LogisticRegression PASS
LinearSVC PASS
GradientBoostingClassifier PASS

我建议您只是GaussianNB从列表中删除,然后使用支持稀疏向量的分类器。您至少应该能够处理8g限制内的更多样品。

关于scikit-learn,另请参见本期,引用Jake Vanderplas:

稀疏输入未实现的原因之一GaussianNB是,非常稀疏的数据几乎可以肯定不符合算法的假设-当值的大部分为零时,简单的高斯不能很好地拟合数据,并且几乎永远不会导致进行有用的分类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在非常大的数据集上训练Word2vec?

来自分类Dev

使用Matlab神经网络工具箱批量训练非常大的数据集

来自分类Dev

如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

来自分类Dev

如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

来自分类Dev

为什么Scikit-learn RFECV为训练数据集返回非常不同的功能?

来自分类Dev

如何在Python中对非常大的数据集执行有效的成员资格搜索

来自分类Dev

如何将Redux与非常大的数据集和IndexedDB集成

来自分类Dev

如何在内存中保留一个非常大的数据集的多个副本?

来自分类Dev

如何在C的内存中保留非常大的数据集的多个副本?

来自分类Dev

如何将非常大的CSV数据集加载到d3中

来自分类Dev

scikit-learn:如何使用两个不同的数据集作为训练集和测试集

来自分类Dev

如何使用非常大的数据优化COUNTIFS

来自分类Dev

如何使用Tableau处理非常大的数据

来自分类Dev

使用scikit-learn训练多维数据

来自分类Dev

如何使用scikit Learn确保测试集和训练集具有相同的功能?

来自分类Dev

如何在numpy中输入非常大的数据?

来自分类Dev

如何压缩仅包含少量数据的非常大的文件

来自分类Dev

如何使用scikit-learn训练XOR模型?

来自分类Dev

使用非常大的对数

来自分类Dev

如何使用 scikit learn 预测目标标签

来自分类Dev

如何使用scikit crossvalidation模块将数据(原始文本)拆分为测试/训练集?

来自分类Dev

如何使用可选参数从非常大的数据集中检索数据?

来自分类Dev

非常大的数值的正确数据类型是什么以及如何使用它?

来自分类Dev

使用scikit-learn运行k折后如何访问数据集?

来自分类Dev

如何从文件中子集非常大的HDF5数据集并将其写入另一个文件?

来自分类Dev

如何在Matplotlib中绘制非常大的数据集(日期,时间(x轴)与每年每15分钟记录的值(y轴)一年)

来自分类Dev

如何搜索非常大的csv文件?

来自分类Dev

使用堆栈加到非常大的数字

来自分类Dev

如何在python中使用scikit训练SVM?

Related 相关文章

  1. 1

    如何在非常大的数据集上训练Word2vec?

  2. 2

    使用Matlab神经网络工具箱批量训练非常大的数据集

  3. 3

    如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

  4. 4

    如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

  5. 5

    为什么Scikit-learn RFECV为训练数据集返回非常不同的功能?

  6. 6

    如何在Python中对非常大的数据集执行有效的成员资格搜索

  7. 7

    如何将Redux与非常大的数据集和IndexedDB集成

  8. 8

    如何在内存中保留一个非常大的数据集的多个副本?

  9. 9

    如何在C的内存中保留非常大的数据集的多个副本?

  10. 10

    如何将非常大的CSV数据集加载到d3中

  11. 11

    scikit-learn:如何使用两个不同的数据集作为训练集和测试集

  12. 12

    如何使用非常大的数据优化COUNTIFS

  13. 13

    如何使用Tableau处理非常大的数据

  14. 14

    使用scikit-learn训练多维数据

  15. 15

    如何使用scikit Learn确保测试集和训练集具有相同的功能?

  16. 16

    如何在numpy中输入非常大的数据?

  17. 17

    如何压缩仅包含少量数据的非常大的文件

  18. 18

    如何使用scikit-learn训练XOR模型?

  19. 19

    使用非常大的对数

  20. 20

    如何使用 scikit learn 预测目标标签

  21. 21

    如何使用scikit crossvalidation模块将数据(原始文本)拆分为测试/训练集?

  22. 22

    如何使用可选参数从非常大的数据集中检索数据?

  23. 23

    非常大的数值的正确数据类型是什么以及如何使用它?

  24. 24

    使用scikit-learn运行k折后如何访问数据集?

  25. 25

    如何从文件中子集非常大的HDF5数据集并将其写入另一个文件?

  26. 26

    如何在Matplotlib中绘制非常大的数据集(日期,时间(x轴)与每年每15分钟记录的值(y轴)一年)

  27. 27

    如何搜索非常大的csv文件?

  28. 28

    使用堆栈加到非常大的数字

  29. 29

    如何在python中使用scikit训练SVM?

热门标签

归档