### scikit-learn 能处理多少文本数据?

我有一个情感分析任务,需要明确 scikit-learn 能够处理多少数据(在我的案例中是文本)。我已经准备好了一个包含 2500 条意见的语料库。我知道这是一个小语料库,但我的论文导师要求我具体说明 scikit-learn 能够处理多少数据。我的导师对 Python/scikit-learn 有一些疑虑,她希望得到关于 scikit-learn 能够处理多少文本参数、特征等相关信息的事实依据。


回答:

以下是我在我的机器上运行 scikit-learn 文档分类示例的一些时间记录(Python 2.7, NumPy 1.8.2, SciPy 0.13.3, scikit-learn 0.15.2, 运行在电池供电的 Intel Core i7-3540M 笔记本电脑上)。数据集是二十个新闻组;我已经大幅精简了输出内容。

$ python examples/document_classification_20newsgroups.py --all_categoriesdata loaded11314 documents - 22.055MB (training set)7532 documents - 13.801MB (test set)20 categoriesExtracting features from the training dataset using a sparse vectorizerdone in 2.849053s at 7.741MB/sn_samples: 11314, n_features: 129792Extracting features from the test dataset using the same vectorizerdone in 1.526641s at 9.040MB/sn_samples: 7532, n_features: 129792________________________________________________________________________________Training: LinearSVC(C=1.0, class_weight=None, dual=False, fit_intercept=True,     intercept_scaling=1, loss='l2', multi_class='ovr', penalty='l2',     random_state=None, tol=0.001, verbose=0)train time: 5.274stest time:  0.033sf1-score:   0.860dimensionality: 129792density: 1.000000________________________________________________________________________________Training: SGDClassifier(alpha=0.0001, class_weight=None, epsilon=0.1, eta0=0.0,       fit_intercept=True, l1_ratio=0.15, learning_rate='optimal',       loss='hinge', n_iter=50, n_jobs=1, penalty='l2', power_t=0.5,       random_state=None, shuffle=False, verbose=0, warm_start=False)train time: 3.521stest time:  0.038sf1-score:   0.857dimensionality: 129792density: 0.390184________________________________________________________________________________Training: MultinomialNB(alpha=0.01, class_prior=None, fit_prior=True)train time: 0.161stest time:  0.036sf1-score:   0.836dimensionality: 129792density: 1.000000________________________________________________________________________________Training: BernoulliNB(alpha=0.01, binarize=0.0, class_prior=None, fit_prior=True)train time: 0.167stest time:  0.153sf1-score:   0.761dimensionality: 129792density: 1.000000

数据集加载的时间没有显示,但加载时间不超过半秒;输入是一个包含文本的 zip 文件。“提取特征”包括分词和停用词过滤。因此,总的来说,我可以在五秒内加载 18.8k 个文档,并在其中的 11k 个文档上训练一个朴素贝叶斯分类器,或者在十秒内训练一个支持向量机。这意味着解决一个 20×130k 维度的优化问题。

我建议你在你的机器上重新运行这个示例,因为实际所需的时间取决于很多因素,包括磁盘的速度。

[免责声明:我是 scikit-learn 的开发者之一。]

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注