MLPRegressor#

class sklearn.neural_network.MLPRegressor(loss='squared_error', hidden_layer_sizes=(100,), activation='relu', *, solver='adam', alpha=0.0001, batch_size='auto', learning_rate='constant', learning_rate_init=0.001, power_t=0.5, max_iter=200, shuffle=True, random_state=None, tol=0.0001, verbose=False, warm_start=False, momentum=0.9, nesterovs_momentum=True, early_stopping=False, validation_fraction=0.1, beta_1=0.9, beta_2=0.999, epsilon=1e-08, n_iter_no_change=10, max_fun=15000)[Quelle]#

Multi-Layer Perceptron Regressor.

Dieses Modell optimiert den quadrierten Fehler mit LBFGS oder stochastischem Gradientenabstieg.

Hinzugefügt in Version 0.18.

Parameter:
loss{‘squared_error’, ‘poisson’}, Standardwert=’squared_error’

Die zu verwendende Verlustfunktion beim Trainieren der Gewichte. Beachten Sie, dass die Verluste „squared error“ und „poisson“ tatsächlich „half squares error“ und „half poisson deviance“ implementieren, um die Gradientenberechnung zu vereinfachen. Darüber hinaus verwendet die „poisson“-Verlustfunktion intern einen Log-Link (Exponential als Ausgabeaktivierungsfunktion) und erfordert y >= 0.

Geändert in Version 1.7: Parameter loss und Option ‘poisson’ hinzugefügt.

hidden_layer_sizesarray-ähnlich der Form (n_layers - 2,), Standardwert=(100,)

Das i-te Element repräsentiert die Anzahl der Neuronen in der i-ten versteckten Schicht.

activation{‘identity’, ‘logistic’, ‘tanh’, ‘relu’}, Standardwert=’relu’

Aktivierungsfunktion für die versteckte Schicht.

  • ‘identity’, keine Aktivierung, nützlich zur Implementierung eines linearen Bottlenecks, gibt f(x) = x zurück

  • ‘logistic’, die logistische Sigmoidfunktion, gibt f(x) = 1 / (1 + exp(-x)) zurück.

  • ‘tanh’, die hyperbolische Tangensfunktion, gibt f(x) = tanh(x) zurück.

  • ‘relu’, die Rectified Linear Unit-Funktion, gibt f(x) = max(0, x) zurück

solver{‘lbfgs’, ‘sgd’, ‘adam’}, Standardwert=’adam’

Der Solver für die Gewichtsoptimierung.

  • ‘lbfgs’ ist ein Optimierer aus der Familie der Quasi-Newton-Methoden.

  • ‘sgd’ bezieht sich auf stochastischen Gradientenabstieg.

  • ‘adam’ bezieht sich auf einen stochastischen Gradienten-basierten Optimierer, der von Kingma, Diederik und Jimmy Ba vorgeschlagen wurde.

Ein Vergleich zwischen dem Adam-Optimierer und SGD finden Sie unter Vergleich von stochastischen Lernstrategien für MLPClassifier.

Hinweis: Der Standard-Solver ‘adam’ funktioniert bei relativ großen Datensätzen (mit Tausenden von Trainingsstichproben oder mehr) sowohl in Bezug auf die Trainingszeit als auch auf die Validierungsgenauigkeit recht gut. Bei kleinen Datensätzen kann ‘lbfgs’ jedoch schneller konvergieren und bessere Leistungen erbringen.

alphafloat, default=0.0001

Stärke des L2-Regularisierungsterms. Der L2-Regularisierungsterm wird durch die Stichprobengröße geteilt, wenn er zur Verlustfunktion hinzugefügt wird.

batch_sizeint, Standardwert=’auto’

Größe der Minibatches für stochastische Optimierer. Wenn der Solver ‘lbfgs’ ist, verwendet der Regressor keine Minibatches. Wenn auf „auto“ gesetzt, ist batch_size=min(200, n_samples).

learning_rate{‘constant’, ‘invscaling’, ‘adaptive’}, Standardwert=’constant’

