Glossar gängiger Begriffe und API-Elemente#

Dieses Glossar soll die stillschweigend und explizit angewandten Konventionen in Scikit-learn und seiner API eindeutig darstellen und gleichzeitig als Referenz für Benutzer und Mitwirkende dienen. Es zielt darauf ab, die Konzepte zu beschreiben und entweder ihre entsprechenden APIs zu detaillieren oder auf andere relevante Teile der Dokumentation zu verlinken, die dies tun. Durch die Verlinkung von Glossareinträgen aus der API-Referenz und dem Benutzerhandbuch können wir Redundanz und Inkonsistenz minimieren.

Wir beginnen mit einer Auflistung allgemeiner Konzepte (und solcher, die anderweitig nicht passten), aber spezifischere Sätze zusammenhängender Begriffe sind unten aufgeführt: API-Klassen und Estimator-Typen, Zieltypen, Methoden, Parameter, Attribute, Daten- und Stichprobeneigenschaften.

Allgemeine Konzepte#

1d#
1d array#

Eindimensionales Array. Ein NumPy-Array, dessen `.shape` die Länge 1 hat. Ein Vektor.

2d#
2d array#

Zweidimensionales Array. Ein NumPy-Array, dessen `.shape` die Länge 2 hat. Stellt oft eine Matrix dar.

API#

Bezieht sich sowohl auf die *spezifischen* Schnittstellen für Estimators, die in Scikit-learn implementiert sind, als auch auf die *verallgemeinerten* Konventionen über Estimator-Typen hinweg, wie sie in diesem Glossar und in der Dokumentation für Mitwirkende beschrieben sind.

Die spezifischen Schnittstellen, die die öffentliche API von Scikit-learn bilden, sind größtenteils in der API-Referenz dokumentiert. Wir betrachten jedoch informell alles als öffentliche API, wenn keiner der zur Verfügung stehenden Bezeichner mit `_` beginnt. Wir bemühen uns im Allgemeinen, die Abwärtskompatibilität für alle Objekte in der öffentlichen API aufrechtzuerhalten.

Private APIs, einschließlich Funktionen, Module und Methoden, die mit `_` beginnen, sind nicht als stabil garantiert.

array-like#

Das gebräuchlichste Datenformat für die *Eingabe* in Scikit-learn-Estimators und -Funktionen. Array-like ist jeder Objekttyp, für den `numpy.asarray` numpy.asarray ein Array mit angemessener Form (normalerweise 1- oder 2-dimensional) und angemessenem dtype (normalerweise numerisch) erzeugt.

Dies beinhaltet

  • ein NumPy-Array

  • eine Liste von Zahlen

  • eine Liste von Listen der Länge k mit Zahlen für eine feste Länge k

  • ein `pandas.DataFrame` mit ausschließlich numerischen Spalten

  • eine numerische `pandas.Series`

Andere Array-API-Eingaben, aber siehe Array-API-Unterstützung (experimentell) für den bevorzugten Weg, diese zu verwenden

  • ein PyTorch-Tensor auf dem 'cpu'-Gerät

  • ein JAX-Array

Es schließt aus

  • eine spärliche Matrix

  • ein spärliches Array

  • ein Iterator

  • ein Generator

Beachten Sie, dass die *Ausgabe* von Scikit-learn-Estimators und -Funktionen (z. B. Vorhersagen) im Allgemeinen Arrays oder spärliche Matrizen oder Listen davon sein sollten (wie bei der `predict_proba` des tree.DecisionTreeClassifier für mehrere Ausgaben). Ein Estimator, bei dem `predict()` eine Liste oder eine `pandas.Series` zurückgibt, ist nicht gültig.

attribut#
attribute#

Wir verwenden „Attribut“ hauptsächlich, um zu beschreiben, wie Modellinformationen während des Trainings auf einem Estimator gespeichert werden. Jedes öffentliche Attribut, das auf einer Estimator-Instanz gespeichert ist, muss mit einem alphabetischen Zeichen beginnen und mit einem einzelnen Unterstrich enden, wenn es in `fit` oder `partial_fit` gesetzt wurde. Dies ist, was unter der Dokumentation für *Attribute* eines Estimators aufgeführt ist. Die in Attributen gespeicherten Informationen sind normalerweise entweder: hinreichende Statistiken, die für Vorhersagen oder Transformationen verwendet werden; transduktive Ausgaben wie `labels_` oder `embedding_`; oder Diagnoseinformationen wie `feature_importances_`. Gängige Attribute sind weiter unten aufgeführt.

Ein öffentliches Attribut kann denselben Namen wie ein Konstruktorparameter haben, mit angehängtem Unterstrich. Dies wird verwendet, um eine validierte oder geschätzte Version der Benutzereingabe zu speichern. Zum Beispiel wird `decomposition.PCA` mit einem Parameter `n_components` konstruiert. Daraus schätzt PCA, zusammen mit anderen Parametern und den Daten, das Attribut `n_components_`.

Weitere private Attribute, die bei der Vorhersage/Transformation/usw. verwendet werden, können ebenfalls beim Training gesetzt werden. Diese beginnen mit einem einzelnen Unterstrich und sind nicht für den öffentlichen Zugriff als stabil garantiert.

Ein öffentliches Attribut einer Estimator-Instanz, das nicht mit einem Unterstrich endet, sollte der gespeicherte, unveränderte Wert eines `__init__`-Parameters mit demselben Namen sein. Aufgrund dieser Äquivalenz werden diese unter der Dokumentation für *Parameter* eines Estimators aufgeführt.

backwards compatibility#

Wir bemühen uns im Allgemeinen, die Abwärtskompatibilität aufrechtzuerhalten (d. h. Schnittstellen und Verhaltensweisen können erweitert, aber nicht geändert oder entfernt werden), von Release zu Release, aber dies hat einige Ausnahmen

Nur öffentliche API

Das Verhalten von Objekten, auf die über private Bezeichner (solche, die mit `_` beginnen) zugegriffen wird, kann zwischen den Versionen beliebig geändert werden.

Wie dokumentiert

Wir gehen im Allgemeinen davon aus, dass die Benutzer die dokumentierten Parametertypen und -bereiche eingehalten haben. Wenn die Dokumentation eine Liste verlangt und der Benutzer ein Tupel angibt, garantieren wir kein konsistentes Verhalten von Version zu Version.

Veraltung

Verhaltensweisen können nach einer Veralterungsperiode (normalerweise zwei Releases lang) geändert werden. Warnungen werden über das `warnings`-Modul von Python ausgegeben.

Schlüsselwortargumente

Wir können manchmal davon ausgehen, dass alle optionalen Parameter (außer X und y für `fit` und ähnliche Methoden) nur als Schlüsselwortargumente übergeben werden und ihre Position verschoben werden kann.

Fehlerbehebungen und Verbesserungen

Fehlerbehebungen und – seltener – Verbesserungen können das Verhalten von Estimators ändern, einschließlich der Vorhersagen eines auf denselben Daten trainierten Estimators und `random_state`. Wenn dies geschieht, versuchen wir, es in der Änderungsliste klar zu vermerken.

Serialisierung

Wir geben keine Garantie, dass das Pickeln eines Estimators in einer Version es ermöglicht, ihn in der nachfolgenden Version zu einem äquivalenten Modell zu entpickeln. (Für Estimators im Paket `sklearn` geben wir eine Warnung aus, wenn dieser Entpickelungsvorgang versucht wird, auch wenn er möglicherweise funktioniert.) Siehe Sicherheits- & Wartungsbeschränkungen.

utils.estimator_checks.check_estimator

Wir bieten begrenzte Rückwärtskompatibilitätszusicherungen für die Estimator-Checks: Wir können zusätzliche Anforderungen an Estimators stellen, die mit dieser Funktion getestet werden, normalerweise, wenn diese informell angenommen, aber nicht formell getestet wurden.

Trotz dieses informellen Vertrags mit unseren Benutzern wird die Software wie besehen gemäß der Lizenz bereitgestellt. Wenn eine Veröffentlichung versehentlich Änderungen einführt, die nicht abwärtskompatibel sind, werden diese als Software-Regressionen bezeichnet.

callable#

Eine Funktion, eine Klasse oder ein Objekt, das die Methode `__call__` implementiert; alles, was True zurückgibt, wenn das Argument von `callable()`.

categorical feature#

Ein kategorisches oder nominales Merkmal ist eines, das eine endliche Menge diskreter Werte über die Datenpopulation hinweg hat. Diese werden häufig als Spalten von Ganzzahlen oder Zeichenketten dargestellt. Zeichenketten werden von den meisten Scikit-learn-Estimators abgelehnt, und Ganzzahlen werden als ordinale oder zählende Werte behandelt. Für die Verwendung mit den meisten Estimators sollten kategoriale Variablen one-hot-codiert werden. Bemerkenswerte Ausnahmen sind baumbasierte Modelle wie Random Forests und Gradient Boosting-Modelle, die oft besser und schneller mit ganzzahligen kategorialen Variablen arbeiten. `OrdinalEncoder` hilft bei der Codierung von zeichenkettenbasierten kategorialen Merkmalen als ordinale Ganzzahlen, und `OneHotEncoder` kann verwendet werden, um kategoriale Merkmale one-hot zu codieren. Siehe auch Codierung kategorialer Merkmale und das Paket `category_encoders` für Werkzeuge zur Codierung kategorialer Merkmale.

clone#
cloned#

Um eine Estimator-Instanz zu kopieren und eine neue mit identischen Parametern, aber ohne trainierte Attribute zu erstellen, unter Verwendung von `clone`.

Wenn `fit` aufgerufen wird, klont ein Meta-Estimator normalerweise eine gekapselte Estimator-Instanz, bevor die geklonte Instanz trainiert wird. (Ausnahmen, aus historischen Gründen, sind `Pipeline` und `FeatureUnion`.)

Wenn der `random_state`-Parameter des Estimators eine Ganzzahl ist (oder wenn der Estimator keinen `random_state`-Parameter hat), wird ein *exakter Klon* zurückgegeben: der Klon und der ursprüngliche Estimator liefern exakt dieselben Ergebnisse. Andernfalls wird ein *statistischer Klon* zurückgegeben: der Klon kann zu anderen Ergebnissen als der ursprüngliche Estimator führen. Weitere Details finden Sie unter Steuerung von Zufälligkeit.

common tests#

Dies bezieht sich auf die Tests, die für fast jede Estimator-Klasse in Scikit-learn durchgeführt werden, um zu überprüfen, ob sie grundlegende API-Konventionen einhalten. Sie stehen für externe Nutzung über `utils.estimator_checks.check_estimator` oder `utils.estimator_checks.parametrize_with_checks` zur Verfügung, wobei die meiste Implementierung in `sklearn/utils/estimator_checks.py` liegt.

Hinweis: Einige Ausnahmen von der üblichen Testregelung sind derzeit fest im Code verankert, aber wir hoffen, dies zu ersetzen, indem wir ausnahmefreundliches Verhalten auf dem Estimator mithilfe semantischer Estimator-Tags markieren.

cross-fitting#
cross fitting#

Eine Resampling-Methode, die iterativ Daten in sich gegenseitig ausschließende Teilmengen aufteilt, um zwei Stufen zu trainieren. Während der ersten Stufe ermöglichen die sich gegenseitig ausschließenden Teilmengen, dass Vorhersagen oder Transformationen auf Daten berechnet werden, die während des Trainings nicht gesehen wurden. Die berechneten Daten werden dann in der zweiten Stufe verwendet. Ziel ist es, zu vermeiden, dass irgendein Overfitting in der ersten Stufe zu einer Verzerrung der Eingabedatenverteilung der zweiten Stufe führt. Beispiele für die Anwendung finden Sie unter: `TargetEncoder`, `StackingClassifier`, `StackingRegressor` und `CalibratedClassifierCV`.

cross-validation#
cross validation#

Eine Resampling-Methode, die iterativ Daten in sich gegenseitig ausschließende „Trainings“- und „Test“-Teilmengen aufteilt, damit die Modellleistung auf ungesehenen Daten bewertet werden kann. Dies schont Daten, da die Notwendigkeit, einen „Validierungs“-Datensatz zurückzuhalten, entfällt und die Variabilität berücksichtigt wird, da in der Regel mehrere Durchläufe der Kreuzvalidierung durchgeführt werden. Weitere Einzelheiten finden Sie im Benutzerhandbuch.

