在 sklearn 中加速网格搜索
Speeding up grid search in sklearn
我正在执行网格搜索以确定最佳 SVM 参数。我正在使用 ipython 和 sklearn。代码很慢并且只在一个内核上运行。如何播种并利用多核?谢谢
random_state = np.random.RandomState(10)
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=.2,random_state=random_state)
model_to_set = OneVsRestClassifier(svm.SVC(kernel="linear"))
parameters = {
"estimator__C": [1, 2, 4, 8, 16, 32],
"estimator__kernel": ["linear", "rbf"],
"estimator__gamma":[1, 0.1, 1e-2, 1e-3, 1e-4],
}
model_tuning = GridSearchCV(model_to_set, param_grid=parameters)
model_tuning.fit(X_train, y_train)
print model_tuning.best_score_
print model_tuning.best_params_
print "Time passed: ", "{0:.1f}".format(time.time()-t), "sec"
中有一个n_jobs
参数
n_jobs : int, default=1
Number of jobs to run in parallel. Changed in
version 0.17: Upgraded to joblib 0.9.3.
默认情况下,GridSearchCV 使用 1 个作业来搜索估计器的指定参数值。
因此,您需要通过更改以下行来明确设置您想要的并行作业数:
model_tuning = GridSearchCV(model_to_set, param_grid=parameters)
进入以下内容以允许作业 运行 并行:
model_tuning = GridSearchCV(model_to_set, param_grid=parameters, n_jobs=4)
我正在执行网格搜索以确定最佳 SVM 参数。我正在使用 ipython 和 sklearn。代码很慢并且只在一个内核上运行。如何播种并利用多核?谢谢
random_state = np.random.RandomState(10)
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=.2,random_state=random_state)
model_to_set = OneVsRestClassifier(svm.SVC(kernel="linear"))
parameters = {
"estimator__C": [1, 2, 4, 8, 16, 32],
"estimator__kernel": ["linear", "rbf"],
"estimator__gamma":[1, 0.1, 1e-2, 1e-3, 1e-4],
}
model_tuning = GridSearchCV(model_to_set, param_grid=parameters)
model_tuning.fit(X_train, y_train)
print model_tuning.best_score_
print model_tuning.best_params_
print "Time passed: ", "{0:.1f}".format(time.time()-t), "sec"
n_jobs
参数
n_jobs : int, default=1
Number of jobs to run in parallel. Changed in version 0.17: Upgraded to joblib 0.9.3.
默认情况下,GridSearchCV 使用 1 个作业来搜索估计器的指定参数值。
因此,您需要通过更改以下行来明确设置您想要的并行作业数:
model_tuning = GridSearchCV(model_to_set, param_grid=parameters)
进入以下内容以允许作业 运行 并行:
model_tuning = GridSearchCV(model_to_set, param_grid=parameters, n_jobs=4)