LogisticRegression#

class sklearn.linear_model.LogisticRegression(penalty='deprecated', *, C=1.0, l1_ratio=0.0, dual=False, tol=0.0001, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, verbose=0, warm_start=False, n_jobs=None)[Quelle]#

Logistische Regression (auch bekannt als Logit, MaxEnt) Klassifikator.

Diese Klasse implementiert eine regularisierte logistische Regression mit einer Reihe verfügbarer Solver. Beachten Sie, dass die Regularisierung standardmäßig angewendet wird. Sie kann sowohl dichte als auch dünnbesetzte Eingaben X verarbeiten. Verwenden Sie C-geordnete Arrays oder CSR-Matrizen mit 64-Bit-Gleitkommazahlen für optimale Leistung; jedes andere Eingabeformat wird konvertiert (und kopiert).

Die Solver ‘lbfgs’, ‘newton-cg’, ‘newton-cholesky’ und ‘sag’ unterstützen nur L2-Regularisierung mit primaler Formulierung oder keine Regularisierung. Der Solver ‘liblinear’ unterstützt sowohl L1- als auch L2-Regularisierung (aber nicht beide, d.h. Elastic-Net), mit einer dualen Formulierung nur für die L2-Strafe. Die Elastic-Net (Kombination aus L1 und L2) Regularisierung wird nur vom Solver ‘saga’ unterstützt.

Für multiclass Probleme (jedes Mal, wenn n_classes >= 3), optimieren alle Solver außer ‘liblinear’ den (gestraften) multinomialen Verlust. ‘liblinear’ behandelt nur binäre Klassifizierung, kann aber durch die Verwendung von OneVsRestClassifier zur Behandlung von Multiclass-Problemen erweitert werden.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
penalty{‘l1’, ‘l2’, ‘elasticnet’, None}, default=’l2’

Gibt die Norm der Strafe an.

  • None: es wird keine Strafe hinzugefügt;

  • 'l2': es wird ein L2-Strafterm hinzugefügt und dies ist die Standardwahl;

  • 'l1': es wird ein L1-Strafterm hinzugefügt;

  • 'elasticnet': es werden sowohl L1- als auch L2-Strafterme hinzugefügt.

Warnung

Einige Strafen funktionieren möglicherweise nicht mit einigen Solvern. Siehe den Parameter solver unten, um die Kompatibilität zwischen Strafe und Solver zu erfahren.

Hinzugefügt in Version 0.19: L1-Strafe mit SAGA-Solver (ermöglicht ‘multinomial’ + L1)

Veraltet seit Version 1.8: penalty wurde in Version 1.8 als veraltet markiert und wird in 1.10 entfernt. Verwenden Sie stattdessen l1_ratio. l1_ratio=0 für penalty='l2', l1_ratio=1 für penalty='l1' und l1_ratio auf einen Float-Wert zwischen 0 und 1 für 'penalty='elasticnet' setzen.

Cfloat, Standardwert=1.0

Inverse der Regularisierungsstärke; muss ein positiver Float-Wert sein. Wie bei Support Vector Machines bedeuten kleinere Werte stärkere Regularisierung. C=np.inf führt zu ungestrafter logistischer Regression. Für ein visuelles Beispiel der Auswirkung der Abstimmung des C-Parameters mit einer L1-Strafe siehe: Regularisierungspfad der L1-Logistischen Regression.

l1_ratiofloat, default=0.0

Der Elastic-Net-Mischparameter, mit 0 <= l1_ratio <= 1. Setzen von l1_ratio=1 ergibt eine reine L1-Strafe, Setzen von l1_ratio=0 eine reine L2-Strafe. Jeder Wert zwischen 0 und 1 ergibt eine Elastic-Net-Strafe der Form l1_ratio * L1 + (1 - l1_ratio) * L2.

Warnung

Bestimmte Werte von l1_ratio, d.h. einige Strafen, funktionieren möglicherweise nicht mit einigen Solvern. Siehe den Parameter solver unten, um die Kompatibilität zwischen Strafe und Solver zu erfahren.

Geändert in Version 1.8: Standardwert von None auf 0.0 geändert.

Veraltet seit Version 1.8: None ist veraltet und wird in Version 1.10 entfernt. Verwenden Sie immer l1_ratio, um den Strafentyp anzugeben.

dualbool, standard=False

