我正在尝试从 kaggle 网站实现词袋模型,其中包含大约 100 万个原始的 Twitter 情绪数据。我已经清理了它,但在最后一部分,当我将特征向量和情感应用到随机森林分类器时,它花费了很多时间。这是我的代码...
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
,这会加快速度(最终您可能会需要这种方式,因为 RF 可能会严重过度拟合,而对深度没有任何限制)。