Lernratenplan für Gewichtsaktualisierungen.

  • ‘constant’ ist eine konstante Lernrate, die durch ‘learning_rate_init’ gegeben ist.

  • ‘invscaling’ verringert die Lernrate learning_rate_ bei jedem Zeitschritt ‘t’ mithilfe eines inversen Skalierungsexponenten von ‘power_t’. Effektive_lernrate = learning_rate_init / pow(t, power_t)

  • ‘adaptive’ hält die Lernrate konstant bei ‘learning_rate_init’, solange der Trainingsverlust weiter sinkt. Jedes Mal, wenn zwei aufeinanderfolgende Epochen den Trainingsverlust nicht um mindestens tol verringern oder die Validierungsgenauigkeit nicht um mindestens tol erhöhen, wenn ‘early_stopping’ aktiviert ist, wird die aktuelle Lernrate durch 5 geteilt.

Nur verwendet, wenn solver=’sgd’.

learning_rate_initfloat, Standardwert=0.001

Die verwendete anfängliche Lernrate. Sie steuert die Schrittgröße bei der Aktualisierung der Gewichte. Nur verwendet, wenn solver=’sgd’ oder ‘adam’.

power_tfloat, default=0.5

Der Exponent für die inverse Skalierung der Lernrate. Er wird bei der Aktualisierung der effektiven Lernrate verwendet, wenn die Lernrate auf ‘invscaling’ gesetzt ist. Nur verwendet, wenn solver=’sgd’.

max_iterint, Standard=200

Maximale Anzahl von Iterationen. Der Solver iteriert bis zur Konvergenz (bestimmt durch ‘tol’) oder bis zu dieser Anzahl von Iterationen. Für stochastische Solver (‘sgd’, ‘adam’) beachten Sie, dass dies die Anzahl der Epochen bestimmt (wie oft jeder Datenpunkt verwendet wird), nicht die Anzahl der Gradientenschritte.

shufflebool, Standard=True

Ob Stichproben in jeder Iteration gemischt werden sollen. Nur verwendet, wenn solver=’sgd’ oder ‘adam’.

random_stateint, RandomState instance, default=None

Bestimmt die Zufallszahlengenerierung für die Initialisierung von Gewichten und Bias, die Aufteilung in Trainings- und Testdaten bei aktivierter frühzeitiger Beendigung und die Batch-Stichprobenauswahl, wenn solver=’sgd’ oder ‘adam’ ist. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

tolfloat, Standard=1e-4

Toleranz für die Optimierung. Wenn der Verlust oder die Punktzahl über n_iter_no_change aufeinanderfolgende Iterationen nicht um mindestens tol verbessert wird, es sei denn, learning_rate ist auf ‘adaptive’ gesetzt, wird die Konvergenz als erreicht betrachtet und das Training gestoppt.

verbosebool, default=False

Ob Fortschrittsmeldungen auf stdout gedruckt werden sollen.

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.

momentumfloat, Standardwert=0.9

Impuls für die Gradientenabstiegsaktualisierung. Sollte zwischen 0 und 1 liegen. Nur verwendet, wenn solver=’sgd’.

nesterovs_momentumbool, Standardwert=True

Ob Nesterovs Impuls verwendet werden soll. Nur verwendet, wenn solver=’sgd’ und momentum > 0.

early_stoppingbool, default=False

Ob frühzeitige Beendigung verwendet werden soll, um das Training zu beenden, wenn die Validierungsgenauigkeit nicht mehr steigt. Wenn auf True gesetzt, werden automatisch validation_fraction der Trainingsdaten als Validierungsdaten zurückgestellt und das Training beendet, wenn die Validierungsgenauigkeit nicht mehr um mindestens tol für n_iter_no_change aufeinanderfolgende Epochen steigt. Nur wirksam, wenn solver=’sgd’ oder ‘adam’.

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.

beta_1float, Standardwert=0.9

Exponentielle Abklingrate für Schätzungen des ersten Momentenvektors in Adam, sollte im Bereich [0, 1) liegen. Nur verwendet, wenn solver=’adam’.

beta_2float, Standardwert=0.999

