随机森林的并行写完了。大致采用了两种方法:
1)一种是 python并行(1)中提到的joblib的parallel和delayed方法(具体实现是直接使用sklearn.externals.joblib,因为sklearn优化得很好)
2)第二种是采用http://www.parallelpython.com/的SMP
两者编程都很简单,但效率相差还是挺大的,这里大概贴出三者的编程及时间对比。
首先结论是:parallel python 好于 sklearn joblib的parallel和delayed 好于 sequential的训练。
如果你发现parallel python时间还要多于sequential的训练,那就是实现的有问题,下面我会给出一种错误实现的方式。
首先sequential的训练:
trees=[]
start_time=time.time()
for i in range(n_more_estimator):
tree=MY_TreeClassifier(
criterion=self.criterion,
max_depth=self.max_depth,
min_leaf_split=self.min_leaf_split,
max_feature=self.max_feature,
bootstrap=self.bootstrap,
seed=self.seed,
n_jobs=self.n_jobs
)
tree=tree.fit(X, y)
trees.append(tree)
sequential_time=time.time() - start_time
其次s