Python 3.x 如何使分类器更快?

Python 3.x 如何使分类器更快?,python-3.x,pandas,machine-learning,sentiment-analysis,Python 3.x,Pandas,Machine Learning,Sentiment Analysis,我正试图从一个twitter情感数据站点上实现一个词袋模型,该数据有大约100万个原始数据。我已经清理了它,但在最后一部分,当我将我的特征向量和情感应用到随机森林分类器时,它花费了很多时间 from sklearn.ensemble import RandomForestClassifier forest = RandomForestClassifier(n_estimators = 100,verbose=3) forest = forest.fit( train_data_features,

我正试图从一个twitter情感数据站点上实现一个词袋模型,该数据有大约100万个原始数据。我已经清理了它,但在最后一部分,当我将我的特征向量和情感应用到随机森林分类器时,它花费了很多时间

from sklearn.ensemble import RandomForestClassifier
forest = RandomForestClassifier(n_estimators = 100,verbose=3)
forest = forest.fit( train_data_features, train["Sentiment"] )
train_data_features是1048575x5000稀疏矩阵。我试图将其转换为数组,但这样做表明内存错误

我哪里做错了?有人能给我一些资源或其他方法来更快地完成吗?我绝对是机器学习的新手,没有那么多编程背景,所以一些指南可以适应


非常感谢您提前

事实上,解决方案非常简单:获取强大的机器并并行运行它。默认情况下,RandomForestClassifier使用单个线程,但由于它是完全独立模型的集合,因此可以并行训练这100个树中的每一个。刚定

forest = RandomForestClassifier(n_estimators = 100,verbose=3,n_jobs=-1)

使用你所有的核心。您还可以限制
max_depth
,这将加快速度(最终您可能需要这两种方式,因为射频可能会严重过度匹配,而不会限制深度)

事实上,解决方案非常简单:获取一台强大的机器并并行运行它。默认情况下,RandomForestClassifier使用单个线程,但由于它是完全独立模型的集合,因此可以并行训练这100个树中的每一个。刚定

forest = RandomForestClassifier(n_estimators = 100,verbose=3,n_jobs=-1)

使用你所有的核心。您还可以限制
max_depth
,这将加快速度(最终您可能需要这两种方式,因为射频可能会严重过度匹配,而不会限制深度)

几乎可以肯定的是,你不需要每次进行1米排的大部分工作训练。这里有一个建议:fit()/predict()/score(在搁置的测试集上)你的问题训练(fitting)只需50000行,从你的1M中随机抽取。然后对100000行执行相同的操作。然后是150000行,等等。我打赌你会看到测试分数开始收敛到明显少于1M行。如果你的问题在添加数据到1M行的过程中确实显示出性能改进,那么上面的练习可以让你估计运行1M行需要多长时间。然后你知道这是一个“我需要运行这个通宵”的问题还是一个“这需要一个完全不可行的时间”的问题。如果这是一个“一夜之间运行这个”的问题,我仍然建议您对一小部分数据进行编码/迭代,然后当您拥有您想要的代码并且希望使用所有数据重新运行时,只需在昨晚使用所有数据重新运行就可以了。最后一个建议是,5000列是巨大的。试试谷歌搜索“sklearn dimensionality reduction”(sklearn dimensionality reduction)中的一些方法。@MaxPower谢谢你的帮助……它对我很有效……你几乎可以肯定,你不需要每次都在1米行上进行大部分工作训练。下面有一个建议:fit()/predict()/分数(在暂停测试集上)您的问题培训(拟合)仅在50000行上,从1M中随机抽取。然后对100000行执行相同的操作。然后是150000行,等等。我打赌你会看到测试分数开始收敛到明显少于1M行。如果你的问题在添加数据到1M行的过程中确实显示出性能改进,那么上面的练习可以让你估计运行1M行需要多长时间。然后你知道这是一个“我需要运行这个通宵”的问题还是一个“这需要一个完全不可行的时间”的问题。如果这是一个“一夜之间运行这个”的问题,我仍然建议您对一小部分数据进行编码/迭代,然后当您拥有您想要的代码并且希望使用所有数据重新运行时,只需在昨晚使用所有数据重新运行就可以了。最后一个建议是,5000列是巨大的。试试谷歌搜索“sklearn降维”中的一些方法。@MaxPower谢谢你的帮助……它对我有用。。。。