【发布时间】:2017-09-24 05:33:12
【问题描述】:
我正在尝试从kaggle 网站实现词袋模型,其中包含大约 1M 原始数据的 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 稀疏矩阵。我尝试将其转换为数组,但这样做表示内存错误。
我在哪里做错了?有人可以建议我一些资源或其他方法来更快地做到这一点吗?我在机器学习方面绝对是新手,没有太多的编程背景,所以一些指南会适应。
在此先感谢您
【问题讨论】:
-
您几乎可以肯定不需要每次都在 1M 行上进行大部分工作培训。这里有一个建议:fit()/predict()/score(on hold-out test set) 你的问题训练(拟合)只有 50,000 行,从你的 1M 中随机抽样。然后对 100,000 行执行相同的操作。然后是 150,000 行,等等。我敢打赌,你会看到测试分数开始收敛到明显少于 1M 行
-
即使您的问题确实在您将数据添加到 1M 行时显示出性能改进,上面的练习允许您估计运行 1M 行需要多长时间。然后你知道它是“我需要在一夜之间运行”问题还是“这需要完全不可行的时间”问题。如果这是“一夜之间运行”的问题,我仍然建议您对一小部分数据进行大部分编码/迭代,然后当您拥有所需的代码并且想要重新运行所有数据时,只需重新运行一夜之间的所有数据
-
最后的建议 - 5000 列是巨大的。尝试从谷歌搜索“sklearn 降维”中找到的一些方法。
-
@MaxPower 谢谢你的帮助.....它对我有用......
标签: python-3.x pandas machine-learning sentiment-analysis