deprecation#

Wir verwenden Veraltung (deprecation), um unsere Zusicherungen zur Abwärtskompatibilität langsam zu verletzen, normalerweise um

  • den Standardwert eines Parameters zu ändern; oder

  • einen Parameter, ein Attribut, eine Methode, eine Klasse usw. zu entfernen.

Wir geben in der Regel eine Warnung aus, wenn ein veraltetes Element verwendet wird, obwohl es hierfür Einschränkungen geben kann. Zum Beispiel geben wir eine Warnung aus, wenn jemand einen veralteten Parameter setzt, aber möglicherweise nicht, wenn er auf das Attribut dieses Parameters auf der Estimator-Instanz zugreift.

Siehe das Handbuch für Mitwirkende.

dimensionality#

Kann sich auf die Anzahl der Merkmale (d. h. `n_features`) oder Spalten in einer 2D-Merkmalsmatrix beziehen. Dimensionen werden jedoch auch verwendet, um sich auf die Länge der Form eines NumPy-Arrays zu beziehen, wodurch ein 1D-Array von einer 2D-Matrix unterschieden wird.

docstring#

Die eingebettete Dokumentation für ein Modul, eine Klasse, eine Funktion usw., normalerweise im Code als Zeichenkette am Anfang der Definition des Objekts und zugänglich als `__doc__`-Attribut des Objekts.

Wir versuchen, PEP257 einzuhalten und NumpyDoc-Konventionen zu folgen.

double underscore#
double underscore notation#

Bei der Angabe von Parameternamen für verschachtelte Estimators kann `__` verwendet werden, um in einigen Kontexten zwischen Eltern- und Kindelement zu trennen. Die gebräuchlichste Verwendung ist bei der Festlegung von Parametern über einen Meta-Estimator mit `set_params` und damit bei der Angabe eines Suchrasters in der Parametersuche. Siehe `parameter`. Es wird auch in `pipeline.Pipeline.fit` verwendet, um Stichprobeneigenschaften an die `fit`-Methoden von Estimators in der Pipeline zu übergeben.

dtype#
data type#

NumPy-Arrays gehen von einem homogenen Datentyp aus, der im `.dtype`-Attribut eines Arrays (oder einer spärlichen Matrix) verfügbar ist. Wir gehen im Allgemeinen von einfachen Datentypen für Scikit-learn-Daten aus: Gleitkomma oder Ganzzahl. Wir unterstützen möglicherweise Objekt- oder Zeichenketten-Datentypen für Arrays vor der Codierung oder Vektorisierung. Unsere Estimators funktionieren beispielsweise nicht mit Struktur-Arrays.

Unsere Dokumentation kann manchmal Informationen über die Genauigkeit des dtypes liefern, z. B. `np.int32`, `np.int64` usw. Wenn die Genauigkeit angegeben ist, bezieht sie sich auf den NumPy-dtype. Wenn eine beliebige Genauigkeit verwendet wird, bezieht sich die Dokumentation auf den dtype `integer` oder `floating`. Beachten Sie, dass die Genauigkeit in diesem Fall plattformabhängig sein kann. Der dtype `numeric` bezieht sich auf die Akzeptanz von sowohl `integer` als auch `floating`.

Bei der Wahl zwischen 64-Bit-dtype (d. h. `np.float64` und `np.int64`) und 32-Bit-dtype (d. h. `np.float32` und `np.int32`) handelt es sich um einen Kompromiss zwischen Effizienz und Genauigkeit. Die 64-Bit-Typen liefern aufgrund ihres geringeren Gleitkommafehlers genauere Ergebnisse, erfordern aber mehr Rechenressourcen, was zu langsameren Operationen und erhöhtem Speicherverbrauch führt. Im Gegensatz dazu versprechen 32-Bit-Typen eine verbesserte Betriebsgeschwindigkeit und geringeren Speicherverbrauch, führen aber zu größeren Gleitkommafehlern. Die Effizienzverbesserungen hängen von Low-Level-Optimierungen wie Vektorisierung, Single Instruction Multiple Data (SIMD) oder Cache-Optimierung ab, aber entscheidend von der Kompatibilität des verwendeten Algorithmus.

Insbesondere sollte die Wahl der Genauigkeit berücksichtigen, ob der verwendete Algorithmus `np.float32` effektiv nutzen kann. Einige Algorithmen, insbesondere bestimmte Minimierungsverfahren, sind ausschließlich für `np.float64` kodiert, was bedeutet, dass selbst wenn `np.float32` übergeben wird, eine automatische Konvertierung zurück zu `np.float64` ausgelöst wird. Dies negiert nicht nur die beabsichtigte Recheneinsparung, sondern führt auch zu zusätzlichem Overhead, wodurch Operationen mit `np.float32` aufgrund dieses zusätzlichen Konvertierungsschritts unerwartet langsamer und speicherintensiver werden.

duck typing#

Wir versuchen, Duck Typing anzuwenden, um zu bestimmen, wie einige Eingabewerte behandelt werden (z. B. um zu prüfen, ob ein gegebener Estimator ein Klassifikator ist). Das heißt, wir vermeiden die Verwendung von `isinstance`, wo immer möglich, und verlassen uns auf das Vorhandensein oder Fehlen von Attributen, um das Verhalten eines Objekts zu bestimmen. Bei diesem Ansatz ist etwas Nuancen erforderlich

  • Bei einigen Estimators ist ein Attribut möglicherweise erst nach dem Trainieren verfügbar. Zum Beispiel können wir nicht a priori bestimmen, ob `predict_proba` in einer Grid-Suche verfügbar ist, bei der das Grid abwechselnd zwischen einem probabilistischen und einem nicht-probabilistischen Prädiktor im letzten Schritt der Pipeline wechselt. Im Folgenden können wir nur feststellen, ob `clf` nach dem Trainieren auf einigen Daten probabilistisch ist

    >>> from sklearn.model_selection import GridSearchCV
    >>> from sklearn.linear_model import SGDClassifier
    >>> clf = GridSearchCV(SGDClassifier(),
    ...                    param_grid={'loss': ['log_loss', 'hinge']})
    

    Dies bedeutet, dass wir Duck-Typed-Attribute nur nach dem Trainieren prüfen können und dass wir darauf achten müssen, dass Meta-Estimators Attribute nur entsprechend dem Zustand des zugrunde liegenden Estimators nach dem Trainieren präsentieren.

  • Das Prüfen, ob ein Attribut vorhanden ist (mit `hasattr`), ist im Allgemeinen genauso teuer wie das Abrufen des Attributs (`getattr` oder Punktnotation). In einigen Fällen kann das Abrufen des Attributs tatsächlich teuer sein (z. B. für einige Implementierungen von `feature_importances_`, was auf einen Designfehler der API hindeuten könnte). Code, der `hasattr` gefolgt von `getattr` ausführt, sollte daher vermieden werden; `getattr` innerhalb eines `try-except`-Blocks wird bevorzugt.

  • Zur Bestimmung einiger Aspekte der Erwartungen eines Estimators oder der Unterstützung für ein bestimmtes Merkmal verwenden wir stattdessen Estimator-Tags.

early stopping#

Dies besteht darin, eine iterative Optimierungsmethode vor der Konvergenz des Trainingsverlusts zu stoppen, um Overfitting zu vermeiden. Dies geschieht im Allgemeinen durch Überwachung der Generalisierungsbewertung auf einem Validierungsdatensatz. Wenn verfügbar, wird es über den Parameter `early_stopping` oder durch Setzen eines positiven `n_iter_no_change` aktiviert.

estimator instance#

Wir verwenden diese Terminologie manchmal, um eine Estimator-Klasse von einer konstruierten Instanz zu unterscheiden. Zum Beispiel ist in Folgendem `cls` eine Estimator-Klasse, während `est1` und `est2` Instanzen sind

cls = RandomForestClassifier
est1 = cls()
est2 = RandomForestClassifier()
examples#

Wir bemühen uns, Beispiele für die grundlegende Nutzung der meisten Funktionen und Klassen in der API zu geben

  • als Doctests in ihren Docstrings (d. h. innerhalb des `sklearn/`-Bibliotheks-Codes selbst).

  • als Beispiele in der Beispielgalerie, gerendert (mit sphinx-gallery) aus Skripten im Verzeichnis `examples/`, die Schlüsselfunktionen oder Parameter des Estimators/der Funktion veranschaulichen. Diese sollten auch im Benutzerhandbuch referenziert werden.

  • manchmal im Benutzerhandbuch (erstellt aus `doc/`) neben einer technischen Beschreibung des Estimators.

experimental#

Ein experimentelles Werkzeug ist bereits nutzbar, aber seine öffentliche API, wie z. B. Standardparameterwerte oder trainierte Attribute, kann sich in zukünftigen Versionen ohne die übliche Richtlinie für Veraltungswarnungen ändern.

evaluation metric#
evaluation metrics#

Evaluierungsmetriken geben ein Maß dafür, wie gut ein Modell performt. Wir können diesen Begriff speziell verwenden, um uns auf die Funktionen in metrics zu beziehen (wobei pairwise ignoriert wird), im Gegensatz zur score-Methode und der scoring-API, die bei der Kreuzvalidierung verwendet wird. Siehe Metriken und Scoring: Quantifizierung der Vorhersagequalität.

Diese Funktionen akzeptieren normalerweise eine Ground Truth (oder die Rohdaten, bei denen die Metrik das Clustering ohne Ground Truth evaluiert) und eine Vorhersage, sei es die Ausgabe von predict (y_pred), von predict_proba (y_proba) oder einer beliebigen Score-Funktion, einschließlich decision_function (y_score). Funktionen werden normalerweise so benannt, dass sie mit _score enden, wenn ein höherer Score ein besseres Modell anzeigt, und mit _loss, wenn ein niedrigerer Score ein besseres Modell anzeigt. Diese Vielfalt an Schnittstellen motiviert die Scoring-API.

Beachten Sie, dass einige Schätzer Metriken berechnen können, die nicht in metrics enthalten sind und schätzerspezifisch sind, insbesondere Modell-Likelihoods.

Estimator-Tags#

Estimator-Tags beschreiben bestimmte Fähigkeiten eines Schätzers. Dies würde einige Laufzeitverhalten basierend auf der Inspektion von Schätzern ermöglichen, erlaubt aber auch jedem Schätzer, auf entsprechende Invarianzen getestet zu werden, während er von anderen gemeinsamen Tests ausgenommen wird.

Einige Aspekte von Estimator-Tags werden derzeit durch das Duck-Typing von Methoden wie predict_proba und durch einige spezielle Attribute von Estimator-Objekten bestimmt.

Für detailliertere Informationen siehe Estimator Tags.

Merkmal#
Merkmale#
Merkmalvektor#

Abstrakt ist ein Merkmal eine Funktion (im mathematischen Sinne), die ein abgetastetes Objekt auf eine numerische oder kategorische Größe abbildet. "Merkmal" wird auch häufig verwendet, um sich auf diese Größen zu beziehen, da es die einzelnen Elemente eines Vektors darstellt, der eine Stichprobe repräsentiert. In einer Datenmatrix werden Merkmale als Spalten dargestellt: Jede Spalte enthält das Ergebnis der Anwendung einer Merkmalsfunktion auf eine Reihe von Stichproben.

Anderswo sind Merkmale als Attribute, Prädiktoren, Regressoren oder unabhängige Variablen bekannt.

Fast alle Schätzer in Scikit-learn gehen davon aus, dass Merkmale numerisch, endlich und nicht fehlend sind, selbst wenn sie semantisch unterschiedliche Domänen und Verteilungen haben (kategorial, ordinal, zählwerte, reellwertig, Intervall). Siehe auch kategoriales Merkmal und fehlende Werte.

n_features gibt die Anzahl der Merkmale in einem Datensatz an.

Fitting#

Aufrufen von fit (oder fit_transform, fit_predict, etc.) auf einem Schätzer.

Fit#

Der Zustand eines Schätzers nach dem Fitting.

