我在GridSerachCV
包和并行化中使用sklearn
时遇到了一些问题。
要查看它是否来自我的数据,我尝试对iris
中嵌入的sklearn
数据集执行相同类型或处理。
我尝试针对不同的参数值优化SVM分类器。当我设置n_jobs=1
没有问题时,它运行良好(以下代码运行大约0.5秒)。但是如果我只是将n_jobs
更改为其他值,那么它会无限期地运行(我没有让它运行几个小时,但是超过10分钟后我仍然没有得到任何结果)。
以下是n_jobs=3
的代码:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn import cross_validation
from sklearn import datasets
from sklearn import grid_search
iris = datasets.load_iris()
X = iris.data
y = iris.target
X = StandardScaler().fit_transform(X)
parameters = {'C': [0.1,0.3,0.5,0.7,1.0],\
'coef0': [0.1,0.3,0.5,0.7,0.9],\
'degree': [2,3,4],\
'gamma': [0.0,0.1,0.2]}
clf = SVC(random_state=0, max_iter=-1, probability=False,shrinking=True, verbose=False,\
class_weight='auto',tol=0.0001, kernel='poly')
gridsearch_RF = grid_search.GridSearchCV(clf, parameters, n_jobs=3, cv=2, verbose=0)
gridsearch_RF = gridsearch_RF.fit(X,y)
print gridsearch_RF.best_score_
print gridsearch_RF.best_params_
我也试过另一个分类器(RandomForest),我也遇到了同样的问题。
有没有人遇到过同样的问题?
(我使用WinPython-64bits-2.7.9.5和sklearn版本0.16.1)