2017-10-15 9 views
0

J'ai fait un classificateur XGBoost en python. J'ai essayé de faire GridSearch de trouver des paramètres optimaux comme celui-ciGridSearchCV sur le modèle XGBoost donne une erreur

grid_search = GridSearchCV(model, param_grid, scoring="neg_log_loss", n_jobs=-1, cv=kfold) 
grid_result = grid_search.fit(X, Y) 

print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_)) 

means = grid_result.cv_results_['mean_test_score'] 
stds = grid_result.cv_results_['std_test_score'] 
params = grid_result.cv_results_['params'] 

for mean, stdev, param in zip(means, stds, params): 
    print("%f (%f) with: %r" % (mean, stdev, param)) 

Lors de l'exécution de la recherche, je reçois une erreur comme celle

[Errno 28] No space left on device 

J'ai utilisé un ensemble de données de taille légèrement grand. Où, X.shape = (38932, 1002) Y.shape= (38932,)

Quel est le problème? Comment résoudre ceci? Est-ce parce que l'ensemble de données est trop grand pour ma machine.?

Si oui, que puis-je faire pour préformer GridSearch sur ce jeu de données?

+0

s'il vous plaît comprennent une description de l'ensemble de données, soit par la fourniture d'un échantillon et une forme ou un lien vers des données – sgDysregulation

+0

I avez édité la question et ajouté les formes –

+0

Est-ce un problème similaire que vous rencontrez: https://stackoverflow.com/a/6999259/1577947 – Jarad

Répondre

1

L'erreur indique que la mémoire partagée est à court, il est probable que augmentation le nombre de kfolds et/ou d'ajuster le nombre de threads utilisés par exemple n_jobs va résoudre ce problème .Ici est un exemple de travail en utilisant xgboost

import xgboost as xgb 
from sklearn.model_selection import GridSearchCV 
from sklearn import datasets 

clf = xgb.XGBClassifier() 
parameters = { 
    'n_estimators': [100, 250, 500], 
    'max_depth': [6, 9, 12], 
    'subsample': [0.9, 1.0], 
    'colsample_bytree': [0.9, 1.0], 
} 
bsn = datasets.load_iris() 
X, Y = bsn.data, bsn.target 
grid = GridSearchCV(clf, 
        parameters, n_jobs=4, 
        scoring="neg_log_loss", 
        cv=3) 

grid.fit(X, Y) 
print("Best: %f using %s" % (grid.best_score_, grid.best_params_)) 

means = grid.cv_results_['mean_test_score'] 
stds = grid.cv_results_['std_test_score'] 
params = grid.cv_results_['params'] 

for mean, stdev, param in zip(means, stds, params): 
    print("%f (%f) with: %r" % (mean, stdev, param)) 

sorties est

Best: -0.121569 using {'colsample_bytree': 0.9, 'max_depth': 6, 'n_estimators': 100, 'subsample': 1.0} 
-0.126334 (0.080193) with: {'colsample_bytree': 0.9, 'max_depth': 6, 'n_estimators': 100, 'subsample': 0.9} 
-0.121569 (0.081561) with: {'colsample_bytree': 0.9, 'max_depth': 6, 'n_estimators': 100, 'subsample': 1.0} 
-0.139359 (0.075462) with: {'colsample_bytree': 0.9, 'max_depth': 6, 'n_estimators': 250, 'subsample': 0.9} 
-0.131887 (0.076174) with: {'colsample_bytree': 0.9, 'max_depth': 6, 'n_estimators': 250, 'subsample': 1.0} 
-0.148302 (0.074890) with: {'colsample_bytree': 0.9, 'max_depth': 6, 'n_estimators': 500, 'subsample': 0.9} 
-0.135973 (0.076167) with: {'colsample_bytree': 0.9, 'max_depth': 6, 'n_estimators': 500, 'subsample': 1.0} 
-0.126334 (0.080193) with: {'colsample_bytree': 0.9, 'max_depth': 9, 'n_estimators': 100, 'subsample': 0.9} 
-0.121569 (0.081561) with: {'colsample_bytree': 0.9, 'max_depth': 9, 'n_estimators': 100, 'subsample': 1.0} 
-0.139359 (0.075462) with: {'colsample_bytree': 0.9, 'max_depth': 9, 'n_estimators': 250, 'subsample': 0.9} 
-0.131887 (0.076174) with: {'colsample_bytree': 0.9, 'max_depth': 9, 'n_estimators': 250, 'subsample': 1.0} 
-0.148302 (0.074890) with: {'colsample_bytree': 0.9, 'max_depth': 9, 'n_estimators': 500, 'subsample': 0.9} 
-0.135973 (0.076167) with: {'colsample_bytree': 0.9, 'max_depth': 9, 'n_estimators': 500, 'subsample': 1.0} 
-0.126334 (0.080193) with: {'colsample_bytree': 0.9, 'max_depth': 12, 'n_estimators': 100, 'subsample': 0.9} 
-0.121569 (0.081561) with: {'colsample_bytree': 0.9, 'max_depth': 12, 'n_estimators': 100, 'subsample': 1.0} 
-0.139359 (0.075462) with: {'colsample_bytree': 0.9, 'max_depth': 12, 'n_estimators': 250, 'subsample': 0.9} 
-0.131887 (0.076174) with: {'colsample_bytree': 0.9, 'max_depth': 12, 'n_estimators': 250, 'subsample': 1.0} 
-0.148302 (0.074890) with: {'colsample_bytree': 0.9, 'max_depth': 12, 'n_estimators': 500, 'subsample': 0.9} 
-0.135973 (0.076167) with: {'colsample_bytree': 0.9, 'max_depth': 12, 'n_estimators': 500, 'subsample': 1.0} 
-0.132745 (0.080433) with: {'colsample_bytree': 1.0, 'max_depth': 6, 'n_estimators': 100, 'subsample': 0.9} 
-0.127030 (0.077692) with: {'colsample_bytree': 1.0, 'max_depth': 6, 'n_estimators': 100, 'subsample': 1.0} 
-0.146143 (0.077623) with: {'colsample_bytree': 1.0, 'max_depth': 6, 'n_estimators': 250, 'subsample': 0.9} 
-0.140400 (0.074645) with: {'colsample_bytree': 1.0, 'max_depth': 6, 'n_estimators': 250, 'subsample': 1.0} 
-0.153624 (0.077594) with: {'colsample_bytree': 1.0, 'max_depth': 6, 'n_estimators': 500, 'subsample': 0.9} 
-0.143833 (0.073645) with: {'colsample_bytree': 1.0, 'max_depth': 6, 'n_estimators': 500, 'subsample': 1.0} 
-0.132745 (0.080433) with: {'colsample_bytree': 1.0, 'max_depth': 9, ... 
+0

J'ai déjà couru avec succès sur ma machine. Je suis confronté au problème avec cet ensemble de données seulement. –

+0

Je vais essayer sans 'kFold' et vous laisser savoir comment cela s'est passé –

+0

Vous pouvez également activer la verbosité dans le gridsearch i.e' verbose = 5' pour voir si certaines valeurs de paramètre causent le problème. – sgDysregulation