Es gibt kein konventionelles Verfahren zur Überprüfung, ob ein Schätzer fit ist. Ein Schätzer, der nicht fit ist, sollte jedoch

  • bei Aufruf einer Vorhersagemethode (predict, transform, etc.) eine exceptions.NotFittedError auslösen. ( utils.validation.check_is_fitted wird intern zu diesem Zweck verwendet.)

  • sollte keine Attribute haben, die mit einem alphabetischen Zeichen beginnen und mit einem Unterstrich enden. (Beachten Sie, dass ein Deskriptor für das Attribut noch in der Klasse vorhanden sein kann, aber hasattr sollte False zurückgeben)

Funktion#

Wir bieten Ad-hoc-Funktionsschnittstellen für viele Algorithmen an, während Estimator-Klassen eine konsistentere Schnittstelle bieten.

Insbesondere kann Scikit-learn eine Funktionsschnittstelle bereitstellen, die ein Modell an einige Daten anpasst und die gelernten Modellparameter zurückgibt, wie in linear_model.enet_path. Für transduktive Modelle gibt dies auch die Einbettung oder Cluster-Labels zurück, wie in manifold.spectral_embedding oder cluster.dbscan. Viele Vorverarbeitungs-Transformer bieten ebenfalls eine Funktionsschnittstelle, ähnlich dem Aufruf von fit_transform, wie in preprocessing.maxabs_scale. Benutzer sollten vorsichtig sein, Datenlecks zu vermeiden, wenn sie diese fit_transform-äquivalenten Funktionen verwenden.

Wir haben keine strenge Richtlinie, wann Funktionsformen von Schätzern bereitgestellt werden sollen und wann nicht, aber die Maintainer sollten die Konsistenz mit bestehenden Schnittstellen berücksichtigen und ob die Bereitstellung einer Funktion Benutzer von Best Practices (in Bezug auf Datenlecks usw.) ablenken würde.

Siehe Beispiele.

Hyperparameter#
Hyper-Parameter#

Siehe Parameter.

Imputieren#
Imputation#

Die meisten Algorithmen des maschinellen Lernens erfordern, dass ihre Eingaben keine fehlenden Werte aufweisen und funktionieren nicht, wenn diese Anforderung verletzt wird. Algorithmen, die versuchen, fehlende Werte zu füllen (oder zu imputieren), werden als Imputationsalgorithmen bezeichnet.

Indexierbar#

Ein array-ähnliches Objekt, eine dünnbesetzte Matrix, ein Pandas DataFrame oder eine Sequenz (normalerweise eine Liste).

Induktion#
Induktiv#

Induktives (im Gegensatz zu transduktivem) maschinelles Lernen baut ein Modell von einigen Daten auf, das dann auf neue Instanzen angewendet werden kann. Die meisten Schätzer in Scikit-learn sind induktiv und verfügen über predict- und/oder transform-Methoden.

joblib#

