Ich verwende Scikit-learn RFECV, um die wichtigsten Merkmale für eine logistische Regression mit einer Kreuzvalidierung auszuwählen. Angenommen, X ist ein [n, x] Datenrahmen von Merkmalen und y repräsentiert die Antwortvariable:
%Vor%Zwei Fragen:
a) Ist dies der richtige Prozess für die Auswahl von Funktionen, Hyper-Parametern und Anpassung?
b) Wo finde ich die angepassten Koeffizienten für die ausgewählten Features?
Ist dies der richtige Prozess für die Auswahl von Features?
Dies ist eine der vielen Möglichkeiten der Merkmalauswahl. Die Beseitigung von rekursiven Merkmalen ist ein automatisierter Ansatz, andere sind in der Dokumentation zu scikit.learn aufgeführt . Sie haben unterschiedliche Vor- und Nachteile, und die Auswahl der Merkmale wird in der Regel am besten erreicht, indem auch der gesunde Menschenverstand einbezogen und Modelle mit unterschiedlichen Merkmalen getestet werden. RFE ist eine schnelle Möglichkeit, eine gute Auswahl an Funktionen auszuwählen, gibt Ihnen aber nicht unbedingt das Beste. Übrigens müssen Sie Ihr StratifiedKFold nicht separat erstellen. Wenn Sie nur den cv
-Parameter auf cv=3
setzen, werden sowohl RFECV
als auch GridSearchCV
automatisch StratifiedKFold verwenden, wenn die y-Werte binär oder multiklassig sind. Ich nehme an, dass dies wahrscheinlich der Fall ist, da Sie% verwenden. Code%.
Sie können auch
in
%Vor%Ist dies der richtige Prozess für die Auswahl von Hyperparametern? GridSearchCV ist im Grunde ein automatisierter Weg, systematisch eine ganze Reihe von Kombinationen von Modellparametern zu testen und die besten unter diesen nach einer Leistungsmetrik auszuwählen. Es ist eine gute Möglichkeit, geeignete Parameter zu finden, ja.
Ist dies der richtige Anpassungsprozess?
Ja, das ist eine gültige Art, das Modell anzupassen. Wenn Sie LogisticRegression
aufrufen, wird ein Gitter von grid.fit(X_new, y)
estimators erstellt (jedes mit einer Reihe von Parametern, die ausprobiert werden) und zu jedem von ihnen passt. Es behält den mit der besten Leistung unter LogisticRegression
, die Parameter dieses Schätzers in grid.best_estimator_
und den Performance-Score für diesen Schätzer unter grid.best_params_
. Es wird sich selbst zurückgeben und nicht der beste Schätzer. Beachten Sie, dass Sie bei eingehenden neuen X-Werten, auf die Sie das Modell zur Vorhersage verwenden, die Transformation mit dem angepassten RFECV-Modell anwenden müssen. Sie können diesen Schritt also auch zur Pipeline hinzufügen.
Wo finde ich die angepassten Koeffizienten für die ausgewählten Features?
Das grid.best_score_
Attribut ist ein grid.best_estimator_
Objekt mit all diesen Informationen, also hat LogisticRegression
alle Koeffizienten (und grid.best_estimator_.coef_
ist der Achsenabschnitt). Beachten Sie, dass der grid.best_estimator_.intercept_
-Parameter für grid.best_estimator_
auf refit
gesetzt werden muss, um dieses GridSearchCV
zu erhalten, aber das ist sowieso der Standardwert.
Im Wesentlichen müssen Sie einen Zug-Validierungstest-Split für Ihre Beispieldaten durchführen. Wenn der Zugsatz verwendet wird, um Ihre normalen Parameter zu optimieren, wird der Validierungssatz zum Einstellen von Hyperparametern in der Rastersuche und der Testsatz zur Leistungsbewertung verwendet. Hier ist eine Möglichkeit, dies zu tun.
%Vor%Tags und Links python scikit-learn