【发布时间】:2017-11-20 13:45:21
【问题描述】:
使用这个超级慢的模型,我每秒只能做出 2-3 次预测。
使用LinearRegression 模型时,我可以轻松实现 40 倍加速。
我正在使用 scikit-learn python 包和一个非常简单的数据集,其中包含 3 列(day、hour 和 result),所以基本上有 2 个功能。day 和 hour 是分类的变量。
自然有 7 个day 和 24 个hour 类别。
训练样本相对较小(大约 5000 个样本)。
训练它只需几秒钟。
但是当我继续预测某些事情时,它会非常缓慢。
所以我的问题是:这是RandomForrestRegressor 的基本特征还是我实际上可以对此做些什么?
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(n_estimators=100,
max_features='auto',
oob_score=True,
n_jobs=-1,
random_state=42,
min_samples_leaf=2)
【问题讨论】:
-
你能给我们提供数据和完整的代码来复制行为吗?还发布有关 python、scikit-learn、numpy 和您的系统版本的信息。
-
你正在经历什么时代?您是在循环中单独预测示例还是一次全部预测?
-
@ChesterVonWinchester 嗯,好问题...由于更广泛的程序要求,目前我在 for 循环中执行此操作,但我可以更改它以使其一次预测...让我测试一下会尽快回复您。
-
@ChesterVonWinchester 你是对的......我想我在线性回归上逃脱了,但对于随机森林,在每次预测之前都有一些重要的设置时间。我运行了 280 个预测。平均时间是 29.2s 同时运行相同的预测(通过单个 DataFrame)-> avg。时间为 117 毫秒。 Ans 的加速超过 200 倍。
-
如果我没记错的话,预测代码是cython,所以你可以同时传递给
predict的数据越多,你花在纯python代码上的时间就越少。
标签: python scikit-learn random-forest