Eine Python-Bibliothek (https://joblib.readthedocs.io), die in Scikit-learn verwendet wird, um einfache Parallelität und Caching zu ermöglichen. Joblib ist darauf ausgerichtet, effizient mit Numpy-Arrays zu arbeiten, z. B. durch die Verwendung von Memory Mapping. Weitere Informationen finden Sie unter Parallelität.

Label-Indikatormatrix#
Multilabel-Indikatormatrix#
Multilabel-Indikatormatrizen#

Das Format, das zur Darstellung von Multilabel-Daten verwendet wird, bei dem jede Zeile eines 2D-Arrays oder einer dünnbesetzten Matrix einer Stichprobe entspricht, jede Spalte einer Klasse und jedes Element 1 ist, wenn die Stichprobe mit der Klasse gekennzeichnet ist, und 0, wenn nicht.

Leckage#
Datenlecks#

Ein Problem bei der Kreuzvalidierung, bei dem die Generalisierungsleistung überschätzt werden kann, da Wissen über die Testdaten unbeabsichtigt in das Training eines Modells einbezogen wurde. Dies ist beispielsweise ein Risiko, wenn ein Transformer auf den gesamten Datensatz angewendet wird und nicht auf jeden Trainingsanteil in einer Kreuzvalidierungsaufteilung.

Wir bemühen uns, Schnittstellen bereitzustellen (wie pipeline und model_selection), die den Benutzer vor Datenlecks schützen.

Memmapping#
Speicherabbild#
Memory Mapping#

Eine speichereffiziente Strategie, die Daten auf der Festplatte belässt, anstatt sie in den Hauptspeicher zu kopieren. Speicherabbilder können für Arrays erstellt werden, die gelesen, geschrieben oder beides werden können, mithilfe von numpy.memmap. Bei der Verwendung von joblib zur Parallelisierung von Operationen in Scikit-learn kann es große Arrays automatisch memmappen, um den Overhead durch Speicherduplizierung bei der Multiprocessing zu reduzieren.

Fehlende Werte#

Die meisten Scikit-learn-Schätzer arbeiten nicht mit fehlenden Werten. Wenn sie dies tun (z. B. in impute.SimpleImputer), ist NaN die bevorzugte Darstellung fehlender Werte in Float-Arrays. Wenn das Array den Integer-Datentyp hat, kann NaN nicht dargestellt werden. Aus diesem Grund unterstützen wir die Angabe eines anderen Werts für missing_values, wenn Imputation oder Lernen im Integer-Raum durchgeführt werden kann. Unbeschriftete Daten sind ein Sonderfall von fehlenden Werten im Ziel.

n_features#

Die Anzahl der Merkmale.

n_outputs#

Die Anzahl der Ausgaben im Ziel.

n_samples#

Die Anzahl der Stichproben.

n_targets#

Synonym für n_outputs.

Narrative Doku#
Narrative Dokumentation#

Ein Alias für Benutzerhandbuch, d.h. Dokumentation, die in doc/modules/ geschrieben ist. Im Gegensatz zum API-Referenz, die über Docstrings bereitgestellt wird, zielt das Benutzerhandbuch darauf ab,

  • Werkzeuge, die von Scikit-learn bereitgestellt werden, thematisch oder nach Nutzung zusammenzufassen;

  • zu motivieren, warum jemand ein bestimmtes Werkzeug verwenden würde, oft durch Vergleiche;

  • sowohl intuitive als auch technische Beschreibungen von Werkzeugen bereitzustellen;

  • Beispiele für die Verwendung von Schlüsselfunktionen eines Werkzeugs bereitzustellen oder dorthin zu verlinken.

np#

Eine Abkürzung für Numpy aufgrund der konventionellen Importanweisung.

import numpy as np
Online-Lernen#

Wo ein Modell iterativ aktualisiert wird, indem jeder Stapel von Ground Truth Zielen kurz nach der Vorhersage des entsprechenden Datenstapels empfangen wird. Intrinsisch muss das Modell nach jedem Stapel für Vorhersagen verwendbar sein. Siehe partial_fit.

Out-of-Core#

Eine Effizienzstrategie, bei der nicht alle Daten gleichzeitig im Hauptspeicher gehalten werden, normalerweise durch Verarbeitung von Lernvorgängen auf Datenstapeln. Siehe partial_fit.

Ausgaben#

Einzelne skalare/kategorische Variablen pro Stichprobe im Ziel. Zum Beispiel entspricht bei der Multilabel-Klassifizierung jede mögliche Bezeichnung einer binären Ausgabe. Auch *Antworten*, *Aufgaben* oder *Ziele* genannt. Siehe Multiklassen-Multi-Ausgabe und kontinuierliche Multi-Ausgabe.

Paar#

Ein Tupel der Länge zwei.

Parameter#
Parameter#
Param#
Params#

Wir verwenden *Parameter* meist, um uns auf die Aspekte eines Schätzers zu beziehen, die bei seiner Konstruktion angegeben werden können. Zum Beispiel sind max_depth und random_state Parameter von RandomForestClassifier. Parameter des Konstruktors eines Schätzers werden unverändert als Attribute auf der Schätzerinstanz gespeichert und beginnen konventionell mit einem alphabetischen Zeichen und enden mit einem alphanumerischen Zeichen. Die Konstruktorparameter jedes Schätzers werden in der Docstring des Schätzers beschrieben.

Wir verwenden Parameter nicht im statistischen Sinne, wo Parameter Werte sind, die ein Modell spezifizieren und aus Daten geschätzt werden können. Was wir als Parameter bezeichnen, könnten das sein, was Statistiker Hyperparameter für das Modell nennen: Aspekte zur Konfiguration der Modellstruktur, die oft nicht direkt aus Daten gelernt werden. Unsere Parameter werden jedoch auch verwendet, um Modellierungsoperationen vorzuschreiben, die das gelernte Modell nicht beeinflussen, wie z. B. n_jobs zur Steuerung der Parallelität.

Wenn wir über die Parameter eines Meta-Schätzers sprechen, können wir auch die Parameter der vom Meta-Schätzer umschlossenen Schätzer einschließen. Normalerweise werden diese verschachtelten Parameter durch Verwendung eines Doppelunterstrichs (__) bezeichnet, um zwischen dem Schätzer als Parameter und seinem Parameter zu trennen. Somit hat clf = BaggingClassifier(estimator=DecisionTreeClassifier(max_depth=3)) einen tiefen Parameter estimator__max_depth mit dem Wert 3, der mit clf.estimator.max_depth oder clf.get_params()['estimator__max_depth'] zugänglich ist.

Die Liste der Parameter und ihrer aktuellen Werte kann aus einer Schätzerinstanz mithilfe ihrer get_params-Methode abgerufen werden.

Zwischen Konstruktion und Fitting können Parameter mit set_params geändert werden. Um dies zu ermöglichen, werden Parameter normalerweise nicht validiert oder geändert, wenn der Schätzer konstruiert wird oder wenn jeder Parameter gesetzt wird. Die Parameter validierung erfolgt, wenn fit aufgerufen wird.

Gemeinsame Parameter sind weiter unten aufgelistet.

Paarweise Metrik#
Paarweise Metriken#

Im weiteren Sinne definiert eine paarweise Metrik eine Funktion zur Messung der Ähnlichkeit oder Unähnlichkeit zwischen zwei Stichproben (wobei jede üblicherweise als Merkmalvektor dargestellt wird). Wir stellen insbesondere Implementierungen von Distanzmetriken (sowie von unzulässigen Metriken wie Cosinus-Distanz) über metrics.pairwise_distances und von Kernelfunktionen (einer eingeschränkten Klasse von Ähnlichkeitsfunktionen) in metrics.pairwise.pairwise_kernels bereit. Diese können paarweise Distanzmatrizen berechnen, die symmetrisch sind und somit Daten redundant speichern.

Siehe auch vorkompiliert und Metrik.

Beachten Sie, dass wir für die meisten Distanzmetriken auf Implementierungen von scipy.spatial.distance zurückgreifen, diese aber in unserem Kontext aus Effizienzgründen neu implementieren können. Die Schnittstelle metrics.DistanceMetric wird verwendet, um Distanzmetriken für die Integration mit effizienter Nachbarschaftssuche zu implementieren.

pd#

Eine Abkürzung für Pandas aufgrund der konventionellen Importanweisung.

import pandas as pd
Vorkompiliert#

Wenn Algorithmen auf paarweise Metriken angewiesen sind und nur aus paarweise Metriken berechnet werden können, erlauben wir oft dem Benutzer anzugeben, dass das bereitgestellte X bereits im paarweisen (Un-)Ähnlichkeitsraum und nicht im Merkmalsraum liegt. Das heißt, wenn es an fit übergeben wird, ist es eine quadratische, symmetrische Matrix, bei der jeder Vektor die (Un-)Ähnlichkeit zu jeder Stichprobe angibt, und wenn es an Vorhersage-/Transformationsmethoden übergeben wird, entspricht jede Zeile einer Teststichprobe und jede Spalte einer Trainingsstichprobe.

Die Verwendung von vorkompiliertem X wird normalerweise angezeigt, indem ein Parameter metric, affinity oder kernel auf den String 'precomputed' gesetzt wird. In diesem Fall sollte der Schätzer das pairwise-Schätzer-Tag auf True setzen.

Rechteckig#

Daten, die als Matrix mit Stichproben auf der ersten Achse und einer festen, endlichen Menge von Merkmalen auf der zweiten Achse dargestellt werden können, werden als rechteckig bezeichnet.

Dieser Begriff schließt Stichproben mit nicht-vektoriellen Strukturen aus, wie z. B. Text, ein Bild beliebiger Größe, eine Zeitreihe beliebiger Länge, eine Menge von Vektoren usw. Der Zweck eines Vektorisierers ist es, rechteckige Formen solcher Daten zu erzeugen.

Stichprobe#
Stichproben#

Wir verwenden diesen Begriff normalerweise als Nomen, um einen einzelnen Merkmalvektor zu bezeichnen. Anderswo wird eine Stichprobe als Instanz, Datenpunkt oder Beobachtung bezeichnet. n_samples gibt die Anzahl der Stichproben in einem Datensatz an, d.h. die Anzahl der Zeilen in einem Datenarray X. Beachten Sie, dass diese Definition im maschinellen Lernen Standard ist und von der Statistik abweicht, wo sie *eine Menge von Individuen oder Objekten bezeichnet, die gesammelt oder ausgewählt wurden*.

Stichprobeneigenschaft#
Stichprobeneigenschaften#

Eine Stichprobeneigenschaft sind Daten für jede Stichprobe (z. B. ein Array der Länge n_samples), die neben, aber getrennt von den Merkmalen (X) und dem Ziel (y) an eine Schätzermethode oder eine ähnliche Funktion übergeben werden. Das prominenteste Beispiel ist sample_weight; siehe weitere Beispiele unter Daten und Stichprobeneigenschaften.

Ab Version 0.19 haben wir keinen konsistenten Ansatz für den Umgang mit Stichprobeneigenschaften und deren Weiterleitung in Meta-Schätzern, obwohl oft ein Parameter fit_params verwendet wird.

scikit-learn-contrib#

Eine Plattform zur Veröffentlichung von Scikit-learn-kompatiblen Bibliotheken, die von den Kernentwicklern und der Contrib-Community weitgehend autorisiert sind, aber nicht vom Kernentwicklerteam gepflegt werden. Siehe https://scikit-learn-contrib.github.io.

Scikit-learn Enhancement Proposals#
SLEP#
SLEPs#

Änderungen der API-Prinzipien und Änderungen von Abhängigkeiten oder unterstützten Versionen erfolgen über eine SLEP und folgen dem in Scikit-learn Governance und Entscheidungsfindung beschriebenen Entscheidungsprozess. Bei allen Abstimmungen muss ein Vorschlag öffentlich gemacht und diskutiert worden sein, bevor abgestimmt wird. Ein solcher Vorschlag muss ein konsolidiertes Dokument in Form eines „Scikit-Learn Enhancement Proposal“ (SLEP) sein und keine lange Diskussion in einem Issue. Eine SLEP muss als Pull-Request an die Enhancement Proposals unter Verwendung der SLEP-Vorlage eingereicht werden.

Semi-überwacht#
Semi-überwachtes Lernen#
Semisupervised#

Lernen, bei dem die erwartete Vorhersage (Label oder Ground Truth) nur für einige Stichproben verfügbar ist, die beim Fitting des Modells als Trainingsdaten bereitgestellt werden. Wir wenden konventionell das Label -1 auf unbeschriftete Stichproben in der semi-überwachten Klassifizierung an.

Dünnbesetzte Matrix#
Dünnbesetzter Graph#

Eine Darstellung von zweidimensionalen numerischen Daten, die speichereffizienter ist als das entsprechende dichte Numpy-Array, bei dem fast alle Elemente Null sind. Wir verwenden das scipy.sparse-Framework, das mehrere zugrunde liegende dünnbesetzte Datenrepräsentationen oder *Formate* bereitstellt. Einige Formate sind für bestimmte Aufgaben effizienter als andere, und wenn ein bestimmtes Format besondere Vorteile bietet, versuchen wir, dies in den Scikit-learn-Parameterbeschreibungen zu dokumentieren.

Einige dünnbesetzte Matrixformate (insbesondere CSR, CSC, COO und LIL) unterscheiden zwischen *impliziten* und *expliziten* Nullen. Explizite Nullen werden in der Datenstruktur gespeichert (d. h. sie verbrauchen Speicher in einem data-Array), während implizite Nullen jedem Element entsprechen, das nicht anderweitig in expliziter Speicherung definiert ist.

Zwei Semantiken für dünnbesetzte Matrizen werden in Scikit-learn verwendet.

Matrix-Semantik

Die dünnbesetzte Matrix wird als Array interpretiert, bei dem implizite und explizite Nullen als die Zahl 0 interpretiert werden. Dies ist die am häufigsten verwendete Interpretation, z. B. wenn dünnbesetzte Matrizen für Merkmalsmatrizen oder Multilabel-Indikatormatrizen verwendet werden.

Graph-Semantik

Wie bei scipy.sparse.csgraph werden explizite Nullen als die Zahl 0 interpretiert, aber implizite Nullen kennzeichnen einen maskierten oder fehlenden Wert, wie z. B. das Fehlen einer Kante zwischen zwei Knoten eines Graphen, wobei ein expliziter Wert das Gewicht einer Kante angibt. Diese Interpretation wird zur Darstellung von Konnektivität beim Clustering, in Darstellungen von nächsten Nachbarschaften (z. B. neighbors.kneighbors_graph) und für vorkompilierte Distanzdarstellungen verwendet, bei denen nur die Distanzen in der Nachbarschaft jedes Punktes erforderlich sind.

Bei der Arbeit mit dünnbesetzten Matrizen gehen wir davon aus, dass dies aus gutem Grund dünnbesetzt ist, und vermeiden es, Code zu schreiben, der eine vom Benutzer bereitgestellte dünnbesetzte Matrix verdichtet. Stattdessen behalten wir die Dünnbesetztheit bei oder lösen einen Fehler aus, wenn dies nicht möglich ist (d. h. wenn ein Schätzer dünnbesetzte Matrizen nicht/nicht unterstützen kann).

Zustandslos#

Ein Schätzer ist zustandslos, wenn er keine Informationen speichert, die während des Fits erhalten wurden. Diese Informationen können entweder Parameter sein, die während des Fits gelernt wurden, oder Statistiken, die aus den Trainingsdaten berechnet wurden. Ein Schätzer ist zustandslos, wenn er keine Attribute außer denen hat, die in __init__ gesetzt wurden. Das Aufrufen von fit für diese Schätzer validiert nur die öffentlichen Attribute, die in __init__ übergeben wurden.

Überwacht#
Überwachtes Lernen#

Lernen, bei dem die erwartete Vorhersage (Label oder Ground Truth) für jede Stichprobe verfügbar ist, wenn das Modell gefixt wird, und als y bereitgestellt wird. Dies ist der Ansatz, der bei einem Klassifikator oder Regressor unter anderen Schätzern verfolgt wird.

Ziel#
Ziele#

Die *abhängige Variable* im überwachten (und semi-überwachten) Lernen, übergeben als y an die fit-Methode eines Schätzers. Auch bekannt als *abhängige Variable*, *Ergebnisvariable*, *Antwortvariable*, *Ground Truth* oder *Label*. Scikit-learn arbeitet mit Zielen, die eine minimale Struktur haben: eine Klasse aus einer endlichen Menge, eine endliche reellwertige Zahl, mehrere Klassen oder mehrere Zahlen. Siehe Zieltypen.

Transduktion#
Transduktiv#

Eine transduktive (im Gegensatz zu induktiv) Methode des maschinellen Lernens ist darauf ausgelegt, einen bestimmten Datensatz zu modellieren, aber dieses Modell nicht auf ungesehene Daten anzuwenden. Beispiele hierfür sind manifold.TSNE, cluster.AgglomerativeClustering und neighbors.LocalOutlierFactor.

unlabeled#
unlabeled data#

Stichproben mit unbekannter Grundwahrheit beim Anpassen; gleichbedeutend mit fehlenden Werten im Ziel. Siehe auch semisupervised und unsupervised learning.

unsupervised#
unsupervised learning#

Lernen, bei dem die erwartete Vorhersage (Label oder Grundwahrheit) für jede Stichprobe nicht verfügbar ist, wenn das Modell angepasst wird, wie bei Clusterern und Ausreißererkennungen. Unbeaufsichtigte Schätzer ignorieren jegliches y, das an fit übergeben wird.

Klassen-APIs und Schätzertypen#

classifier#
classifiers#

Ein supervised (oder semi-supervised) predictor mit einer endlichen Menge diskreter möglicher Ausgabewerte.

Ein Klassifikator unterstützt die Modellierung einiger binärer, multiclass, multilabel oder multiclass multioutput Ziele. Innerhalb von Scikit-learn unterstützen alle Klassifikatoren die Multiclass-Klassifizierung und verwenden standardmäßig eine One-vs-Rest-Strategie für das binäre Klassifizierungsproblem.

Klassifikatoren müssen nach dem Anpassen ein classes_ Attribut speichern und von base.ClassifierMixin erben, die ihre entsprechenden estimator tags korrekt setzt.

Ein Klassifikator kann mit is_classifier von anderen Schätzern unterschieden werden.

Ein Klassifikator muss implementieren

Es kann auch angebracht sein, decision_function, predict_proba und predict_log_proba zu implementieren.

clusterer#
clusterers#

Ein unsupervised predictor mit einer endlichen Menge diskreter Ausgabewerte.

Ein Clusterer speichert normalerweise labels_ nach dem Anpassen und muss dies tun, wenn er transductiv ist.

Ein Clusterer muss implementieren

density estimator#

Eine unsupervised Schätzung der Eingabe-Wahrscheinlichkeitsdichtefunktion. Gängige Techniken sind

  • Kernel Density Estimation – verwendet eine Kernel-Funktion, gesteuert durch den Bandbreitenparameter zur Dichtedarstellung;

  • Gaussian mixture – verwendet eine Mischung von Gaußschen Modellen zur Dichtedarstellung.

estimator#
estimators#

Ein Objekt, das die Schätzung und Dekodierung eines Modells verwaltet. Das Modell wird als deterministische Funktion von

Das geschätzte Modell wird in öffentlichen und privaten Attributen auf der Schätzerinstanz gespeichert, was die Dekodierung durch Vorhersage- und Transformationsmethoden erleichtert.

Schätzer müssen eine fit-Methode bereitstellen und sollten set_params und get_params bereitstellen, obwohl diese normalerweise durch Vererbung von base.BaseEstimator bereitgestellt werden.

Die Kernfunktionalität einiger Schätzer kann auch als Funktion verfügbar sein.

feature extractor#
feature extractors#

Ein transformer, der Eingaben annimmt, bei denen jede Stichprobe nicht als array-like Objekt fester Länge dargestellt wird, und ein array-like Objekt von Merkmalen für jede Stichprobe (und somit ein 2-dimensionales array-like für eine Menge von Stichproben) erzeugt. Mit anderen Worten, es bildet eine nicht-rechteckige Datenrepräsentation (verlustbehaftet) auf rechteckige Daten ab.

Feature-Extraktoren müssen mindestens implementieren

meta-estimator#
meta-estimators#
metaestimator#
metaestimators#

Ein estimator, der einen anderen Schätzer als Parameter annimmt. Beispiele hierfür sind pipeline.Pipeline, model_selection.GridSearchCV, feature_selection.SelectFromModel und ensemble.BaggingClassifier.

In der fit-Methode eines Meta-Schätzers sollten alle enthaltenen Schätzer vor dem Anpassen geklont werden.

Eine Ausnahme hierzu ist, dass ein Schätzer ausdrücklich dokumentieren kann, dass er einen vorab angepassten Schätzer akzeptiert (z.B. mittels prefit=True in feature_selection.SelectFromModel). Ein bekanntes Problem hierbei ist, dass der vorab angepasste Schätzer sein Modell verliert, wenn der Meta-Schätzer geklont wird. Ein Meta-Schätzer sollte vor der Vorhersage fit aufgerufen haben, auch wenn alle enthaltenen Schätzer vorab angepasst sind.

In Fällen, in denen das primäre Verhalten eines Meta-Schätzers (z.B. die Implementierung von predict oder transform) von den Vorhersage-/Transformationsmethoden des bereitgestellten *Basis-Schätzers* (oder mehrerer Basis-Schätzer) abhängt, sollte ein Meta-Schätzer mindestens die Standardmethoden bereitstellen, die vom Basis-Schätzer bereitgestellt werden. Es ist möglicherweise nicht möglich zu identifizieren, welche Methoden vom zugrunde liegenden Schätzer bereitgestellt werden, bis der Meta-Schätzer angepasst wurde (siehe auch duck typing), wozu utils.metaestimators.available_if hilfreich sein kann. Er sollte auch die vom Basis-Schätzer bereitgestellten estimator tags und das classes_ Attribut bereitstellen (oder modifizieren).

Meta-Schätzer sollten darauf achten, Daten so minimal wie möglich zu validieren, bevor sie an einen zugrunde liegenden Schätzer übergeben werden. Dies spart Rechenzeit und kann beispielsweise ermöglichen, dass der zugrunde liegende Schätzer problemlos mit Daten arbeitet, die nicht rechteckig sind.

outlier detector#
outlier detectors#

Ein unsupervised binärer predictor, der die Unterscheidung zwischen Kern- und Ausreißer-Stichproben modelliert.

Ausreißererkennungen müssen implementieren

Induktive Ausreißererkennungen können auch decision_function implementieren, um einen normalisierten Inlier-Score zu liefern, bei dem Ausreißer einen Score unter 0 haben. score_samples kann einen unnormalisierten Score pro Stichprobe liefern.

predictor#
predictors#

Ein estimator, der predict und/oder fit_predict unterstützt. Dies umfasst classifier, regressor, outlier detector und clusterer.

In der Statistik bezieht sich „predictors“ auf features.

regressor#
regressors#

Ein supervised (oder semi-supervised) predictor mit kontinuierlichen Ausgabewerten.

Regressoren erben von base.RegressorMixin, die ihre estimator tags korrekt setzt.

Ein Regressor kann mit is_regressor von anderen Schätzern unterschieden werden.

Ein Regressor muss implementieren

transformer#
transformers#

Ein Schätzer, der transform und/oder fit_transform unterstützt. Ein rein transductiver Transformer, wie z.B. manifold.TSNE, muss transform möglicherweise nicht implementieren.

vectorizer#
vectorizers#

Siehe feature extractor.

Es gibt weitere APIs, die sich speziell auf eine kleine Familie von Schätzern beziehen, wie z.B.

cross-validation splitter#
CV splitter#
cross-validation generator#

Eine Nicht-Schätzer-Familie von Klassen, die verwendet wird, um einen Datensatz in eine Sequenz von Trainings- und Testabschnitten zu teilen (siehe Cross-Validation: Auswertung der Leistungsfähigkeit von Schätzern), indem split und get_n_splits Methoden bereitgestellt werden. Beachten Sie, dass diese im Gegensatz zu Schätzern keine fit-Methoden haben und weder set_params noch get_params bereitstellen. Die Parametervalidierung kann in __init__ erfolgen.

cross-validation estimator#

Ein Schätzer mit integrierten Kreuzvalidierungsfähigkeiten zur automatischen Auswahl der besten Hyperparameter (siehe Benutzerhandbuch). Einige Beispiele für Kreuzvalidierungs-Schätzer sind ElasticNetCV und LogisticRegressionCV. Kreuzvalidierungs-Schätzer werden als EstimatorCV benannt und sind oft grob äquivalent zu GridSearchCV(Estimator(), ...). Der Vorteil der Verwendung eines Kreuzvalidierungs-Schätzers gegenüber der kanonischen estimator-Klasse zusammen mit Grid Search besteht darin, dass sie die Vorteile des Warm-Startings nutzen können, indem sie vorab berechnete Ergebnisse aus früheren Schritten des Kreuzvalidierungsprozesses wiederverwenden. Dies führt in der Regel zu Geschwindigkeitsverbesserungen. Eine Ausnahme bildet die Klasse RidgeCV, die stattdessen eine effiziente Leave-One-Out (LOO) CV durchführen kann. Standardmäßig werden alle diese Schätzer, mit Ausnahme von RidgeCV mit LOO-CV, nach der Ermittlung der besten Hyperparameterkombination auf dem vollständigen Trainingsdatensatz neu angepasst.

scorer#

Ein nicht-schätzendes, aufrufbare Objekt, das einen Schätzer auf gegebenen Testdaten evaluiert und eine Zahl zurückgibt. Im Gegensatz zu Evaluierungsmetriken muss eine höhere zurückgegebene Zahl mit einem *besseren* Score korrespondieren. Siehe Der Scoring-Parameter: Regeln für die Modellauswertung definieren.

Weitere Beispiele

Metadaten-Routing#

consumer#

Ein Objekt, das Metadaten verbraucht. Dieses Objekt ist in der Regel ein estimator, ein scorer oder ein CV splitter. Metadaten verbrauchen bedeutet, sie für Berechnungen zu verwenden, z.B. sample_weight zur Berechnung einer bestimmten Art von Score. Ein Verbraucher zu sein bedeutet nicht, dass das Objekt immer bestimmte Metadaten empfängt, sondern dass es diese nutzen kann, wenn sie bereitgestellt werden.

metadata#

Daten, die sich auf die gegebenen X und y Daten beziehen, aber nicht direkt Teil der Daten sind, z.B. sample_weight oder groups, und die an verschiedene Objekte und Methoden weitergegeben werden, z.B. an einen scorer oder einen CV splitter.

router#

Ein Objekt, das Metadaten an consumers leitet. Dieses Objekt ist normalerweise ein meta-estimator, z.B. Pipeline oder GridSearchCV. Einige Router können auch Verbraucher sein. Dies geschieht zum Beispiel, wenn ein Meta-Schätzer die gegebenen groups verwendet und diese auch an einige seiner Unterobjekte weitergibt, wie z.B. einen CV splitter.

Weitere Informationen finden Sie im Benutzerhandbuch für Metadaten-Routing.

Zieltypen#

binary#

Ein Klassifizierungsproblem, das aus zwei Klassen besteht. Ein binäres Ziel kann wie für ein multiclass Problem, aber mit nur zwei Labels, dargestellt werden. Eine binäre Entscheidungsfunktion wird als 1D-Array dargestellt.

Semantisch wird eine Klasse oft als „positive“ Klasse betrachtet. Sofern nicht anders angegeben (z.B. unter Verwendung von pos_label in evaluation metrics), betrachten wir das Klassenlabel mit dem größeren Wert (numerisch oder lexikographisch) als positive Klasse: von den Labels [0, 1] ist 1 die positive Klasse; von [1, 2] ist 2 die positive Klasse; von [‘no’, ‘yes’] ist ‘yes’ die positive Klasse; von [‘no’, ‘YES’] ist ‘no’ die positive Klasse. Dies beeinflusst beispielsweise die Ausgabe von decision_function.

Beachten Sie, dass ein Datensatz, der aus einem Multiclass-y oder einem kontinuierlichen y abgeleitet wurde, als binär erscheinen kann.

type_of_target gibt für binäre Eingaben 'binary' zurück, oder ein ähnliches Array mit nur einer einzigen vorhandenen Klasse.

continuous#

Ein Regressionsproblem, bei dem das Ziel jeder Stichprobe eine endliche Gleitkommazahl ist, dargestellt als eindimensionales Array von Floats (oder manchmal Integers).

type_of_target gibt für kontinuierliche Eingaben 'continuous' zurück, aber wenn die Daten alle Integer sind, werden sie als 'multiclass' identifiziert.

continuous multioutput#
continuous multi-output#
multioutput continuous#
multi-output continuous#

Ein Regressionsproblem, bei dem das Ziel jeder Stichprobe aus `n_outputs` Ausgaben besteht, jede eine endliche Gleitkommazahl, für eine feste Ganzzahl `n_outputs > 1` in einem bestimmten Datensatz.

Kontinuierliche Multi-Output-Ziele werden als mehrere kontinuierliche Ziele dargestellt, die horizontal zu einem Array der Form `(n_samples, n_outputs)` gestapelt sind.

type_of_target gibt für kontinuierliche Multi-Output-Eingaben 'continuous-multioutput' zurück, aber wenn die Daten alle Integer sind, werden sie als 'multiclass-multioutput' identifiziert.

multiclass#
multi-class#

Ein Klassifizierungsproblem, das aus mehr als zwei Klassen besteht. Ein Multiclass-Ziel kann als eindimensionales Array von Strings oder Integern dargestellt werden. Ein 2D-Spaltenvektor von Integern (d.h. eine einzelne Ausgabe im Sinne von multioutput) wird ebenfalls akzeptiert.

Wir unterstützen offiziell keine anderen ordnungsfähigen, hashbaren Objekte als Klassenlabels, auch wenn Schätzer zufällig funktionieren mögen, wenn sie Klassifizierungsziele dieses Typs erhalten.

Für die semi-supervidierte Klassifizierung sollten unlabeled Stichproben das spezielle Label -1 in y haben.

Innerhalb von Scikit-learn unterstützen alle Schätzer, die binäre Klassifizierung unterstützen, auch Multiclass-Klassifizierung, standardmäßig mit One-vs-Rest.

Ein preprocessing.LabelEncoder hilft bei der Standardisierung von Multiclass-Zielen als Integer.

type_of_target gibt für Multiclass-Eingaben 'multiclass' zurück. Der Benutzer möchte vielleicht auch 'binary'-Eingaben identisch mit 'multiclass' behandeln.

multiclass multioutput#
multi-class multi-output#
multioutput multiclass#
multi-output multi-class#

Ein Klassifizierungsproblem, bei dem das Ziel jeder Stichprobe aus `n_outputs` Ausgaben besteht, jede ein Klassenlabel, für eine feste Ganzzahl `n_outputs > 1` in einem bestimmten Datensatz. Jede Ausgabe hat eine feste Menge verfügbarer Klassen, und jede Stichprobe ist mit einer Klasse für jede Ausgabe beschriftet. Eine Ausgabe kann binär oder multiclass sein, und im Fall, dass alle Ausgaben binär sind, ist das Ziel multilabel.

Multiclass-Multi-Output-Ziele werden als mehrere multiclass-Ziele dargestellt, die horizontal zu einem Array der Form `(n_samples, n_outputs)` gestapelt sind.

Hinweis: Aus Gründen der Einfachheit unterstützen wir möglicherweise nicht immer String-Klassenlabels für Multiclass-Multioutput und es sollten Integer-Klassenlabels verwendet werden.

multioutput stellt Schätzer bereit, die Multi-Output-Probleme mithilfe mehrerer Single-Output-Schätzer schätzen. Dies berücksichtigt möglicherweise nicht vollständig die Abhängigkeiten zwischen den verschiedenen Ausgaben, was Methoden, die den Multi-Output-Fall nativ behandeln (z. B. Entscheidungsbäume, Nachbarverfahren, neuronale Netze), möglicherweise besser gelingt.

type_of_target gibt für Multiclass-Multioutput-Eingaben 'multiclass-multioutput' zurück.

multilabel#
multi-label#

Eine Multiclass-Multioutput-Zielvariable, bei der jede Ausgabe binär ist. Dies kann als 2D-Array (dicht) oder spärre Matrix von ganzen Zahlen dargestellt werden, sodass jede Spalte ein separates binäres Ziel ist, wobei positive Labels mit 1 und negative Labels normalerweise mit -1 oder 0 angegeben werden. Spärre Multilabel-Zielvariablen werden nicht überall dort unterstützt, wo dichte Multilabel-Zielvariablen unterstützt werden.

Semantisch kann eine Multilabel-Zielvariable als eine Menge von Labels für jede Stichprobe betrachtet werden. Obwohl nicht intern verwendet, wird preprocessing.MultiLabelBinarizer als Dienstprogramm bereitgestellt, um von einer Listen von Mengenrepräsentation in ein 2D-Array oder eine spärre Matrix zu konvertieren. One-Hot-Encoding einer Multiclass-Zielvariable mit preprocessing.LabelBinarizer wandelt sie in ein Multilabel-Problem um.

type_of_target gibt für Multilabel-Eingaben, ob spärre oder dicht, 'multilabel-indicator' zurück.

multioutput#
multi-output#

Eine Zielvariable, bei der jede Stichprobe mehrere Klassifizierungs-/Regressionslabels hat. Siehe Multiclass-Multioutput und Kontinuierlicher Multioutput. Wir unterstützen derzeit keine Modellierung von gemischten Klassifizierungs- und Regressionszielen.

Methoden#

decision_function#

In einem trainierten Klassifikator oder Ausreißerdetektor werden für jede Stichprobe „weiche“ Scores in Bezug auf jede Klasse vorhergesagt, anstatt der „harten“ kategorialen Vorhersage, die von predict erzeugt wird. Die Eingabe ist normalerweise nur einige beobachtete Daten, X.

Wenn der Schätzer noch nicht trainiert wurde, sollte das Aufrufen dieser Methode einen exceptions.NotFittedError auslösen.

Ausgabekonventionen

binäre Klassifizierung

Ein 1-dimensionales Array, bei dem Werte, die strikt größer als Null sind, die positive Klasse angeben (d. h. die letzte Klasse in classes_).

multiclass-Klassifizierung

Ein 2-dimensionales Array, bei dem das zeilenweise Arg-Maximum die vorhergesagte Klasse ist. Die Spalten sind gemäß classes_ geordnet.

multilabel-Klassifizierung

Scikit-learn ist inkonsistent in der Darstellung von Multilabel-Entscheidungsfunktionen. Sie kann auf zwei Arten dargestellt werden:

  • Liste von 2D-Arrays, wobei jedes Array die Form hat: (n_Stichproben, 2), wie bei Multiclass-Multioutput. Die Liste hat die Länge n_Labels.

  • Einzelnes 2D-Array der Form (n_Stichproben, n_Labels), wobei jede „Spalte“ im Array den einzelnen binären Klassifizierungsentscheidungen entspricht. Dies ist identisch mit dem Multiclass-Klassifizierungsformat, obwohl seine Semantik unterschiedlich ist: Es sollte, wie im binären Fall, durch Schwellenwerte bei 0 interpretiert werden.

multioutput-Klassifizierung

Eine Liste von 2D-Arrays, die jeder Multiclass-Entscheidungsfunktion entsprechen.

Ausreißererkennung

Ein 1-dimensionales Array, bei dem ein Wert größer oder gleich Null einen Inlier anzeigt.

fit#

Die Methode fit ist für jeden Schätzer vorhanden. Sie nimmt normalerweise einige Stichproben X, Zielvariablen y, wenn das Modell überwacht wird, und potenziell andere Stichprobeneigenschaften wie Stichprobengewicht. Sie sollte

  • alle zuvor auf dem Schätzer gespeicherten Attribute löschen, es sei denn, warm_start wird verwendet;

  • alle Parameter validieren und interpretieren, idealerweise eine Fehlermeldung auslösen, wenn sie ungültig sind;

  • die Eingabedaten validieren;

  • Modellattribute aus den geschätzten Parametern und bereitgestellten Daten schätzen und speichern; und

  • den nun trainierten Schätzer zurückgeben, um die Methodenkettung zu erleichtern.

Zielvariablentypen beschreibt mögliche Formate für y.

fit_predict#

Speziell für unüberwachte, transduktive Schätzer wird das Modell trainiert und die Vorhersagen (ähnlich wie bei predict) auf den Trainingsdaten zurückgegeben. Bei Clusterern werden diese Vorhersagen auch im Attribut labels_ gespeichert, und die Ausgabe von .fit_predict(X) ist normalerweise äquivalent zu .fit(X).predict(X). Die Parameter für fit_predict sind die gleichen wie für fit.

fit_transform#

Eine Methode für Transformer, die den Schätzer trainiert und die transformierten Trainingsdaten zurückgibt. Sie nimmt Parameter entgegen wie in fit, und ihre Ausgabe sollte die gleiche Form haben wie der Aufruf von .fit(X, ...).transform(X). Es gibt jedoch seltene Fälle, in denen .fit_transform(X, ...) und .fit(X, ...).transform(X) nicht denselben Wert zurückgeben, wobei die Trainingsdaten unterschiedlich behandelt werden müssen (z. B. aufgrund von Modellvermischung bei gestapelten Ensembles; solche Fälle sollten klar dokumentiert werden). Transduktive Transformer können auch fit_transform, aber nicht transform bereitstellen.

Ein Grund für die Implementierung von fit_transform ist, dass die getrennte Ausführung von fit und transform weniger effizient wäre als zusammen. base.TransformerMixin bietet eine Standardimplementierung und eine konsistente Schnittstelle über Transformer hinweg, bei denen fit_transform spezialisiert ist oder nicht.

Beim induktiven Lernen – bei dem das Ziel darin besteht, ein verallgemeinertes Modell zu lernen, das auf neue Daten angewendet werden kann – sollten Benutzer vorsichtig sein, fit_transform nicht auf den gesamten Datensatz (d. h. Trainings- und Testdaten zusammen) anzuwenden, bevor weitere Modellierungsschritte durchgeführt werden, da dies zu Datenlecks führt.

get_feature_names_out#

Hauptsächlich für Merkmalsextraktoren, aber auch für andere Transformer verwendet, um Zeichenkettennamen für jede Spalte in der Ausgabe der transform-Methode des Schätzers bereitzustellen. Sie gibt ein Array von Zeichenketten zurück und kann ein Array von Zeichenketten als Eingabe annehmen, das den Namen der Eingabespalten entspricht, aus denen Ausgabespaltennamen generiert werden können. Wenn input_features nicht übergeben wird, wird das Attribut feature_names_in_ verwendet. Wenn das Attribut feature_names_in_ nicht definiert ist, werden die Eingabenamen als [x0, x1, ..., x(n_features_in_ - 1)] benannt.

get_n_splits#

Auf einem CV-Splitter (nicht auf einem Schätzer) gibt die Anzahl der Elemente zurück, die man erhalten würde, wenn man durch den Rückgabewert von split mit denselben Parametern iteriert. Nimmt dieselben Parameter wie split.

get_params#

Ruft alle Parameter und ihre Werte ab, die mit set_params gesetzt werden können. Ein Parameter deep kann verwendet werden, wenn er auf False gesetzt ist, um nur die Parameter ohne __ zurückzugeben, d. h. nicht aufgrund von Indirektion über enthaltene Schätzer.

Die meisten Schätzer übernehmen die Definition von base.BaseEstimator, die einfach die für __init__ definierten Parameter übernimmt. pipeline.Pipeline reimplementiert unter anderem get_params, um die in seinen steps-Parametern benannten Schätzer als selbst Parameter zu deklarieren.

partial_fit#

Ermöglicht das Trainieren eines Schätzers im Online-Modus. Im Gegensatz zu fit löscht das wiederholte Aufrufen von partial_fit das Modell nicht, sondern aktualisiert es mit den bereitgestellten Daten. Der zu partial_fit bereitgestellte Datenanteil kann als Mini-Batch bezeichnet werden. Jeder Mini-Batch muss eine konsistente Form usw. haben. Bei iterativen Schätzern führt partial_fit oft nur eine einzige Iteration durch.

partial_fit kann auch für Out-of-Core-Lernen verwendet werden, ist aber normalerweise auf den Fall beschränkt, dass das Lernen online durchgeführt werden kann, d. h. das Modell ist nach jedem partial_fit nutzbar und es ist keine separate Verarbeitung zur Finalisierung des Modells erforderlich. cluster.Birch führt die Konvention ein, dass das Aufrufen von partial_fit(X) ein nicht finalisiertes Modell erzeugt, das Modell aber durch Aufrufen von partial_fit(), d. h. ohne einen weiteren Mini-Batch zu übergeben, finalisiert werden kann.

Im Allgemeinen sollten Schätzerparameter zwischen Aufrufen von partial_fit nicht geändert werden, obwohl partial_fit sie sowie den neuen Mini-Batch von Daten validieren sollte. Im Gegensatz dazu wird warm_start verwendet, um denselben Schätzer wiederholt mit denselben Daten, aber unterschiedlichen Parametern zu trainieren.

Wie fit sollte auch partial_fit das Schätzerobjekt zurückgeben.

Um das Modell zu löschen, sollte ein neuer Schätzer konstruiert werden, z. B. mit base.clone.

Hinweis: Das Verwenden von partial_fit nach fit führt zu undefiniertem Verhalten.

predict#

Erzeugt eine Vorhersage für jede Stichprobe, wobei normalerweise nur X als Eingabe genommen wird (aber siehe unten bei den Ausgabekonventionen für Regressoren). In einem Klassifikator oder Regressor befindet sich diese Vorhersage im selben Zielraum wie beim Training (z. B. eines von {'rot', 'bernstein', 'grün'}, wenn y beim Training aus diesen Zeichenketten bestand). Trotzdem sollte die Ausgabe von predict immer ein Array oder eine spärre Matrix sein, auch wenn y, das an fit übergeben wird, eine Liste oder ein anderes array-ähnliches Objekt ist. In einem Clusterer oder Ausreißerdetektor ist die Vorhersage eine ganze Zahl.

Wenn der Schätzer noch nicht trainiert wurde, sollte das Aufrufen dieser Methode einen exceptions.NotFittedError auslösen.

Ausgabekonventionen

Klassifikator

Ein Array der Form (n_samples,) (n_samples, n_outputs). Multilabel-Daten können als spärre Matrix dargestellt werden, wenn beim Training eine spärre Matrix verwendet wurde. Jedes Element sollte einer der Werte im Attribut classes_ des Klassifikators sein.

Clusterer

Ein Array der Form (n_samples,), bei dem jeder Wert von 0 bis n_clusters - 1 reicht, wenn die entsprechende Stichprobe geclustert ist, und -1, wenn die Stichprobe nicht geclustert ist, wie in cluster.dbscan.

Ausreißerdetektor

Ein Array der Form (n_samples,), bei dem jeder Wert -1 für einen Ausreißer und ansonsten 1 ist.

Regressor

Ein numerisches Array der Form (n_samples,), normalerweise float64. Einige Regressoren haben zusätzliche Optionen in ihrer predict-Methode, die es ihnen erlauben, die Standardabweichung (return_std=True) oder die Kovarianz (return_cov=True) relativ zum vorhergesagten Wert zurückzugeben. In diesem Fall ist der Rückgabewert ein Tupel von Arrays, das (Vorhersagemittelwert, Std, Kov) entsprechend anfordert.

predict_log_proba#

Der natürliche Logarithmus der Ausgabe von predict_proba, bereitgestellt zur Erleichterung der numerischen Stabilität.

predict_proba#

Eine Methode in Klassifikatoren und Clusterern, die Wahrscheinlichkeitsschätzungen für jede Klasse/jeden Cluster zurückgeben kann. Ihre Eingabe ist normalerweise nur einige beobachtete Daten, X.

Wenn der Schätzer noch nicht trainiert wurde, sollte das Aufrufen dieser Methode einen exceptions.NotFittedError auslösen.

Die Ausgabekonventionen sind wie bei decision_function, außer im Fall der binären Klassifizierung, wo für jede Klasse eine Spalte ausgegeben wird (während decision_function ein 1D-Array ausgibt). Bei binären und Multiclass-Vorhersagen sollten sich die Zeilen zu 1 summieren.

Wie andere Methoden sollte predict_proba nur vorhanden sein, wenn der Schätzer probabilistische Vorhersagen treffen kann (siehe Duck Typing). Dies bedeutet, dass die Anwesenheit der Methode von Schätzerparametern (z. B. in linear_model.SGDClassifier) oder Trainingsdaten (z. B. in model_selection.GridSearchCV) abhängen kann und möglicherweise erst nach dem Training erscheint.

score#

Eine Methode für einen Schätzer, normalerweise einen Prädiktor, die seine Vorhersagen auf einem gegebenen Datensatz auswertet und einen einzelnen numerischen Score zurückgibt. Ein höherer Rückgabewert sollte bessere Vorhersagen anzeigen; standardmäßig wird die Genauigkeit für Klassifikatoren und R^2 für Regressoren verwendet.

Wenn der Schätzer noch nicht trainiert wurde, sollte das Aufrufen dieser Methode einen exceptions.NotFittedError auslösen.

Einige Schätzer implementieren eine benutzerdefinierte, schätzerspezifische Score-Funktion, oft die Likelihood der Daten unter dem Modell.

score_samples#

Eine Methode, die für jede gegebene Stichprobe einen Score zurückgibt. Die genaue Definition von „Score“ variiert von Klasse zu Klasse. Bei der Dichteschätzung kann es sich um die Log-Dichte des Modells auf den Daten handeln, und bei der Ausreißererkennung kann es das Gegenteil des Ausreißerfaktors der Daten sein.

Wenn der Schätzer noch nicht trainiert wurde, sollte das Aufrufen dieser Methode einen exceptions.NotFittedError auslösen.

set_params#

Verfügbar in jedem Schätzer, nimmt Schlüsselwortargumente entgegen, die den Schlüsseln in get_params entsprechen. Jedem wird ein neuer Wert zugewiesen, sodass ein Aufruf von get_params nach set_params die geänderten Parameter widerspiegelt. Die meisten Schätzer verwenden die Implementierung in base.BaseEstimator, die verschachtelte Parameter behandelt und ansonsten den Parameter als Attribut des Schätzers setzt. Die Methode wird in pipeline.Pipeline und verwandten Schätzern überschrieben.

split#

Auf einem CV-Splitter (nicht auf einem Schätzer) akzeptiert diese Methode Parameter (X, y, groups), wobei alle optional sein können, und gibt einen Iterator über (train_idx, test_idx)-Paare zurück. Jedes der {train,test}_idx ist ein 1D-Integer-Array mit Werten von 0 bis X.shape[0] - 1 beliebiger Länge, sodass keine Werte sowohl in einem train_idx als auch in seinem entsprechenden test_idx vorkommen.

transform#

In einem Transformer transformiert die Eingabe, normalerweise nur X, in einen transformierten Raum (konventionell als Xt bezeichnet). Die Ausgabe ist ein Array oder eine spärre Matrix der Länge n_samples und mit einer festen Anzahl von Spalten nach dem Training.

Wenn der Schätzer noch nicht trainiert wurde, sollte das Aufrufen dieser Methode einen exceptions.NotFittedError auslösen.

Parameter#

Diese gängigen Parameternamen, die speziell in der Schätzerkonstruktion verwendet werden (siehe Konzept Parameter), erscheinen manchmal auch als Parameter von Funktionen oder Nicht-Schätzer-Konstruktoren.

class_weight#

Wird verwendet, um Stichprobengewichte beim Trainieren von Klassifikatoren als Funktion der Zielklasse anzugeben. Wenn Stichprobengewicht ebenfalls unterstützt wird und angegeben ist, wird es mit dem Beitrag von class_weight multipliziert. Ebenso werden bei Verwendung von class_weight bei Multi-Output- (einschließlich Multilabel-) Aufgaben die Gewichte über die Ausgaben (d. h. Spalten von y) multipliziert.

Standardmäßig haben alle Stichproben gleiche Gewichtung, sodass die Klassen effektiv nach ihrer Häufigkeit in den Trainingsdaten gewichtet werden. Dies könnte explizit mit class_weight={label1: 1, label2: 1, ...} für alle Klassenlabels erreicht werden.

Allgemeiner wird class_weight als Dictionary angegeben, das Klassenlabels auf Gewichte abbildet ({class_label: weight}), sodass jeder Stichprobe der benannten Klasse dieses Gewicht zugewiesen wird.

class_weight='balanced' kann verwendet werden, um allen Klassen gleiche Gewichtung zu geben, indem jeder Stichprobe ein Gewicht zugewiesen wird, das umgekehrt proportional zur Häufigkeit der Klasse in den Trainingsdaten ist: n_samples / (n_classes * np.bincount(y)). Die Klassengewichte werden je nach Algorithmus unterschiedlich verwendet: Bei linearen Modellen (wie SVM oder logistischer Regression) ändern die Klassengewichte die Verlustfunktion, indem sie den Verlust jeder Stichprobe mit ihrem Klassengewicht gewichten. Bei baumbasierten Algorithmen werden die Klassengewichte zum Neugewichten des Teilungskriteriums verwendet. **Hinweis**: Dieses Neugewichten berücksichtigt jedoch nicht das Gewicht von Stichproben in jeder Klasse.

Für die Multi-Output-Klassifizierung wird eine Liste von Dictionaries verwendet, um Gewichte für jede Ausgabe anzugeben. Zum Beispiel sollten für eine vierklassige Multilabel-Klassifizierung die Gewichte [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}] anstelle von [{1:1}, {2:5}, {3:1}, {4:1}] lauten.

