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.asarrayein 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.DecisionTreeClassifierfü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_estimatorWir 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
metricszu beziehen (wobeipairwiseignoriert 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_scoreenden, 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
metricsenthalten sind und schätzerspezifisch sind, insbesondere Modell-Likelihoods.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_probaund 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_featuresgibt 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.NotFittedErrorauslösen. (utils.validation.check_is_fittedwird 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 inmanifold.spectral_embeddingodercluster.dbscan. Viele Vorverarbeitungs-Transformer bieten ebenfalls eine Funktionsschnittstelle, ähnlich dem Aufruf von fit_transform, wie inpreprocessing.maxabs_scale. Benutzer sollten vorsichtig sein, Datenlecks zu vermeiden, wenn sie diesefit_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.
- Galerie#
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
pipelineundmodel_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ürmissing_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#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_depthundrandom_stateParameter vonRandomForestClassifier. 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 hatclf = BaggingClassifier(estimator=DecisionTreeClassifier(max_depth=3))einen tiefen Parameterestimator__max_depthmit dem Wert3, der mitclf.estimator.max_depthoderclf.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_distancesund von Kernelfunktionen (einer eingeschränkten Klasse von Ähnlichkeitsfunktionen) inmetrics.pairwise.pairwise_kernelsbereit. 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.distancezurückgreifen, diese aber in unserem Kontext aus Effizienzgründen neu implementieren können. Die Schnittstellemetrics.DistanceMetricwird 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,affinityoderkernelauf den String 'precomputed' gesetzt wird. In diesem Fall sollte der Schätzer daspairwise-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_samplesgibt 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_paramsverwendet 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
-1auf 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.csgraphwerden 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.AgglomerativeClusteringundneighbors.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.ClassifierMixinerben, die ihre entsprechenden estimator tags korrekt setzt.Ein Klassifikator kann mit
is_classifiervon 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
fit_predict, wenn transductiv
- 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
Parametern, die bei der Objektkonstruktion oder mit set_params bereitgestellt werden;
dem globalen Zufallszustand von
numpy.random, wenn der Parameter random_state des Schätzers auf None gesetzt ist; undallen Daten oder Stichprobeneigenschaften, die an den letzten Aufruf von fit, fit_transform oder fit_predict übergeben wurden, oder Daten, die in einer Sequenz von Aufrufen von partial_fit ähnlich übergeben wurden.
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.BaseEstimatorbereitgestellt 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.SelectFromModelundensemble.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=Trueinfeature_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 Vorhersagefitaufgerufen 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_ifhilfreich 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
fit_predict, wenn transductiv
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_regressorvon 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, musstransformmö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
ElasticNetCVundLogisticRegressionCV. Kreuzvalidierungs-Schätzer werden alsEstimatorCVbenannt und sind oft grob äquivalent zuGridSearchCV(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 KlasseRidgeCV, die stattdessen eine effiziente Leave-One-Out (LOO) CV durchführen kann. Standardmäßig werden alle diese Schätzer, mit Ausnahme vonRidgeCVmit 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
tree.Criterion
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.
PipelineoderGridSearchCV. 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-
oder einem kontinuierlichenyabgeleitet wurde, als binär erscheinen kann.ytype_of_targetgibt 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_targetgibt 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_targetgibt 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
haben.yInnerhalb 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.LabelEncoderhilft bei der Standardisierung von Multiclass-Zielen als Integer.type_of_targetgibt 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.
multioutputstellt 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_targetgibt 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.MultiLabelBinarizerals 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 mitpreprocessing.LabelBinarizerwandelt sie in ein Multilabel-Problem um.type_of_targetgibt 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.NotFittedErrorauslö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
fitist für jeden Schätzer vorhanden. Sie nimmt normalerweise einige StichprobenX, Zielvariableny, wenn das Modell überwacht wird, und potenziell andere Stichprobeneigenschaften wie Stichprobengewicht. Sie solltealle 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ürfit_predictsind die gleichen wie fürfit.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 auchfit_transform, aber nicht transform bereitstellen.Ein Grund für die Implementierung von
fit_transformist, dass die getrennte Ausführung vonfitundtransformweniger effizient wäre als zusammen.base.TransformerMixinbietet eine Standardimplementierung und eine konsistente Schnittstelle über Transformer hinweg, bei denenfit_transformspezialisiert 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_transformnicht 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_featuresnicht übergeben wird, wird das Attributfeature_names_in_verwendet. Wenn das Attributfeature_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
deepkann 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.Pipelinereimplementiert unter anderemget_params, um die in seinensteps-Parametern benannten Schätzer als selbst Parameter zu deklarieren.partial_fit#Ermöglicht das Trainieren eines Schätzers im Online-Modus. Im Gegensatz zu
fitlöscht das wiederholte Aufrufen vonpartial_fitdas Modell nicht, sondern aktualisiert es mit den bereitgestellten Daten. Der zupartial_fitbereitgestellte Datenanteil kann als Mini-Batch bezeichnet werden. Jeder Mini-Batch muss eine konsistente Form usw. haben. Bei iterativen Schätzern führtpartial_fitoft nur eine einzige Iteration durch.partial_fitkann 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 jedempartial_fitnutzbar und es ist keine separate Verarbeitung zur Finalisierung des Modells erforderlich.cluster.Birchführt die Konvention ein, dass das Aufrufen vonpartial_fit(X)ein nicht finalisiertes Modell erzeugt, das Modell aber durch Aufrufen vonpartial_fit(), d. h. ohne einen weiteren Mini-Batch zu übergeben, finalisiert werden kann.Im Allgemeinen sollten Schätzerparameter zwischen Aufrufen von
partial_fitnicht geändert werden, obwohlpartial_fitsie sowie den neuen Mini-Batch von Daten validieren sollte. Im Gegensatz dazu wirdwarm_startverwendet, um denselben Schätzer wiederholt mit denselben Daten, aber unterschiedlichen Parametern zu trainieren.Wie
fitsollte auchpartial_fitdas 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_fitnachfitfü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
ybeim Training aus diesen Zeichenketten bestand). Trotzdem sollte die Ausgabe vonpredictimmer ein Array oder eine spärre Matrix sein, auch wenny, 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.NotFittedErrorauslö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 bisn_clusters - 1reicht, wenn die entsprechende Stichprobe geclustert ist, und -1, wenn die Stichprobe nicht geclustert ist, wie incluster.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 ihrerpredict-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.NotFittedErrorauslö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_functionein 1D-Array ausgibt). Bei binären und Multiclass-Vorhersagen sollten sich die Zeilen zu 1 summieren.Wie andere Methoden sollte
predict_probanur 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. inlinear_model.SGDClassifier) oder Trainingsdaten (z. B. inmodel_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.NotFittedErrorauslö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.NotFittedErrorauslö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_paramsnachset_paramsdie geänderten Parameter widerspiegelt. Die meisten Schätzer verwenden die Implementierung inbase.BaseEstimator, die verschachtelte Parameter behandelt und ansonsten den Parameter als Attribut des Schätzers setzt. Die Methode wird inpipeline.Pipelineund 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 bisX.shape[0] - 1beliebiger Länge, sodass keine Werte sowohl in einemtrain_idxals auch in seinem entsprechendentest_idxvorkommen.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.NotFittedErrorauslö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_weightmultipliziert. Ebenso werden bei Verwendung vonclass_weightbei Multi-Output- (einschließlich Multilabel-) Aufgaben die Gewichte über die Ausgaben (d. h. Spalten vony) 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_weightals 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_weightwird mitutils.class_weight.compute_class_weightvalidiert und interpretiert.cv#Bestimmt eine Kreuzvalidierungs-Splitting-Strategie, wie sie in kreuzvalidierungsbasierten Routinen verwendet wird.
cvist auch in Schätzern wiemultioutput.ClassifierChainodercalibration.CalibratedClassifierCVverfü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
cvsind normalerweiseEine 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 durchutils.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.
cvWerte werden mitmodel_selection.check_cvvalidiert und interpretiert.kernel#Gibt die Kernel-Funktion an, die von Algorithmen der Kernel-Methode verwendet werden soll. Zum Beispiel haben die Schätzer
svm.SVCundgaussian_process.GaussianProcessClassifierbeide einenkernelParameter, 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_iterIterationen ohne Konvergenz durchgeführt werden, sollte eineexceptions.ConvergenceWarningausgelö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. Wennfiterneut aufgerufen wird, sind diese Teillösungen memoisiert und können wiederverwendet werden.Ein
memoryParameter kann als String mit einem Pfad zu einem Verzeichnis angegeben werden, oder einejoblib.MemoryInstanz (oder ein Objekt mit einer ähnlichen Schnittstelle, d.h. einecacheMethode) kann verwendet werden.memoryWerte werden mitutils.validation.check_memoryvalidiert 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
affinitymit 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_jobsist 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ürn_jobskleiner als -1 werden (n_cpus + 1 + n_jobs) verwendet. Zum Beispiel werden bein_jobs=-2alle CPUs außer einer verwendet.n_jobsist standardmäßigNone, was nicht gesetzt bedeutet; es wird im Allgemeinen alsn_jobs=1interpretiert, es sei denn, der aktuellejoblib.ParallelBackend-Kontext gibt etwas anderes an.Beachten Sie, dass auch bei
n_jobs=1in einigen Konfigurationen Low-Level-Parallelität (über Numpy und OpenMP) verwendet werden kann.Weitere Details zur Verwendung von
joblibund 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_stateParameter angegeben werden, um den verwendeten Zufallszahlengenerator zu steuern. Beachten Sie, dass die bloße Anwesenheit vonrandom_statenicht bedeutet, dass Randomisierung immer verwendet wird, da sie von einem anderen Parameter abhängen kann, z.B. wennshufflegesetzt 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 vonrandom_statekann 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.RandomStateInstanz 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_statewird intern verwendet, um die Eingaberandom_statezu validieren und eineRandomStateInstanz 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_scorerakzeptiert wird, oder eine aufrufbare Scorer-Funktion, nicht zu verwechseln mit einer Evaluierungsmetrik, da letztere eine vielfältigere API haben.scoringkann 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
scoringentweder 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 wierefitzu diesem Zweck verwendet werden kann.Der
scoringParameter wird mitmetrics.check_scoringvalidiert und interpretiert.verbose#Die Protokollierung wird derzeit in Scikit-learn nicht sehr konsistent gehandhabt, aber wenn sie als Option angeboten wird, ist der Parameter
verbosenormalerweise 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 Standardeinstellungverbosekeine 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_startauf 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_startund dem Parameter, der die Anzahl der Iterationen des Schätzers steuert.Für aus
ensembleimportierte Schätzer interagiertwarm_startmitn_estimatorsodermax_iter. Für diese Modelle entspricht die Anzahl der Iterationen, die überlen(estimators_)odern_iter_berichtet wird, der Gesamtzahl der Schätzer/Iterationen, die seit der Initialisierung des Modells gelernt wurden. Wenn also ein Modell bereits mitNSchätzern initialisiert wurde undfitmitn_estimatorsodermax_iteraufMgesetzt aufgerufen wird, trainiert das ModellM - Nneue Schätzer.Andere Modelle, die üblicherweise gradientenbasierte Löser verwenden, haben ein anderes Verhalten. Sie alle bieten einen
max_iterParameter. Die berichteten_iter_entspricht der Anzahl der Iterationen, die während des letzten Aufrufs vonfitdurchgeführt wurden, und ist höchstensmax_iter. Daher betrachten wir nicht den Zustand des Schätzers seit der Initialisierung.partial_fitbehält ebenfalls das Modell zwischen den Aufrufen bei, unterscheidet sich aber: beiwarm_startändern sich die Parameter und die Daten sind (mehr oder weniger) konstant über die Aufrufe vonfit; beipartial_fitändern sich die Mini-Batches von Daten und die Modellparameter bleiben fest.Es gibt Fälle, in denen Sie
warm_startverwenden 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 vonwarm_startAufrufen vonfitSamples 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 sollteclasses_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 mitpreprocessing.LabelEncoderverwaltet.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 inintercept_gespeichert ist.Wenn verfügbar, wird
feature_importances_normalerweise nicht bereitgestellt, kann aber als Norm des Eintrags jedes Merkmals incoef_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
groupsWertes 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_weightkann 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_weightals auchclass_weightangegeben 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.KMeansvon 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.
Xist 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
yund tun dies manchmal sogar, wenn mehrere Ausgaben angenommen werden.