möchte ich GridSearchCV in einem RandomForestClassifier auszuführen, die Daten sind jedoch nicht ausgeglichen, so dass ich StratifiedKFold:GridSearchCV mit StratifiedKFold
from sklearn.model_selection import StratifiedKFold
from sklearn.grid_search import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
param_grid = {'n_estimators':[10, 30, 100, 300], "max_depth": [3, None],
"max_features": [1, 5, 10], "min_samples_leaf": [1, 10, 25, 50], "criterion": ["gini", "entropy"]}
rfc = RandomForestClassifier()
clf = GridSearchCV(rfc, param_grid=param_grid, cv=StratifiedKFold()).fit(X_train, y_train)
Aber ich erhalte eine Fehlermeldung:
TypeError Traceback (most recent call last)
<ipython-input-597-b08e92c33165> in <module>()
9 rfc = RandomForestClassifier()
10
---> 11 clf = GridSearchCV(rfc, param_grid=param_grid, cv=StratifiedKFold()).fit(X_train, y_train)
c:\python34\lib\site-packages\sklearn\grid_search.py in fit(self, X, y)
811
812 """
--> 813 return self._fit(X, y, ParameterGrid(self.param_grid))
c:\python34\lib\site-packages\sklearn\grid_search.py in _fit(self, X, y, parameter_iterable)
559 self.fit_params, return_parameters=True,
560 error_score=self.error_score)
--> 561 for parameters in parameter_iterable
562 for train, test in cv)
c:\python34\lib\site-packages\sklearn\externals\joblib\parallel.py in __call__(self, iterable)
756 # was dispatched. In particular this covers the edge
757 # case of Parallel used with an exhausted iterator.
--> 758 while self.dispatch_one_batch(iterator):
759 self._iterating = True
760 else:
c:\python34\lib\site-packages\sklearn\externals\joblib\parallel.py in dispatch_one_batch(self, iterator)
601
602 with self._lock:
--> 603 tasks = BatchedCalls(itertools.islice(iterator, batch_size))
604 if len(tasks) == 0:
605 # No more tasks available in the iterator: tell caller to stop.
c:\python34\lib\site-packages\sklearn\externals\joblib\parallel.py in __init__(self, iterator_slice)
125
126 def __init__(self, iterator_slice):
--> 127 self.items = list(iterator_slice)
128 self._size = len(self.items)
c:\python34\lib\site-packages\sklearn\grid_search.py in <genexpr>(.0)
560 error_score=self.error_score)
561 for parameters in parameter_iterable
--> 562 for train, test in cv)
563
564 # Out is a list of triplet: score, estimator, n_test_samples
TypeError: 'StratifiedKFold' object is not iterable
Wenn ich schreibe cv=StratifiedKFold(y_train)
Ich habe ValueError: The number of folds must be of Integral type.
Aber wenn ich `cv = 5 schreibe, funktioniert es.
Ich verstehe nicht, was mit StratifiedKFold falsch ist
Ich schreibe 'cv = StratifiedKFold (10)' und 'erhalten Typeerror: 'StratifiedKFold' Objekt ist nicht iterable' Wann sollte ich y passieren? – user183897
In der aktuellen Version importieren Sie sklearn.model_selection.StratifiedKFold. Und dann können Sie cv = StratifiedKFold (10) tun und es sollte kein Fehler sein. Vielleicht importieren Sie jedoch aus dem vorherigen Modul, das aus Kompatibilitätsgründen noch existiert, bis Version 20. – simon
Könnte ich noch eine Frage stellen? Ich habe von dieser Seite http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-learn Datei scikit_learn-0.18-cp34-cp34m-win32.whl heruntergeladen, installiert, aber jetzt bekomme ich 'ImportError: DLL Laden fehlgeschlagen:% 1 ist keine gültige Win32-Anwendung. '. Was ist falsch? – user183897