Der Parameter class_weight wird mit utils.class_weight.compute_class_weight validiert und interpretiert.

cv#

Bestimmt eine Kreuzvalidierungs-Splitting-Strategie, wie sie in kreuzvalidierungsbasierten Routinen verwendet wird. cv ist auch in Schätzern wie multioutput.ClassifierChain oder calibration.CalibratedClassifierCV verfügbar, die die Vorhersagen eines Schätzers als Trainingsdaten für einen anderen verwenden, um das Training der Überwachung nicht zu überpassen.

Mögliche Eingaben für cv sind normalerweise

  • Eine ganze Zahl, die die Anzahl der Folds bei der K-Fold-Kreuzvalidierung angibt. K-Fold wird über die Klassen stratifiziert, wenn der Schätzer ein Klassifikator ist (ermittelt durch base.is_classifier) und die Zielvariablen ein binäres oder Multiclass- (aber kein Multi-Output-) Klassifizierungsproblem darstellen (ermittelt durch utils.multiclass.type_of_target).

  • Eine Instanz eines Kreuzvalidierungs-Splitters. Informationen zu den in Scikit-learn verfügbaren Splittern finden Sie im Benutzerhandbuch.

  • Ein iterierbares Objekt, das Trainings-/Test-Splits liefert.

Mit einigen Ausnahmen (insbesondere wenn gar keine Kreuzvalidierung verwendet wird), ist der Standardwert 5-fach.