Exponentielle Abklingrate für Schätzungen des zweiten Momentenvektors in Adam, sollte im Bereich [0, 1) liegen. Nur verwendet, wenn solver=’adam’.

epsilonfloat, Standardwert=1e-8

Wert für numerische Stabilität in Adam. Nur verwendet, wenn solver=’adam’.

n_iter_no_changeint, Standard=10

Maximale Anzahl von Epochen, in denen keine Verbesserung von tol erreicht wird. Nur wirksam, wenn solver=’sgd’ oder ‘adam’.

Hinzugefügt in Version 0.20.

max_funint, Standardwert=15000

Nur verwendet, wenn solver=’lbfgs’. Maximale Anzahl von Funktionsaufrufen. Der Solver iteriert bis zur Konvergenz (bestimmt durch tol), die Anzahl der Iterationen erreicht max_iter oder diese Anzahl von Funktionsaufrufen. Beachten Sie, dass die Anzahl der Funktionsaufrufe für den MLPRegressor größer oder gleich der Anzahl der Iterationen sein wird.

Hinzugefügt in Version 0.22.

Attribute:
loss_float

Der aktuelle Verlust, berechnet mit der Verlustfunktion.

best_loss_float

Der minimale Verlust, der vom Solver während des Fits erreicht wurde. Wenn early_stopping=True, wird dieses Attribut auf None gesetzt. Beziehen Sie sich stattdessen auf das gefittete Attribut best_validation_score_. Nur zugänglich, wenn solver=’sgd’ oder ‘adam’.

loss_curve_Liste der Form (n_iter_,)

Verlustwert, ausgewertet am Ende jedes Trainingsschritts. Das i-te Element in der Liste repräsentiert den Verlust bei der i-ten Iteration. Nur zugänglich, wenn solver=’sgd’ oder ‘adam’.

validation_scores_Liste der Form (n_iter_,) oder None

Die Punktzahl bei jeder Iteration auf einem zurückgehaltenen Validierungsdatensatz. Die gemeldete Punktzahl ist der R2-Score. Nur verfügbar, wenn early_stopping=True ist, andernfalls wird das Attribut auf None gesetzt. Nur zugänglich, wenn solver=’sgd’ oder ‘adam’.

best_validation_score_float oder None

Die beste Validierungsgenauigkeit (d.h. R2-Score), die die frühzeitige Beendigung ausgelöst hat. Nur verfügbar, wenn early_stopping=True ist, andernfalls wird das Attribut auf None gesetzt. Nur zugänglich, wenn solver=’sgd’ oder ‘adam’.

t_int

Die Anzahl der Trainingsstichproben, die der Solver während des Fits gesehen hat. Mathematisch gleich n_iters * X.shape[0], bedeutet dies time_step und wird vom Lernratenplaner des Optimierers verwendet.

coefs_Liste der Form (n_layers - 1,)

Das i-te Element in der Liste repräsentiert die Gewichtsmatrix, die der Schicht i entspricht.

intercepts_Liste der Form (n_layers - 1,)

Das i-te Element in der Liste repräsentiert den Bias-Vektor, der der Schicht i+1 entspricht.

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 Anzahl der vom Solver durchgeführten Iterationen.

n_layers_int

Anzahl der Schichten.

n_outputs_int

Anzahl der Ausgaben.

out_activation_str

Name der Ausgabeaktivierungsfunktion.

Siehe auch

BernoulliRBM

Bernoulli Restricted Boltzmann Machine (RBM).

MLPClassifier

Multi-Layer Perceptron Klassifikator.

sklearn.linear_model.SGDRegressor

Lineares Modell, das durch Minimierung eines regularisierten empirischen Verlusts mit SGD angepasst wird.

Anmerkungen

MLPRegressor trainiert iterativ, da in jedem Zeitschritt die partiellen Ableitungen der Verlustfunktion in Bezug auf die Modellparameter berechnet werden, um die Parameter zu aktualisieren.

Es kann auch einen Regularisierungsterm zur Verlustfunktion hinzufügen, der Modellparameter verkleinert, um Überanpassung zu verhindern.

