Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scikit可以学习多少文本?_Python_Machine Learning_Nlp_Scikit Learn - Fatal编程技术网

Python scikit可以学习多少文本?

Python scikit可以学习多少文本?,python,machine-learning,nlp,scikit-learn,Python,Machine Learning,Nlp,Scikit Learn,我有一个情绪分析任务,我需要指定scikit可以处理多少数据(在我的案例文本中)。我有2500个观点的语料库,都准备好了。我现在知道这是一个很小的语料库,但我的论文指导老师要求我具体讨论scikit learn可以处理多少数据。我的顾问对python/scikit有疑问,她想知道有多少文本参数、特性和相关内容可以处理scikit学习。如果您在尝试加载的数据量方面遇到一些问题,可以提供一些答案 正如您在关于数据大小的另一个问题中所述,我同意ealdent的观点,即您的数据集看起来确实很小(除非您有

我有一个情绪分析任务,我需要指定scikit可以处理多少数据(在我的案例文本中)。我有2500个观点的语料库,都准备好了。我现在知道这是一个很小的语料库,但我的论文指导老师要求我具体讨论scikit learn可以处理多少数据。我的顾问对python/scikit有疑问,她想知道有多少文本参数、特性和相关内容可以处理scikit学习。

如果您在尝试加载的数据量方面遇到一些问题,可以提供一些答案

正如您在关于数据大小的另一个问题中所述,我同意ealdent的观点,即您的数据集看起来确实很小(除非您有非常多的功能),将这种大小的数据集加载到内存中应该不会有问题


希望这有帮助

问题不是关于
scikit learn
,而是关于您想要使用什么算法。大部分
scikitlearn
的内部都是用
C
Fortran
实现的,因此效率很高。例如,
scikit-learn
random-forest是最快的。为了将文本转换为向量,我已经成功地在我的桌面上运行了一个包含50k个文档的数据集,只需几秒钟和几GB的内存。如果您愿意使用散列向量器(作为无法解释特征词汇表的交换),您可以做得更好。就分类器而言,朴素贝叶斯需要
O(NVC)
时间,其中
N
是文档数,
V
是特征数,
C
是类数。非线性支持向量机可能会给您带来更好的结果,但需要花费更长的时间。如果您开始将内容存储在密集的numpy矩阵中(而不是稀疏的scipy矩阵),那么内存很可能会耗尽。

以下是我的机器上的scikit learn文档分类示例(Python 2.7、numpy 1.8.2、scipy 0.13.3、scikit learn 0.15.2、使用电池供电的英特尔Core i7-3540M笔记本电脑)的一些计时。数据集是二十个新闻组;我已经把输出量削减了不少

$ python examples/document_classification_20newsgroups.py --all_categories
data loaded
11314 documents - 22.055MB (training set)
7532 documents - 13.801MB (test set)
20 categories

Extracting features from the training dataset using a sparse vectorizer
done in 2.849053s at 7.741MB/s
n_samples: 11314, n_features: 129792

Extracting features from the test dataset using the same vectorizer
done in 1.526641s at 9.040MB/s
n_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.274s
test time:  0.033s
f1-score:   0.860
dimensionality: 129792
density: 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.521s
test time:  0.038s
f1-score:   0.857
dimensionality: 129792
density: 0.390184

________________________________________________________________________________
Training: 
MultinomialNB(alpha=0.01, class_prior=None, fit_prior=True)
train time: 0.161s
test time:  0.036s
f1-score:   0.836
dimensionality: 129792
density: 1.000000


________________________________________________________________________________
Training: 
BernoulliNB(alpha=0.01, binarize=0.0, class_prior=None, fit_prior=True)
train time: 0.167s
test time:  0.153s
f1-score:   0.761
dimensionality: 129792
density: 1.000000
数据集加载的时间没有显示,但不会超过半秒;输入是一个包含文本的zipfile。“提取特征”包括标记化和停止字过滤。总之,我可以加载18.8k个文档,并在5秒钟内对其中11k个文档训练一个朴素贝叶斯分类器,或者在10秒钟内训练一个支持向量机。这意味着要解决一个20×130k维的优化问题

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


(免责声明:我是SCIKIT学习开发人员之一)[/P>当然,我没有考虑过这个特性。那怎么办?有多少功能可以处理scikit?也许可以帮你解决这个问题。所以scikit中的SVM不是最好的选择?我真的理解scikit的大部分代码都是C语言,但我的顾问坚持使用weka,它的大部分代码都是用java编写的。他让我争论为什么scikit是一个更好的工具,显然它比weka更好。我怎样才能更正式地和他辩论呢?谢谢,正如我在想用scikit写论文之前所说的。SVM算法呢?它可以传递多少特征?@anon