cv Werte werden mit model_selection.check_cv validiert und interpretiert.

kernel#

Gibt die Kernel-Funktion an, die von Algorithmen der Kernel-Methode verwendet werden soll. Zum Beispiel haben die Schätzer svm.SVC und gaussian_process.GaussianProcessClassifier beide einen kernel Parameter, der den Namen des zu verwendenden Kernels als String oder eine aufrufbare Kernel-Funktion zur Berechnung der Kernel-Matrix entgegennimmt. Weitere Referenzen finden Sie in den Benutzerhandbüchern zu Kernel-Approximation und Gauß-Prozessen.

max_iter#

Für Schätzer, die iterative Optimierung beinhalten, bestimmt dies die maximale Anzahl von Iterationen, die bei fit durchgeführt werden sollen. Wenn max_iter Iterationen ohne Konvergenz durchgeführt werden, sollte eine exceptions.ConvergenceWarning ausgelöst werden. Beachten Sie, dass die Interpretation von „einer einzigen Iteration“ zwischen den Schätzern inkonsistent ist: einige, aber nicht alle, verwenden sie im Sinne einer einzigen Epoche (d. h. eines Durchlaufs über jedes Sample in den Daten).

memory#

Einige Schätzer verwenden joblib.Memory, um Teillösungen während des Fittens zu speichern. Wenn fit erneut aufgerufen wird, sind diese Teillösungen memoisiert und können wiederverwendet werden.

