Utilities für Entwickler#
Scikit-learn enthält eine Reihe von Hilfsprogrammen zur Unterstützung der Entwicklung. Diese befinden sich in sklearn.utils und umfassen Werkzeuge in verschiedenen Kategorien. Alle folgenden Funktionen und Klassen befinden sich im Modul sklearn.utils.
Warnung
Diese Hilfsprogramme sind für die interne Verwendung innerhalb des scikit-learn-Pakets bestimmt. Ihre Stabilität zwischen den Versionen von scikit-learn wird nicht garantiert. Insbesondere Backports werden entfernt, wenn sich die scikit-learn-Abhängigkeiten weiterentwickeln.
Validierungswerkzeuge#
Dies sind Werkzeuge zur Überprüfung und Validierung von Eingaben. Wenn Sie eine Funktion schreiben, die Arrays, Matrizen oder dünne Matrizen als Argumente akzeptiert, sollten die folgenden Werkzeuge, wo zutreffend, verwendet werden.
assert_all_finite: Löst einen Fehler aus, wenn das Array NaNs oder Infs enthält.as_float_array: Konvertiert die Eingabe in ein Array von Gleitkommazahlen. Wenn eine dünne Matrix übergeben wird, wird eine dünne Matrix zurückgegeben.check_array: Überprüft, ob die Eingabe ein 2D-Array ist, und löst bei dünnen Matrizen einen Fehler aus. Erlaubte Formate für dünne Matrizen können optional angegeben werden, ebenso wie die Zulassung von 1D- oder N-dimensionalen Arrays. Ruft standardmäßigassert_all_finiteauf.check_X_y: Überprüft, ob X und y konsistente Längen haben, ruft check_array für X und column_or_1d für y auf. Für Multilabel-Klassifizierung oder Multitarget-Regression geben Sie multi_output=True an, in diesem Fall wird check_array für y aufgerufen.indexable: Überprüft, ob alle Eingabearrays konsistente Längen haben und sicher geschnitten oder indiziert werden können. Dies wird zur Validierung der Eingabe für die Kreuzvalidierung verwendet.validation.check_memoryprüft, ob die Eingabejoblib.Memory-ähnlich ist, was bedeutet, dass sie in einesklearn.utils.Memory-Instanz (typischerweise ein String, der dascachedirangibt) konvertiert werden kann oder die gleiche Schnittstelle hat.
Wenn Ihr Code auf einen Zufallszahlengenerator angewiesen ist, sollten Sie niemals Funktionen wie numpy.random.random oder numpy.random.normal verwenden. Dieser Ansatz kann zu Wiederholbarkeitsproblemen in Unit-Tests führen. Stattdessen sollte ein numpy.random.RandomState-Objekt verwendet werden, das aus einem random_state-Argument erstellt wird, das an die Klasse oder Funktion übergeben wird. Die Funktion check_random_state kann dann verwendet werden, um ein Zufallszahlengeneratorobjekt zu erstellen.
check_random_state: Erstellt einnp.random.RandomState-Objekt aus einem Parameterrandom_state.Wenn
random_stateNoneodernp.randomist, wird ein zufällig initialisiertesRandomState-Objekt zurückgegeben.Wenn
random_stateeine Ganzzahl ist, wird sie zum Seed eines neuenRandomState-Objekts verwendet.Wenn
random_stateeinRandomState-Objekt ist, wird es weitergereicht.
Zum Beispiel
>>> from sklearn.utils import check_random_state
>>> random_state = 0
>>> random_state = check_random_state(random_state)
>>> random_state.rand(4)
array([0.5488135 , 0.71518937, 0.60276338, 0.54488318])
Bei der Entwicklung Ihres eigenen scikit-learn-kompatiblen Schätzers stehen Ihnen die folgenden Helfer zur Verfügung.
validation.check_is_fitted: Überprüft, ob der Schätzer vor dem Aufruf vontransform,predictoder ähnlichen Methoden trainiert wurde. Dieser Helfer ermöglicht die Ausgabe einer standardisierten Fehlermeldung über Schätzer hinweg.validation.has_fit_parameter: Überprüft, ob ein bestimmter Parameter in derfit-Methode eines gegebenen Schätzers unterstützt wird.
Effiziente lineare Algebra & Array-Operationen#
extmath.randomized_range_finder: Erstellt eine orthonormale Matrix, deren Bereich den Bereich der Eingabe approximiert. Dies wird inextmath.randomized_svd, unten, verwendet.extmath.randomized_svd: Berechnet die k-trunkierte randomisierte SVD. Dieser Algorithmus findet die exakte trunkierte Singulärwertzerlegung unter Verwendung von Randomisierung zur Beschleunigung der Berechnungen. Er ist besonders schnell auf großen Matrizen, bei denen Sie nur wenige Komponenten extrahieren möchten.arrayfuncs.cholesky_delete: (verwendet inlars_path) Entfernt ein Element aus einer Cholesky-Faktorisierung.arrayfuncs.min_pos: (verwendet insklearn.linear_model.least_angle) Findet das Minimum der positiven Werte in einem Array.extmath.fast_logdet: Berechnet effizient den Logarithmus der Determinante einer Matrix.extmath.density: Berechnet effizient die Dichte eines dünnen Vektorsextmath.safe_sparse_dot: Skalarprodukt, dasscipy.sparse-Eingaben korrekt behandelt. Wenn die Eingaben dicht sind, ist es äquivalent zunumpy.dot.extmath.weighted_mode: eine Erweiterung vonscipy.stats.mode, die es jedem Element erlaubt, ein reellwertiges Gewicht zu haben.resample: Arrays oder dünne Matrizen auf konsistente Weise neu abtasten. Wird inshuffle, unten, verwendet.shuffle: Arrays oder dünne Matrizen auf konsistente Weise mischen. Wird ink_meansverwendet.
Effizientes Zufälliges Abtasten#
random.sample_without_replacement: Implementiert effiziente Algorithmen zum Ziehen vonn_samplesganzen Zahlen aus einer Grundgesamtheit der Größen_populationohne Zurücklegen.
Effiziente Routinen für dünne Matrizen#
Das Cython-Modul sklearn.utils.sparsefuncs enthält kompilierte Erweiterungen zur effizienten Verarbeitung von scipy.sparse-Daten.
sparsefuncs.mean_variance_axis: Berechnet die Mittelwerte und Varianzen entlang einer bestimmten Achse einer CSR-Matrix. Wird zur Normalisierung des Toleranz-Stoppkriteriums inKMeansverwendet.sparsefuncs_fast.inplace_csr_row_normalize_l1undsparsefuncs_fast.inplace_csr_row_normalize_l2: Können verwendet werden, um einzelne dünne Stichproben auf eine L1- oder L2-Norm von eins zu normalisieren, wie es inNormalizergeschieht.sparsefuncs.inplace_csr_column_scale: Kann verwendet werden, um die Spalten einer CSR-Matrix mit einer konstanten Skala zu multiplizieren (eine Skala pro Spalte). Wird zum Skalieren von Merkmalen auf eine Einheitsstandardabweichung inStandardScalerverwendet.sort_graph_by_row_values: Kann verwendet werden, um eine dünne CSR-Matrix so zu sortieren, dass jede Zeile mit steigenden Werten gespeichert wird. Dies ist nützlich, um die Effizienz bei der Verwendung von vortrainierten dünnen Distanzmatrizen in Schätzern zu verbessern, die auf Graphen nächster Nachbarn angewiesen sind.
Graph-Routinen#
graph.single_source_shortest_path_length: (derzeit nicht in scikit-learn verwendet) Gibt den kürzesten Pfad von einer einzelnen Quelle zu allen verbundenen Knoten in einem Graphen zurück. Der Code ist von networkx adaptiert. Wenn dies jemals wieder benötigt wird, wäre es weitaus schneller, eine einzelne Iteration des Dijkstra-Algorithmus vongraph_shortest_pathzu verwenden.
Testfunktionen#
discovery.all_estimators: Gibt eine Liste aller Schätzer in scikit-learn zurück, um konsistentes Verhalten und Schnittstellen zu testen.discovery.all_displays: Gibt eine Liste aller Anzeigen (bezogen auf die Plotting-API) in scikit-learn zurück, um konsistentes Verhalten und Schnittstellen zu testen.discovery.all_functions: Gibt eine Liste aller Funktionen in scikit-learn zurück, um konsistentes Verhalten und Schnittstellen zu testen.
Hilfsfunktion für Mehrklassen und Mehrlabels#
multiclass.is_multilabel: Hilfsfunktion zur Überprüfung, ob die Aufgabe eine Mehrklassenklassifizierung ist.multiclass.unique_labels: Hilfsfunktion zur Extraktion eines geordneten Arrays eindeutiger Labels aus verschiedenen Zielformaten.
Hilfsfunktionen#
gen_even_slices: Generator zur Erstellung vonn-er Gruppen von Slices bis zun. Wird indict_learningundk_meansverwendet.gen_batches: Generator zur Erstellung von Slices, die Batch-Größen-Elemente von 0 bisnenthaltensafe_mask: Hilfsfunktion zur Konvertierung einer Maske in das Format, das von dem Numpy-Array oder der dünnen SciPy-Matrix erwartet wird, auf der sie verwendet werden soll (dünne Matrizen unterstützen nur Ganzzahlindizes, während Numpy-Arrays sowohl boolesche Masken als auch Ganzzahlindizes unterstützen).safe_sqr: Hilfsfunktion für die einheitliche Quadrierung (**2) von Array-ähnlichen Objekten, Matrizen und dünnen Matrizen.
Hash-Funktionen#
murmurhash3_32stellt einen Python-Wrapper für die nicht kryptografische Hash-FunktionMurmurHash3_x86_32C++ bereit. Diese Hash-Funktion eignet sich für die Implementierung von Lookup-Tabellen, Bloom-Filtern, Count Min Sketch, Feature-Hashing und implizit definierten dünnen Zufallsprojektionen.>>> from sklearn.utils import murmurhash3_32 >>> murmurhash3_32("some feature", seed=0) == -384616559 True >>> murmurhash3_32("some feature", seed=0, positive=True) == 3910350737 True
Das Modul
sklearn.utils.murmurhashkann auch von anderen Cython-Modulen „cimportiert“ werden, um von der hohen Leistung von MurmurHash zu profitieren und gleichzeitig den Overhead des Python-Interpreters zu umgehen.
Warnungen und Ausnahmen#
deprecated: Dekorator zum Markieren einer Funktion oder Klasse als veraltet.ConvergenceWarning: Benutzerdefinierte Warnung zum Abfangen von Konvergenzproblemen. Wird insklearn.covariance.graphical_lassoverwendet.