Perceptron#

class sklearn.linear_model.Perceptron(*, penalty=None, alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, eta0=1.0, n_jobs=None, random_state=0, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, class_weight=None, warm_start=False)[Quelle]#

Linearer Perzeptron-Klassifikator.

Die Implementierung ist ein Wrapper um SGDClassifier, indem die Parameter loss und learning_rate wie folgt festgelegt werden:

SGDClassifier(loss="perceptron", learning_rate="constant")

Weitere verfügbare Parameter sind unten beschrieben und werden an SGDClassifier weitergeleitet.

Weitere Informationen finden Sie im Benutzerhandbuch.

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

Der zu verwendende Strafterm (auch Regularisierungsterm genannt).

alphafloat, default=0.0001

Konstante, die den Strafterm multipliziert, wenn eine Straffung verwendet wird.

l1_ratiofloat, default=0.15

Der Elastic-Net-Mischungsparameter, mit 0 <= l1_ratio <= 1. l1_ratio=0 entspricht L2-Straffung, l1_ratio=1 entspricht L1. Wird nur verwendet, wenn penalty='elasticnet'.

Hinzugefügt in Version 0.24.

fit_interceptbool, Standardwert=True

Ob der Achsenabschnitt geschätzt werden soll oder nicht. Wenn False, wird angenommen, dass die Daten bereits zentriert sind.

max_iterint, default=1000

Die maximale Anzahl von Durchläufen über die Trainingsdaten (auch Epochen genannt). Dies wirkt sich nur auf das Verhalten der fit-Methode aus und nicht auf die partial_fit-Methode.

Hinzugefügt in Version 0.19.

tolfloat oder None, default=1e-3

Das Abbruchkriterium. Wenn es nicht None ist, stoppen die Iterationen, wenn (loss > previous_loss - tol).

Hinzugefügt in Version 0.19.

shufflebool, Standard=True

Ob die Trainingsdaten nach jeder Epoche gemischt werden sollen oder nicht.

verboseint, default=0

Die Ausführlichkeitsstufe.

eta0float, Standard=1

Konstante, mit der die Updates multipliziert werden.

n_jobsint, default=None

Die Anzahl der CPUs, die für die OVA-Berechnung (One Versus All, für Mehrklassenprobleme) verwendet werden sollen. None bedeutet 1, es sei denn, Sie befinden sich in einem joblib.parallel_backend-Kontext. -1 bedeutet, alle Prozessoren zu verwenden. Weitere Einzelheiten finden Sie im Glossar.

random_stateint, RandomState-Instanz oder None, Standard=0

Wird zum Mischen der Trainingsdaten verwendet, wenn shuffle auf True gesetzt ist. Geben Sie eine ganze Zahl für reproduzierbare Ausgaben über mehrere Funktionsaufrufe hinweg an. Siehe Glossar.

early_stoppingbool, default=False

Ob Early Stopping verwendet werden soll, um das Training zu beenden, wenn die Validierungsgenauigkeit nicht besser wird. Wenn auf True gesetzt, wird automatisch ein stratifizierter Anteil der Trainingsdaten als Validierungsdatensatz zurückgestellt und das Training beendet, wenn die Validierungsgenauigkeit für n_iter_no_change aufeinanderfolgende Epochen nicht um mindestens tol besser wird.

Hinzugefügt in Version 0.20.

validation_fractionfloat, default=0.1

Der Anteil der Trainingsdaten, der als Validierungsdatensatz für Early Stopping beiseitegelegt werden soll. Muss zwischen 0 und 1 liegen. Wird nur verwendet, wenn early_stopping True ist.

Hinzugefügt in Version 0.20.

n_iter_no_changeint, default=5

Anzahl der Iterationen ohne Verbesserung, auf die gewartet werden soll, bevor Early Stopping angewendet wird.

Hinzugefügt in Version 0.20.

class_weightdict, {Klassenlabel: Gewicht} oder “balanced”, Standard=None

Voreinstellung für den class_weight-Fit-Parameter.

Mit Klassen verbundene Gewichte. 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)).

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 einfach verworfen. Siehe das Glossar.

Attribute:
classes_ndarray der Form (n_classes,)

Die eindeutigen Klassennamen.

coef_ndarray von Form (1, n_features), wenn n_classes == 2, sonst (n_classes, n_features)

Den Merkmalen zugeordnete Gewichte.

