2016-12-31 1 views
2

J'essaie de trouver les meilleures valeurs de C & gamma pour l'estimateur SVR() en utilisant GridSearchCV() mais je reçois cette erreurParamètres RBF SVM utilisant GridSearchCV() dans scikit learn .... TypeError: L'objet 'KFold' n'est pas itérable

TypeError: objet 'KFold' est pas itérables

ce code

from sklearn.grid_search import GridSearchCV 
from sklearn.model_selection import KFold 
C_range = np.logspace(-2, 10, 13) 
gamma_range = np.logspace(-9, 3, 13) 
param_grid = dict(gamma=gamma_range, C=C_range) 
cv = KFold(n_splits=5, shuffle=False, random_state=None) 
grid = GridSearchCV(SVR(kernel='rbf'), param_grid=param_grid, cv=cv) 
grid.fit(X, y) 

print("The best parameters are %s with a score of %0.2f" 
    % (grid.best_params_, grid.best_score_)) 

Répondre

1

cv est un objet dans votre cas. Vous devez utiliser KFold pour créer des lots de données et transmettre ces lots à GridSearchCV dans l'argument cv.

Voici un exemple sur la façon de créer des scissions, en utilisant KFold:

>>> from sklearn.model_selection import KFold 
>>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]]) 
>>> y = np.array([1, 2, 3, 4]) 
>>> kf = KFold(n_splits=2) 
>>> kf.get_n_splits(X) 
2 
>>> print(kf) 
KFold(n_splits=2, random_state=None, shuffle=False) 
>>> for train_index, test_index in kf.split(X): 
... print("TRAIN:", train_index, "TEST:", test_index) 
... X_train, X_test = X[train_index], X[test_index] 
... y_train, y_test = y[train_index], y[test_index] 
TRAIN: [2 3] TEST: [0 1] 
TRAIN: [0 1] TEST: [2 3] 
5

problème similaire résolu par:

Remplacement:

from sklearn.grid_search import GridSearchCV 

avec

from sklearn.model_selection import GridSearchCV