Diese Implementierung arbeitet mit Daten, die als dichte und spärliche Numpy-Arrays von Fließkommawerten dargestellt sind.

Referenzen

Hinton, Geoffrey E. „Connectionist learning procedures.“ Artificial intelligence 40.1 (1989): 185-234.

Glorot, Xavier und Yoshua Bengio. „Understanding the difficulty of training deep feedforward neural networks.“ International Conference on Artificial Intelligence and Statistics. 2010.

He, Kaiming, et al. (2015). „Delving deep into rectifiers: Surpassing human-level performance on imagenet classification.“

Kingma, Diederik und Jimmy Ba (2014). „Adam: A method for stochastic optimization.“

Beispiele

>>> from sklearn.neural_network import MLPRegressor
>>> from sklearn.datasets import make_regression
>>> from sklearn.model_selection import train_test_split
>>> X, y = make_regression(n_samples=200, n_features=20, random_state=1)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y,
...                                                     random_state=1)
>>> regr = MLPRegressor(random_state=1, max_iter=2000, tol=0.1)
>>> regr.fit(X_train, y_train)
MLPRegressor(max_iter=2000, random_state=1, tol=0.1)
>>> regr.predict(X_test[:2])
array([  28.98, -291])
>>> regr.score(X_test, y_test)
0.98
fit(X, y, sample_weight=None)[Quelle]#

Passen Sie das Modell an die Datenmatrix X und die Zielwerte y an.

Parameter:
Xndarray oder sparse matrix der Form (n_samples, n_features)

Die Eingabedaten.

yndarray der Form (n_samples,) oder (n_samples, n_outputs)

Die Zielwerte (Klassenbezeichnungen bei Klassifizierung, reelle Zahlen bei Regression).

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

Stichprobengewichte.

Hinzugefügt in Version 1.7.

Gibt zurück:
selfobject

Gibt ein trainiertes MLP-Modell 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, sample_weight=None)[Quelle]#

Aktualisieren Sie das Modell mit einer einzelnen Iteration über die gegebenen Daten.

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

Die Eingabedaten.

yndarray der Form (n_samples,)

Die Zielwerte.

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

Stichprobengewichte.

Hinzugefügt in Version 1.6.

Gibt zurück:
selfobject

Trainiertes MLP-Modell.

predict(X)[Quelle]#

Vorhersage mit dem Multi-Layer Perceptron Modell.

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

Die Eingabedaten.

Gibt zurück:
yndarray der Form (n_samples, n_outputs)

Die vorhergesagten Werte.

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

Gibt den Bestimmtheitskoeffizienten auf Testdaten zurück.

Der Bestimmtheitskoeffizient, \(R^2\), ist definiert als \((1 - \frac{u}{v})\), wobei \(u\) die Summe der quadrierten Residuen ist ((y_true - y_pred)** 2).sum() und \(v\) die Summe der quadrierten Gesamtabweichungen ist ((y_true - y_true.mean()) ** 2).sum(). Die bestmögliche Punktzahl ist 1.0 und sie kann negativ sein (da das Modell beliebig schlechter sein kann). Ein konstantes Modell, das immer den Erwartungswert von y vorhersagt, unabhängig von den Eingabemerkmalen, würde eine \(R^2\)-Punktzahl von 0.0 erzielen.

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

Teststichproben. Für einige Schätzer kann dies eine vorab berechnete Kernelmatrix oder eine Liste von generischen Objekten sein, stattdessen mit der Form (n_samples, n_samples_fitted), wobei n_samples_fitted die Anzahl der für die Anpassung des Schätzers verwendeten Stichproben ist.

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

Wahre Werte für X.

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

Stichprobengewichte.

Gibt zurück:
scorefloat

\(R^2\) von self.predict(X) bezogen auf y.

Anmerkungen

Die \(R^2\)-Punktzahl, die beim Aufruf von score auf einem Regressor verwendet wird, verwendet multioutput='uniform_average' ab Version 0.23, um mit dem Standardwert von r2_score konsistent zu bleiben. Dies beeinflusst die Methode score aller Multi-Output-Regressoren (mit Ausnahme von MultiOutputRegressor).

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