Dual (eingeschränkte) oder primale (regularisierte, siehe auch diese Gleichung) Formulierung. Die duale Formulierung ist nur für L2-Strafe mit liblinear-Solver implementiert. Bevorzugen Sie dual=False, wenn n_samples > n_features.

tolfloat, Standard=1e-4

Toleranz für die Abbruchkriterien.

fit_interceptbool, Standardwert=True

Gibt an, ob eine Konstante (auch Bias oder Achsenabschnitt genannt) zur Entscheidungfunktion hinzugefügt werden soll.

intercept_scalingfloat, standard=1

Nur nützlich, wenn der Solver liblinear verwendet wird und self.fit_intercept auf True gesetzt ist. In diesem Fall wird x zu [x, self.intercept_scaling], d.h. ein "synthetisches" Merkmal mit konstantem Wert gleich intercept_scaling wird an den Instanzvektor angehängt. Der Achsenabschnitt wird intercept_scaling * synthetic_feature_weight.

Hinweis

Das synthetische Merkmalsgewicht unterliegt wie alle anderen Merkmale der L1- oder L2-Regularisierung. Um die Auswirkung der Regularisierung auf das synthetische Merkmalsgewicht (und damit auf den Achsenabschnitt) zu verringern, muss intercept_scaling erhöht werden.

class_weightdict oder ‘balanced’, Standard=None

Gewichte, die den Klassen zugeordnet sind, in der Form {Klassenbezeichnung: Gewicht}. Wenn nicht angegeben, wird angenommen, dass alle Klassen das Gewicht eins haben.

Der Modus „balanced“ verwendet die Werte von y, um Gewichte automatisch invers proportional zur Klassenhäufigkeit in den Eingabedaten anzupassen, als n_samples / (n_classes * np.bincount(y)).

Beachten Sie, dass diese Gewichte mit sample_weight (das über die fit-Methode übergeben wird) multipliziert werden, wenn sample_weight angegeben ist.

Hinzugefügt in Version 0.17: class_weight=’balanced’

random_stateint, RandomState instance, default=None

Wird verwendet, wenn solver == ‘sag’, ‘saga’ oder ‘liblinear’ ist, um die Daten zu mischen. Siehe Glossar für Details.

solver{‘lbfgs’, ‘liblinear’, ‘newton-cg’, ‘newton-cholesky’, ‘sag’, ‘saga’}, standard=’lbfgs’

Algorithmus, der im Optimierungsproblem verwendet werden soll. Standard ist ‘lbfgs’. Um einen Solver auszuwählen, sollten Sie möglicherweise die folgenden Aspekte berücksichtigen:

  • ‘lbfgs’ ist ein guter Standard-Solver, da er für eine breite Klasse von Problemen eine vernünftige Leistung erbringt.

  • Für multiclass Probleme (n_classes >= 3) minimieren alle Solver außer ‘liblinear’ den vollständigen multinomialen Verlust, ‘liblinear’ löst einen Fehler aus.

  • ‘newton-cholesky’ ist eine gute Wahl für n_samples >> n_features * n_classes, insbesondere bei One-Hot-kodierten kategorischen Merkmalen mit seltenen Kategorien. Beachten Sie, dass die Speichernutzung dieses Solvers quadratisch von n_features * n_classes abhängt, da er die vollständige Hesse-Matrix explizit berechnet.

  • Für kleine Datensätze ist ‘liblinear’ eine gute Wahl, während ‘sag’ und ‘saga’ für große Datensätze schneller sind;

  • ‘liblinear’ kann standardmäßig nur binäre Klassifizierung verarbeiten. Um ein One-Versus-Rest-Schema für die Multiclass-Einstellung anzuwenden, kann es mit OneVsRestClassifier umschlossen werden.

Warnung

Die Wahl des Algorithmus hängt von der gewählten Strafe ab (l1_ratio=0 für L2-Strafe, l1_ratio=1 für L1-Strafe und 0 < l1_ratio < 1 für Elastic-Net) und von der (multinomialen) Multiclass-Unterstützung.

solver

l1_ratio

multinomial multiclass

‘lbfgs’

l1_ratio=0

yes

‘liblinear’

l1_ratio=1 oder l1_ratio=0

no

‘newton-cg’

l1_ratio=0

yes

‘newton-cholesky’

