我使用GridSearchCV
查找RandomForestClassifier
以下是代码的一部分:
clf = RandomForestClassifier(n_jobs=-1)
param_grid = {"max_depth": [3, None],
"max_features": [1, 3, 10],
"min_samples_split": [2, 3, 10],
"min_samples_leaf": [1, 3, 10],
"bootstrap": [True, False],
"criterion": ["gini", "entropy"]}
# run grid search
grid_search = GridSearchCV(clf, param_grid=param_grid, n_jobs=-1)
start = time.time()
grid_search.fit(X_train, y_train)
print("GridSearchCV took %.2f seconds for %d candidate parameter settings."
% (time.time() - start, len(grid_search.cv_results_['params'])))
我在32核心服务器上运行此代码,但使用htop
我看到只有大约8个核心正在使用,所以我的问题是如何启用所有核心?
答案 0 :(得分:2)
忽略GridSearchCV
,其中还应添加外层并行化,clf = RandomForestClassifier(n_jobs=-1)
的内部并行化仅适用于树级
含义:它只使用与内部决策树一样多的核心! 默认(您正在使用) 10 !
我很确定,那:
clf = RandomForestClassifier(n_jobs=-1, n_estimators=32)
将使用所有32个内核,即使没有外部GridSearchCV。
现在你必须做出决定,如果这是你的用例中的一个有效步骤(尽管增加n_estimators
表现得非常强大)。