Ein memory Parameter kann als String mit einem Pfad zu einem Verzeichnis angegeben werden, oder eine joblib.Memory Instanz (oder ein Objekt mit einer ähnlichen Schnittstelle, d.h. eine cache Methode) kann verwendet werden.

memory Werte werden mit utils.validation.check_memory validiert und interpretiert.

metric#

Als Parameter ist dies das Schema zur Bestimmung des Abstands zwischen zwei Datenpunkten. Siehe metrics.pairwise_distances. In der Praxis kann für einige Algorithmen eine ungeeignete Distanzmetrik (eine, die die Dreiecksungleichung nicht erfüllt, wie z.B. Cosinus-Distanz) verwendet werden.

Hinweis: Hierarchisches Clustering verwendet affinity mit dieser Bedeutung.

Wir verwenden auch den Begriff Metrik, um uns auf Evaluierungsmetriken zu beziehen, vermeiden aber dessen Verwendung als Parameternamen.

n_components#

Die Anzahl der Merkmale, in die ein Transformer die Eingabe umwandeln soll. Siehe components_ für den Sonderfall der affinen Projektion.

n_iter_no_change#

Anzahl der Iterationen ohne Verbesserung, auf die gewartet wird, bevor das iterative Verfahren gestoppt wird. Dies ist auch als Geduldsparameter bekannt. Es wird typischerweise mit Early Stopping verwendet, um ein zu frühes Stoppen zu vermeiden.

n_jobs#

Dieser Parameter wird verwendet, um anzugeben, wie viele gleichzeitige Prozesse oder Threads für Routinen verwendet werden sollen, die mit joblib parallelisiert sind.

n_jobs ist eine Ganzzahl, die die maximale Anzahl gleichzeitig laufender Worker angibt. Wenn 1 angegeben wird, wird überhaupt keine Joblib-Parallelität verwendet, was zum Debuggen nützlich ist. Wenn auf -1 gesetzt, werden alle CPUs verwendet. Für n_jobs kleiner als -1 werden (n_cpus + 1 + n_jobs) verwendet. Zum Beispiel werden bei n_jobs=-2 alle CPUs außer einer verwendet.

n_jobs ist standardmäßig None, was nicht gesetzt bedeutet; es wird im Allgemeinen als n_jobs=1 interpretiert, es sei denn, der aktuelle joblib.Parallel Backend-Kontext gibt etwas anderes an.

Beachten Sie, dass auch bei n_jobs=1 in einigen Konfigurationen Low-Level-Parallelität (über Numpy und OpenMP) verwendet werden kann.

Weitere Details zur Verwendung von joblib und seinen Interaktionen mit scikit-learn finden Sie in unseren Hinweisen zur Parallelität.

pos_label#

Wert, mit dem positive Labels in binären Klassifikationsproblemen kodiert werden müssen, bei denen die positive Klasse nicht angenommen wird. Dieser Wert ist typischerweise erforderlich, um asymmetrische Auswertungsmetriken wie Präzision und Recall zu berechnen.

random_state#

Immer wenn Randomisierung Teil eines Scikit-learn-Algorithmus ist, kann ein random_state Parameter angegeben werden, um den verwendeten Zufallszahlengenerator zu steuern. Beachten Sie, dass die bloße Anwesenheit von random_state nicht bedeutet, dass Randomisierung immer verwendet wird, da sie von einem anderen Parameter abhängen kann, z.B. wenn shuffle gesetzt ist.

Der übergebene Wert beeinflusst die Reproduzierbarkeit der von der Funktion zurückgegebenen Ergebnisse (fit, split oder jede andere Funktion wie k_means). Der Wert von random_state kann sein

None (Standard)

Verwendet die globale Zufallszustand-Instanz aus numpy.random. Wenn die Funktion mehrmals aufgerufen wird, wird dieselbe Instanz wiederverwendet, und es werden unterschiedliche Ergebnisse erzielt.

Eine Ganzzahl

Verwendet einen neuen Zufallszahlengenerator, der mit der gegebenen Ganzzahl initialisiert wird. Die Verwendung einer Ganzzahl liefert bei verschiedenen Aufrufen dieselben Ergebnisse. Es kann jedoch lohnenswert sein zu überprüfen, ob Ihre Ergebnisse über eine Reihe von verschiedenen, eindeutigen Zufallsseeds stabil sind. Beliebte Ganzzahl-Zufallsseeds sind 0 und 42. Ganzzahlwerte müssen im Bereich [0, 2**32 - 1] liegen.

Eine numpy.random.RandomState Instanz

Verwendet den bereitgestellten Zufallszustand, der nur andere Benutzer derselben Zufallszustand-Instanz beeinflusst. Wenn die Funktion mehrmals aufgerufen wird, wird dieselbe Instanz wiederverwendet, und es werden unterschiedliche Ergebnisse erzielt.

utils.check_random_state wird intern verwendet, um die Eingabe random_state zu validieren und eine RandomState Instanz zurückzugeben.