l1_ratio=0

yes

‘sag’

l1_ratio=0

yes

‘saga’

0<=l1_ratio<=1

yes

Hinweis

Die schnelle Konvergenz von ‘sag’ und ‘saga’ ist nur bei Merkmalen mit ungefähr gleicher Skalierung garantiert. Sie können die Daten mit einem Scaler aus sklearn.preprocessing vorverarbeiten.

Siehe auch

Weitere Informationen zu LogisticRegression und insbesondere zur Tabelle, die die Solver/Strafe-Unterstützung zusammenfasst, finden Sie im Benutzerhandbuch.

Hinzugefügt in Version 0.17: Stochastischer Gradientenabstieg (SAG) Solver. Multinomiale Unterstützung in Version 0.18.

Hinzugefügt in Version 0.19: SAGA-Löser.

Geändert in Version 0.22: Der Standard-Solver wurde in 0.22 von ‘liblinear’ auf ‘lbfgs’ geändert.

Hinzugefügt in Version 1.2: Newton-Cholesky-Solver. Multinomiale Unterstützung in Version 1.6.

max_iterint, default=100

Maximale Anzahl von Iterationen, die die Solver zur Konvergenz benötigen.

verboseint, default=0

Für die liblinear- und lbfgs-Solver setzen Sie verbose auf einen positiven Wert für Ausführlichkeit.

warm_startbool, Standard=False

Wenn auf True gesetzt, wird die Lösung des vorherigen Aufrufs von fit als Initialisierung wiederverwendet, andernfalls wird die vorherige Lösung gelöscht. Nutzlos für den liblinear-Solver. Siehe das Glossar.

Hinzugefügt in Version 0.17: warm_start zur Unterstützung der Solver lbfgs, newton-cg, sag, saga.

n_jobsint, default=None

Hat keine Auswirkung.

Veraltet seit Version 1.8: n_jobs ist in Version 1.8 veraltet und wird in 1.10 entfernt.

Attribute:
classes_ndarray der Form (n_classes, )

Eine Liste von Klassenlabels, die dem Klassifikator bekannt sind.

coef_ndarray der Form (1, n_features) oder (n_classes, n_features)

Koeffizienten der Merkmale in der Entscheidungsfunktion.

coef_ hat die Form (1, n_features), wenn das gegebene Problem binär ist.

intercept_ndarray der Form (1,) oder (n_classes,)

Achsenabschnitt (auch Bias genannt), der zur Entscheidungfunktion hinzugefügt wird.

Wenn fit_intercept auf False gesetzt ist, wird der Achsenabschnitt auf Null gesetzt. intercept_ hat die Form (1,), wenn das gegebene Problem binär ist.

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

Hinzugefügt in Version 0.24.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der während fit gesehenen Merkmale. Nur definiert, wenn X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

n_iter_ndarray der Form (1, )

Tatsächliche Anzahl der Iterationen für alle Klassen.

Geändert in Version 0.20: In SciPy <= 1.0.0 kann die Anzahl der lbfgs-Iterationen max_iter überschreiten. n_iter_ meldet nun höchstens max_iter.

Siehe auch

SGDClassifier

Inkrementell trainierte logistische Regression (wenn der Parameter loss="log_loss" angegeben ist).

LogisticRegressionCV

Logistische Regression mit integrierter Kreuzvalidierung.

Anmerkungen

Die zugrunde liegende C-Implementierung verwendet einen Zufallszahlengenerator, um Merkmale bei der Anpassung des Modells auszuwählen. Daher ist es nicht ungewöhnlich, leicht unterschiedliche Ergebnisse für dieselben Eingabedaten zu erhalten. Wenn dies geschieht, versuchen Sie es mit einem kleineren tol-Parameter.

Die Vorhersageergebnisse stimmen möglicherweise nicht mit denen von Standalone-liblinear in bestimmten Fällen überein. Siehe Unterschiede zu liblinear in der narrativen Dokumentation.

Referenzen

L-BFGS-B – Software für die groß angelegte Optimierung mit gebundenen Beschränkungen

Ciyou Zhu, Richard Byrd, Jorge Nocedal und Jose Luis Morales. http://users.iems.northwestern.edu/~nocedal/lbfgsb.html

LIBLINEAR – Eine Bibliothek für große lineare Klassifizierung