intercept_ndarray von Form (1,), wenn n_classes == 2, sonst (n_classes,)

Konstanten in der Entscheidungsfunktion.

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_int

Die tatsächliche Anzahl der Iterationen, um das Abbruchkriterium zu erreichen. Bei Multiklassen-Fits ist dies das Maximum über alle Binär-Fits.

t_int

Anzahl der während des Trainings durchgeführten Gewichtungsaktualisierungen. Gleich wie (n_iter_ * n_samples + 1).

Siehe auch

sklearn.linear_model.SGDClassifier

Lineare Klassifikatoren (SVM, logistische Regression, etc.) mit SGD-Training.

Anmerkungen

Perceptron ist ein Klassifizierungsalgorithmus, der die gleiche zugrunde liegende Implementierung wie SGDClassifier teilt. Tatsächlich ist Perceptron() äquivalent zu SGDClassifier(loss="perceptron", eta0=1, learning_rate="constant", penalty=None).

Referenzen

https://en.wikipedia.org/wiki/Perceptron und die dort genannten Referenzen.

Beispiele

>>> from sklearn.datasets import load_digits
>>> from sklearn.linear_model import Perceptron
>>> X, y = load_digits(return_X_y=True)
>>> clf = Perceptron(tol=1e-3, random_state=0)
>>> clf.fit(X, y)
Perceptron()
>>> clf.score(X, y)
0.939...
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, coef_init=None, intercept_init=None, sample_weight=None)[Quelle]#

Lineares Modell mit stochastischem Gradientenabstieg anpassen.

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

Trainingsdaten.

yndarray der Form (n_samples,)

Zielwerte.

coef_initndarray der Form (n_classes, n_features), Standard=None

Die anfänglichen Koeffizienten zum Aufwärmen der Optimierung.

intercept_initndarray der Form (n_classes,), Standard=None

Der anfängliche Achsenabschnitt zum Aufwärmen der Optimierung.

sample_weightarray-like, shape (n_samples,), default=None

Gewichte, die auf einzelne Stichproben angewendet werden. Wenn nicht angegeben, werden einheitliche Gewichte angenommen. Diese Gewichte werden mit class_weight (über den Konstruktor übergeben) multipliziert, wenn class_weight angegeben ist.

Gibt zurück:
selfobject

Gibt eine Instanz von self zurück.

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.

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

Eine Epoche stochastischen Gradientenabstiegs auf gegebenen Stichproben durchführen.

Intern verwendet diese Methode max_iter = 1. Daher ist nicht garantiert, dass nach einmaligem Aufrufen ein Minimum der Kostenfunktion erreicht wird. Angelegenheiten wie Zielkonvergenz, Early Stopping und Lernratenanpassungen sollten vom Benutzer gehandhabt werden.

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

Teilmenge der Trainingsdaten.

yndarray der Form (n_samples,)

Teilmenge der Zielwerte.

classesndarray der Form (n_classes,), Standard=None

Klassen über alle Aufrufe von partial_fit hinweg. Kann über np.unique(y_all) bezogen werden, wobei y_all der Zielvektor des gesamten Datensatzes ist. Dieses Argument ist für den ersten Aufruf von partial_fit erforderlich und kann bei nachfolgenden Aufrufen weggelassen werden. Beachten Sie, dass y nicht alle Labels in classes enthalten muss.

sample_weightarray-like, shape (n_samples,), default=None

Gewichte, die auf einzelne Stichproben angewendet werden. Wenn nicht angegeben, werden einheitliche Gewichte angenommen.

Gibt zurück:
selfobject

Gibt eine Instanz von self zurück.

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.

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(*, coef_init: bool | None | str = '$UNCHANGED$', intercept_init: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') Perceptron[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:
coef_initstr, True, False, oder None, default=sklearn.utils.metadata_routing.UNCHANGED

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

intercept_initstr, True, False, oder None, default=sklearn.utils.metadata_routing.UNCHANGED

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

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_partial_fit_request(*, classes: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') Perceptron[Quelle]#

Konfiguriert, ob Metadaten für die partial_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 an partial_fit übergeben, wenn sie bereitgestellt werden. Die Anforderung wird ignoriert, wenn keine Metadaten bereitgestellt werden.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an partial_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:
klassenstr, True, False, oder None, Standard=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter klassen in partial_fit.

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

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

Gibt zurück:
selfobject

Das aktualisierte Objekt.

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') Perceptron[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.