Weitere Details zur Steuerung der Zufälligkeit von scikit-learn-Objekten und zur Vermeidung häufiger Fallstricke finden Sie in Steuerung der Zufälligkeit.

scoring#

Kann je nach Objekt Folgendes angeben:

  • die zu maximierende Bewertungsfunktion (normalerweise durch Kreuzvalidierung),

  • die mehreren zu berichtenden Bewertungsfunktionen,

  • die zur Überprüfung des Early Stopping zu verwendende Bewertungsfunktion, oder

  • für Visualisierungs-bezogene Objekte, die auszugebende oder zu plottende Bewertungsfunktion.

Die Bewertungsfunktion kann ein String sein, der von metrics.get_scorer akzeptiert wird, oder eine aufrufbare Scorer-Funktion, nicht zu verwechseln mit einer Evaluierungsmetrik, da letztere eine vielfältigere API haben. scoring kann auch auf None gesetzt werden, in welchem Fall die score Methode des Schätzers verwendet wird. Siehe Der scoring Parameter: Festlegen von Modellbewertungsregeln im Benutzerhandbuch.

Wo mehrere Metriken bewertet werden können, kann scoring entweder als Liste von eindeutigen Strings, als Dictionary mit Namen als Schlüsseln und aufrufbaren Werten oder als aufrufbare Funktion, die ein Dictionary zurückgibt, angegeben werden. Beachten Sie, dass dies *nicht* angibt, welche Bewertungsfunktion maximiert werden soll, und ein anderer Parameter wie refit zu diesem Zweck verwendet werden kann.

Der scoring Parameter wird mit metrics.check_scoring validiert und interpretiert.

verbose#

Die Protokollierung wird derzeit in Scikit-learn nicht sehr konsistent gehandhabt, aber wenn sie als Option angeboten wird, ist der Parameter verbose normalerweise verfügbar, um keine Protokollierung zu wählen (auf False gesetzt). Jeder True-Wert sollte eine gewisse Protokollierung aktivieren, aber größere Ganzzahlen (z.B. über 10) können für vollständige Ausführlichkeit erforderlich sein. Ausführliche Protokolle werden normalerweise auf Standardausgabe ausgegeben. Schätzer sollten mit der Standardeinstellung verbose keine Ausgabe auf Standardausgabe produzieren.

warm_start#

Beim wiederholten Fitten eines Schätzers auf demselben Datensatz, aber für mehrere Parameterwerte (z.B. um den Wert zu finden, der die Leistung maximiert, wie bei Grid Search), kann es möglich sein, Aspekte des Modells, die aus dem vorherigen Parameterwert gelernt wurden, wiederzuverwenden und somit Zeit zu sparen. Wenn warm_start auf true gesetzt ist, werden die vorhandenen fitted Modellattribute verwendet, um das neue Modell bei einem nachfolgenden Aufruf von fit zu initialisieren.

Beachten Sie, dass dies nur für einige Modelle und einige Parameter gilt und sogar für einige Reihenfolgen von Parameterwerten. Im Allgemeinen gibt es eine Wechselwirkung zwischen warm_start und dem Parameter, der die Anzahl der Iterationen des Schätzers steuert.

Für aus ensemble importierte Schätzer interagiert warm_start mit n_estimators oder max_iter. Für diese Modelle entspricht die Anzahl der Iterationen, die über len(estimators_) oder n_iter_ berichtet wird, der Gesamtzahl der Schätzer/Iterationen, die seit der Initialisierung des Modells gelernt wurden. Wenn also ein Modell bereits mit N Schätzern initialisiert wurde und fit mit n_estimators oder max_iter auf M gesetzt aufgerufen wird, trainiert das Modell M - N neue Schätzer.

Andere Modelle, die üblicherweise gradientenbasierte Löser verwenden, haben ein anderes Verhalten. Sie alle bieten einen max_iter Parameter. Die berichtete n_iter_ entspricht der Anzahl der Iterationen, die während des letzten Aufrufs von fit durchgeführt wurden, und ist höchstens max_iter. Daher betrachten wir nicht den Zustand des Schätzers seit der Initialisierung.

partial_fit behält ebenfalls das Modell zwischen den Aufrufen bei, unterscheidet sich aber: bei warm_start ändern sich die Parameter und die Daten sind (mehr oder weniger) konstant über die Aufrufe von fit; bei partial_fit ändern sich die Mini-Batches von Daten und die Modellparameter bleiben fest.

Es gibt Fälle, in denen Sie warm_start verwenden möchten, um auf verschiedene, aber eng verwandte Daten zu fitten. Zum Beispiel kann man zunächst auf einem Teildatensatz fitten und dann die Parametersuche auf dem vollständigen Datensatz verfeinern. Für die Klassifikation müssen alle Daten in einer Sequenz von warm_start Aufrufen von fit Samples aus jeder Klasse enthalten.

Attribute#

Siehe Konzept Attribut.

classes_#

Eine Liste von Klassenlabels, die dem Klassifikator bekannt sind, wobei jedes Label einem numerischen Index zugeordnet wird, der in der Modellrepräsentation oder Ausgabe verwendet wird. Zum Beispiel sind die Spalten der Array-Ausgabe von predict_proba mit classes_ ausgerichtet. Für Multi-Output-Klassifikatoren sollte classes_ eine Liste von Listen sein, mit einer Klassenliste für jede Ausgabe. Für jede Ausgabe sollten die Klassen sortiert sein (numerisch oder lexikographisch für Strings).

classes_ und die Zuordnung zu Indizes wird oft mit preprocessing.LabelEncoder verwaltet.

components_#

Eine affine Transformationsmatrix der Form (n_components, n_features), die in vielen linearen Transformern verwendet wird, wobei n_components die Anzahl der Ausgabemerkmale und n_features die Anzahl der Eingabemerkmale ist.

Siehe auch coef_, ein ähnliches Attribut für lineare Prädiktoren.

coef_#

Die Gewichts-/Koeffizientenmatrix eines verallgemeinerten linearen Modells Prädiktors, der Form (n_features,) für binäre Klassifikation und einfache Ausgabe Regression, (n_classes, n_features) für Multiklassen-Klassifikation und (n_targets, n_features) für Multi-Output-Regression. Beachten Sie, dass dies den Achsenabschnitts- (oder Bias-) Term nicht einschließt, der in intercept_ gespeichert ist.

Wenn verfügbar, wird feature_importances_ normalerweise nicht bereitgestellt, kann aber als Norm des Eintrags jedes Merkmals in coef_ berechnet werden.

Siehe auch components_, ein ähnliches Attribut für lineare Transformer.

embedding_#

Eine Einbettung der Trainingsdaten in Manifold Learning-Schätzern mit der Form (n_samples, n_components), identisch mit der Ausgabe von fit_transform. Siehe auch labels_.

n_iter_#

Die tatsächlich durchgeführte Anzahl von Iterationen bei der Anpassung eines iterativen Schätzers, der bei Konvergenz stoppen kann. Siehe auch max_iter.

feature_importances_#

Ein Vektor der Form (n_features,), der in einigen Prädiktoren verfügbar ist, um ein relatives Maß für die Bedeutung jedes Merkmals bei den Vorhersagen des Modells zu liefern.

labels_#

Ein Vektor, der ein Cluster-Label für jedes Sample der Trainingsdaten in Clusterern enthält, identisch mit der Ausgabe von fit_predict. Siehe auch embedding_.

Daten- und Sample-Eigenschaften#

Siehe Konzept Sample-Eigenschaft.

groups#

Wird in Kreuzvalidierungsroutinen verwendet, um korrelierte Samples zu identifizieren. Jeder Wert ist eine Kennung, sodass in einem unterstützenden CV-Splitter Samples einer bestimmten groups Wertes nicht sowohl in einem Trainingsdatensatz als auch in seinem entsprechenden Testdatensatz erscheinen dürfen. Siehe Kreuzvalidierungs-Iteratoren für gruppierte Daten.

sample_weight#

Ein Gewicht für jeden Datenpunkt. Intuitiv ist die Verwendung von Ganzzahl-Gewichten in einem Schätzer oder einem Scorer so, als würde jeder Datenpunkt so oft dupliziert werden, wie es seinem Gewicht entspricht. Gewichte können auch als Gleitkommazahlen angegeben werden und können denselben Effekt haben wie oben, da viele Schätzer und Scorer skaleninvariant sind. Zum Beispiel wären Gewichte [1, 2, 3] äquivalent zu Gewichten [0.1, 0.2, 0.3], da sie sich um einen konstanten Faktor 10 unterscheiden. Beachten Sie jedoch, dass mehrere Schätzer nicht invariant gegenüber der Skala der Gewichte sind.

sample_weight kann sowohl ein Argument der fit Methode des Schätzers für das Modelltraining als auch ein Parameter eines Scorers für die Modellevaluierung sein. Diese aufrufbaren Funktionen konsumieren angeblich die Sample-Gewichte, während andere Komponenten von scikit-learn die Gewichte an die zugrundeliegenden Schätzer oder Scorer weiterleiten können (siehe Metadaten-Routing).

Die Gewichtung von Samples kann in verschiedenen Kontexten nützlich sein. Wenn beispielsweise die Trainingsdaten nicht gleichmäßig aus der Zielpopulation gezogen wurden, kann dies durch Gewichtung der Trainingsdatenpunkte basierend auf der Inversen Wahrscheinlichkeit ihrer Auswahl für das Training korrigiert werden (z.B. Inverse Propensity Weighting).

Einige Hyperparameter von Modellen werden als diskrete Anzahl von Datenpunkten in einem Bereich des Merkmalsraums ausgedrückt. Beim Fitten mit Sample-Gewichten wird eine Anzahl von Datenpunkten oft automatisch in eine Summe ihrer Gewichte umgewandelt, dies ist jedoch nicht immer der Fall. Bitte lesen Sie die Modell-Dokumentation für Details.

In der Klassifikation können Gewichte auch für alle Samples einer bestimmten Zielklasse mit dem class_weight Schätzer Parameter angegeben werden. Wenn sowohl sample_weight als auch class_weight angegeben werden, ist das endgültige Gewicht eines Samples das Produkt der beiden.

Zum Zeitpunkt der Erstellung (Version 1.8) implementieren nicht alle scikit-learn Schätzer die Äquivalenz von Gewichts-Wiederholungseigenschaft korrekt. Die Meta-Issue #16298 verfolgt laufende Arbeiten zur Erkennung und Behebung verbleibender Diskrepanzen.

Darüber hinaus haben einige Schätzer eine stochastische Fit-Methode. Zum Beispiel hängt cluster.KMeans von einer zufälligen Initialisierung ab, Bagging-Modelle resampeln zufällig aus den Trainingsdaten usw. In diesem Fall gilt die oben beschriebene Äquivalenz von Gewichts-Wiederholungseigenschaft nicht exakt. Sie sollte jedoch zumindest im Erwartungswert über die Zufälligkeit des Fitting-Verfahrens gelten.

X#

Bezeichnet Daten, die zur Trainings- und Vorhersagezeit beobachtet werden und als unabhängige Variablen beim Lernen verwendet werden. Die Notation ist großgeschrieben, um anzuzeigen, dass es sich normalerweise um eine Matrix handelt (siehe rechteckig). Wenn es sich um eine Matrix handelt, kann jedes Sample durch einen Merkmal-Vektor oder einen Vektor von (vor-)berechneten (Un-)Ähnlichkeiten mit jedem Trainingssample dargestellt werden. X ist möglicherweise keine Matrix und erfordert möglicherweise einen Merkmal-Extraktor oder eine Paarweise-Metrik, um es in eine solche umzuwandeln, bevor ein Modell gelernt wird.

Xt#

Kurzform für "transformiertes X".

y#
Y#

Bezeichnet Daten, die zum Zeitpunkt des Trainings als abhängige Variable beim Lernen beobachtet werden können, aber zum Zeitpunkt der Vorhersage nicht verfügbar sind und normalerweise das Ziel der Vorhersage darstellen. Die Notation kann großgeschrieben werden, um anzuzeigen, dass es sich um eine Matrix handelt, die beispielsweise Multi-Output-Ziele darstellt; normalerweise verwenden wir jedoch y und tun dies manchmal sogar, wenn mehrere Ausgaben angenommen werden.