https://www.csie.ntu.edu.tw/~cjlin/liblinear/

SAG – Mark Schmidt, Nicolas Le Roux und Francis Bach

Minimierung von endlichen Summen mit dem stochastischen durchschnittlichen Gradienten https://hal.inria.fr/hal-00860051/document

SAGA – Defazio, A., Bach F. & Lacoste-Julien S. (2014).

„SAGA: Ein schneller inkrementeller Gradienten-Algorithmus mit Unterstützung für nicht-stark konvexe zusammengesetzte Zielfunktionen“

Hsiang-Fu Yu, Fang-Lan Huang, Chih-Jen Lin (2011). Duale Koordinatenabstiegsverfahren

für logistische Regression und Maximum-Entropie-Modelle. Machine Learning 85(1-2):41-75. https://www.csie.ntu.edu.tw/~cjlin/papers/maxent_dual.pdf

Beispiele

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(random_state=0).fit(X, y)
>>> clf.predict(X[:2, :])
array([0, 0])
>>> clf.predict_proba(X[:2, :])
array([[9.82e-01, 1.82e-02, 1.44e-08],
       [9.72e-01, 2.82e-02, 3.02e-08]])
>>> clf.score(X, y)
0.97

Vergleiche der LogisticRegression mit anderen Klassifikatoren finden Sie unter: Plot classification probability.

decision_function(X)[Quelle]#

Konfidenz-Scores für Stichproben vorhersagen.

Der Konfidenz-Score für eine Stichprobe ist proportional zum vorzeichenbehafteten Abstand dieser Stichprobe zur Hyperebene.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Die Datenmatrix, für die wir die Konfidenz-Scores erhalten möchten.

Gibt zurück:
scoresndarray der Form (n_samples,) oder (n_samples, n_classes)

Konfidenz-Scores pro (n_samples, n_classes)-Kombination. Im binären Fall, Konfidenz-Score für self.classes_[1], wobei >0 bedeutet, dass diese Klasse vorhergesagt würde.

densify()[Quelle]#

Konvertiert die Koeffizientenmatrix in ein dichtes Array-Format.

Konvertiert das Mitglied coef_ (zurück) in ein numpy.ndarray. Dies ist das Standardformat von coef_ und wird für das Training benötigt, daher muss diese Methode nur auf Modellen aufgerufen werden, die zuvor verknappt wurden; andernfalls ist sie eine No-Op.

Gibt zurück:
self

Angepasster Schätzer.

fit(X, y, sample_weight=None)[Quelle]#

Trainiert das Modell anhand der gegebenen Trainingsdaten.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Trainingsvektor, wobei n_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

yarray-like von Form (n_samples,)

Zielvektor relativ zu X.

sample_weightArray-ähnlich der Form (n_samples,) Standard=None

Array von Gewichten, die einzelnen Stichproben zugeordnet sind. Wenn nicht bereitgestellt, erhält jede Stichprobe das Einheitsgewicht.

Hinzugefügt in Version 0.17: Unterstützung für sample_weight für LogisticRegression.

Gibt zurück:
self

Angepasster Schätzer.

Anmerkungen

Der SAGA-Solver unterstützt sowohl Float64- als auch Float32-Bit-Arrays.

get_metadata_routing()[Quelle]#

Holt das Metadaten-Routing dieses Objekts.

Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.

Gibt zurück:
routingMetadataRequest

Ein MetadataRequest, der Routing-Informationen kapselt.

get_params(deep=True)[Quelle]#

Holt Parameter für diesen Schätzer.

Parameter:
deepbool, default=True

Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.

Gibt zurück:
paramsdict

Parameternamen, zugeordnet ihren Werten.

predict(X)[Quelle]#

Vorhersagen von Klassenbezeichnungen für Stichproben in X.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Die Datenmatrix, für die wir die Vorhersagen erhalten möchten.

Gibt zurück:
y_predndarray von Form (n_samples,)

Vektor, der die Klassenbezeichnungen für jede Stichprobe enthält.

predict_log_proba(X)[Quelle]#

Vorhersage des Logarithmus von Wahrscheinlichkeitsschätzungen.

Die zurückgegebenen Schätzungen für alle Klassen sind nach dem Label der Klassen geordnet.

Parameter:
Xarray-like der Form (n_samples, n_features)

Vektor, der bewertet werden soll, wobei n_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

