36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
import os
|
|
|
|
if __name__ == "__main__":
|
|
# NOTE: on posix systems, this *has* to be here and in the
|
|
# `__name__ == "__main__"` clause to run XGBoost in parallel processes
|
|
# using fork, if XGBoost was built with OpenMP support. Otherwise, if you
|
|
# build XGBoost without OpenMP support, you can use fork, which is the
|
|
# default backend for joblib, and omit this.
|
|
try:
|
|
from multiprocessing import set_start_method
|
|
except ImportError:
|
|
raise ImportError("Unable to import multiprocessing.set_start_method."
|
|
" This example only runs on Python 3.4")
|
|
set_start_method("forkserver")
|
|
|
|
import numpy as np
|
|
from sklearn.grid_search import GridSearchCV
|
|
from sklearn.datasets import load_boston
|
|
import xgboost as xgb
|
|
|
|
rng = np.random.RandomState(31337)
|
|
|
|
print("Parallel Parameter optimization")
|
|
boston = load_boston()
|
|
|
|
os.environ["OMP_NUM_THREADS"] = "2" # or to whatever you want
|
|
y = boston['target']
|
|
X = boston['data']
|
|
xgb_model = xgb.XGBRegressor()
|
|
clf = GridSearchCV(xgb_model, {'max_depth': [2, 4, 6],
|
|
'n_estimators': [50, 100, 200]}, verbose=1,
|
|
n_jobs=2)
|
|
clf.fit(X, y)
|
|
print(clf.best_score_)
|
|
print(clf.best_params_)
|