Gibt zurück:
TArray-ähnlich der Form (n_samples, n_classes)

Gibt die Log-Wahrscheinlichkeit der Stichprobe für jede Klasse im Modell zurück, wobei die Klassen in der Reihenfolge von self.classes_ geordnet sind.

predict_proba(X)[Quelle]#

Wahrscheinlichkeitsschätzungen.

Die zurückgegebenen Schätzungen für alle Klassen sind nach dem Label der Klassen geordnet.

Für ein Multiclass- / Multinomial-Problem wird die Softmax-Funktion verwendet, um die vorhergesagte Wahrscheinlichkeit jeder Klasse zu ermitteln.

Parameter:
Xarray-like der Form (n_samples, n_features)

Vektor, der bewertet werden soll, wobei n_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

Gibt zurück:
TArray-ähnlich der Form (n_samples, n_classes)

Gibt die Wahrscheinlichkeit der Stichprobe für jede Klasse im Modell zurück, wobei die Klassen in der Reihenfolge von self.classes_ geordnet sind.

score(X, y, sample_weight=None)[Quelle]#

Gibt die Genauigkeit für die bereitgestellten Daten und Bezeichnungen zurück.

Bei der Multi-Label-Klassifizierung ist dies die Subset-Genauigkeit, eine strenge Metrik, da für jede Stichprobe verlangt wird, dass jede Label-Menge korrekt vorhergesagt wird.

Parameter:
Xarray-like der Form (n_samples, n_features)

Teststichproben.

yarray-like der Form (n_samples,) oder (n_samples, n_outputs)

Wahre Bezeichnungen für X.

sample_weightarray-like der Form (n_samples,), Standardwert=None

Stichprobengewichte.

Gibt zurück:
scorefloat

Mittlere Genauigkeit von self.predict(X) in Bezug auf y.

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LogisticRegression[Quelle]#

Konfiguriert, ob Metadaten für die fit-Methode angefordert werden sollen.

Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit enable_metadata_routing=True aktiviert ist (siehe sklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.

Die Optionen für jeden Parameter sind

  • True: Metadaten werden angefordert und, falls vorhanden, an fit übergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an fit.

  • None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.

  • str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.

Der Standardwert (sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.

Hinzugefügt in Version 1.3.

Parameter:
sample_weightstr, True, False, oder None, Standardwert=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter sample_weight in fit.

Gibt zurück:
selfobject

Das aktualisierte Objekt.

set_params(**params)[Quelle]#

Setzt die Parameter dieses Schätzers.

Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie Pipeline). Letztere haben Parameter der Form <component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.

Parameter:
**paramsdict

Schätzer-Parameter.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LogisticRegression[Quelle]#

Konfiguriert, ob Metadaten für die score-Methode angefordert werden sollen.

Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit enable_metadata_routing=True aktiviert ist (siehe sklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.

Die Optionen für jeden Parameter sind

  • True: Metadaten werden angefordert und, falls vorhanden, an score übergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an score.

  • None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.

  • str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.

Der Standardwert (sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.

Hinzugefügt in Version 1.3.

Parameter:
sample_weightstr, True, False, oder None, Standardwert=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter sample_weight in score.

Gibt zurück:
selfobject

Das aktualisierte Objekt.

sparsify()[Quelle]#

Koeffizientenmatrix in Sparse-Format konvertieren.

Konvertiert das coef_-Mitglied in eine scipy.sparse-Matrix, die für Modelle mit L1-Regularisierung speicher- und speichereffizienter sein kann als die übliche numpy.ndarray-Darstellung.

Das intercept_-Mitglied wird nicht konvertiert.

Gibt zurück:
self

Angepasster Schätzer.

Anmerkungen

Für nicht-sparse Modelle, d.h. wenn nicht viele Nullen in coef_ vorhanden sind, kann dies tatsächlich den Speicherverbrauch *erhöhen*, also verwenden Sie diese Methode mit Vorsicht. Eine Faustregel besagt, dass die Anzahl der Nullelemente, die mit (coef_ == 0).sum() berechnet werden kann, mehr als 50 % betragen muss, damit dies signifikante Vorteile bringt.

Nach dem Aufruf dieser Methode funktioniert die weitere Anpassung mit der Methode partial_fit (falls vorhanden) nicht mehr, bis Sie densify aufrufen.