KBinsDiscretizer#

class sklearn.preprocessing.KBinsDiscretizer(n_bins=5, *, encode='onehot', strategy='quantile', quantile_method='warn', dtype=None, subsample=200000, random_state=None)[Quelle]#

Teilt kontinuierliche Daten in Intervalle auf.

Lesen Sie mehr im Benutzerhandbuch.

Hinzugefügt in Version 0.20.

Parameter:
n_binsint oder array-ähnlich mit Form (n_features,), Standardwert=5

Die Anzahl der zu erzeugenden Binns. Löst ValueError aus, wenn n_bins < 2.

encode{‘onehot’, ‘onehot-dense’, ‘ordinal’}, Standardwert=’onehot’

Methode zur Kodierung des transformierten Ergebnisses.

  • ‘onehot’: Kodiert das transformierte Ergebnis mit One-Hot-Kodierung und gibt eine sparse Matrix zurück. Ignorierte Features werden immer nach rechts angehängt.

  • ‘onehot-dense’: Kodiert das transformierte Ergebnis mit One-Hot-Kodierung und gibt ein dichtes Array zurück. Ignorierte Features werden immer nach rechts angehängt.

  • ‘ordinal’: Gibt die Bin-ID als ganzzahligen Wert zurück.

strategy{‘uniform’, ‘quantile’, ‘kmeans’}, Standardwert=’quantile’

Strategie zur Bestimmung der Breiten der Bins.

  • ‘uniform’: Alle Bins in jedem Feature haben die gleiche Breite.

  • ‘quantile’: Alle Bins in jedem Feature haben die gleiche Anzahl von Punkten.

  • ‘kmeans’: Werte in jedem Bin haben denselben nächsten Zentrum eines 1D-K-Means-Clusters.

Ein Beispiel für die verschiedenen Strategien finden Sie unter: Demonstration der verschiedenen Strategien von KBinsDiscretizer.

quantile_method{“inverted_cdf”, “averaged_inverted_cdf”,

“closest_observation”, “interpolated_inverted_cdf”, “hazen”, “weibull”, “linear”, “median_unbiased”, “normal_unbiased”}, Standardwert=”linear” Methode, die an die np.percentile-Berechnung übergeben wird, wenn strategy=”quantile” verwendet wird. Nur averaged_inverted_cdf und inverted_cdf unterstützen die Verwendung von sample_weight != None, wenn keine Unterabtastung aktiv ist.

Hinzugefügt in Version 1.7.

dtype{np.float32, np.float64}, Standardwert=None

Der gewünschte Datentyp für die Ausgabe. Wenn None, ist der Ausgabedatentyp mit dem Eingabedatentyp konsistent. Nur np.float32 und np.float64 werden unterstützt.

Hinzugefügt in Version 0.24.

subsampleint oder None, Standardwert=200_000

Maximale Anzahl von Samples, die zur Anpassung des Modells verwendet werden, aus Gründen der rechnerischen Effizienz. subsample=None bedeutet, dass alle Trainingssamples zur Berechnung der Quantile verwendet werden, die die Binning-Schwellenwerte bestimmen. Da die Quantilberechnung auf dem Sortieren jeder Spalte von X beruht und das Sortieren eine Zeitkomplexität von n log(n) hat, wird die Unterabtastung bei Datensätzen mit einer sehr großen Anzahl von Samples empfohlen.

Geändert in Version 1.3: Der Standardwert von subsample wurde von None auf 200_000 geändert, wenn strategy="quantile".

Geändert in Version 1.5: Der Standardwert von subsample wurde von None auf 200_000 geändert, wenn strategy="uniform" oder strategy="kmeans".

random_stateint, RandomState-Instanz oder None, default=None

Bestimmt die Zufallszahlengenerierung für die Unterabtastung. Geben Sie eine Ganzzahl an, um reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg zu erzielen. Siehe den Parameter subsample für weitere Details. Siehe Glossar.

Hinzugefügt in Version 1.1.

Attribute:
bin_edges_ndarray mit Form (n_features,) von ndarrays

Die Kanten jedes Bins. Enthält Arrays mit unterschiedlichen Formen (n_bins_, ). Ignorierte Features haben leere Arrays.

n_bins_ndarray mit Form (n_features,), dtype=np.int64

Anzahl der Bins pro Feature. Bins, deren Breite zu klein ist (d. h. <= 1e-8), werden mit einer Warnung entfernt.

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

Hinzugefügt in Version 0.24.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der während fit gesehenen Merkmale. Nur definiert, wenn X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

Siehe auch

Binarizer

Klasse, die zur Binning von Werten als 0 oder 1 basierend auf einem Parameter threshold verwendet wird.

Anmerkungen

Eine Visualisierung der Diskretisierung auf verschiedenen Datensätzen finden Sie unter Feature-Diskretisierung. Zur Auswirkung der Diskretisierung auf lineare Modelle siehe: Verwendung von KBinsDiscretizer zur Diskretisierung kontinuierlicher Features.

In den Bin-Kanten für Feature i werden der erste und letzte Wert nur für inverse_transform verwendet. Während der Transformation werden die Bin-Kanten erweitert auf

np.concatenate([-np.inf, bin_edges_[i][1:-1], np.inf])

Sie können KBinsDiscretizer mit ColumnTransformer kombinieren, wenn Sie nur einen Teil der Features vorverarbeiten möchten.

KBinsDiscretizer kann konstante Features erzeugen (z. B. wenn encode = 'onehot' und bestimmte Bins keine Daten enthalten). Diese Features können mit Algorithmen zur Feature-Auswahl entfernt werden (z. B. VarianceThreshold).

Beispiele

>>> from sklearn.preprocessing import KBinsDiscretizer
>>> X = [[-2, 1, -4,   -1],
...      [-1, 2, -3, -0.5],
...      [ 0, 3, -2,  0.5],
...      [ 1, 4, -1,    2]]
>>> est = KBinsDiscretizer(
...     n_bins=3, encode='ordinal', strategy='uniform'
... )
>>> est.fit(X)
KBinsDiscretizer(...)
>>> Xt = est.transform(X)
>>> Xt
array([[ 0., 0., 0., 0.],
       [ 1., 1., 1., 0.],
       [ 2., 2., 2., 1.],
       [ 2., 2., 2., 2.]])

Manchmal kann es nützlich sein, die Daten zurück in den ursprünglichen Feature-Raum zu konvertieren. Die Funktion inverse_transform konvertiert die gebinnten Daten zurück in den ursprünglichen Feature-Raum. Jeder Wert wird gleich dem Mittelwert der beiden Bin-Kanten sein.

>>> est.bin_edges_[0]
array([-2., -1.,  0.,  1.])
>>> est.inverse_transform(Xt)
array([[-1.5,  1.5, -3.5, -0.5],
       [-0.5,  2.5, -2.5, -0.5],
       [ 0.5,  3.5, -1.5,  0.5],
       [ 0.5,  3.5, -1.5,  1.5]])

Obwohl dieser Vorverarbeitungsschritt eine Optimierung sein kann, ist es wichtig zu beachten, dass das von inverse_transform zurückgegebene Array intern den Typ np.float64 oder np.float32 hat, was durch das Eingabeargument dtype bestimmt wird. Dies kann den Speicherbedarf des Arrays drastisch erhöhen. Sehen Sie sich das Beispiel zur Vektorisierung an, bei dem KBinsDescretizer zur Clusterbildung des Bildes in Bins verwendet wird und die Größe des Bildes um das 8-fache erhöht.

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

Passt den Schätzer an.

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

Zu diskretisierende Daten.

yNone

Ignoriert. Dieser Parameter existiert nur zur Kompatibilität mit Pipeline.

sample_weightndarray mit Form (n_samples,)

Enthält Gewichtungswerte, die jedem Sample zugeordnet werden.

Hinzugefügt in Version 1.3.

Geändert in Version 1.7: Unterstützung für strategy=”uniform” hinzugefügt.

Gibt zurück:
selfobject

Gibt die Instanz selbst zurück.

fit_transform(X, y=None, **fit_params)[Quelle]#

An Daten anpassen, dann transformieren.

Passt den Transformer an X und y mit optionalen Parametern fit_params an und gibt eine transformierte Version von X zurück.

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

Eingabestichproben.

yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None

Zielwerte (None für unüberwachte Transformationen).

**fit_paramsdict

Zusätzliche Fit-Parameter. Nur übergeben, wenn der Estimator zusätzliche Parameter in seiner fit-Methode akzeptiert.

Gibt zurück:
X_newndarray array der Form (n_samples, n_features_new)

Transformiertes Array.

get_feature_names_out(input_features=None)[Quelle]#

Gibt die Ausgabefeature-Namen zurück.

Parameter:
input_featuresarray-like von str oder None, default=None

Eingabemerkmale.

  • Wenn input_features None ist, werden feature_names_in_ als Merkmalnamen verwendet. Wenn feature_names_in_ nicht definiert ist, werden die folgenden Eingabemerkmalsnamen generiert: ["x0", "x1", ..., "x(n_features_in_ - 1)"].

  • Wenn input_features ein Array-ähnliches Objekt ist, muss input_features mit feature_names_in_ übereinstimmen, wenn feature_names_in_ definiert ist.

Gibt zurück:
feature_names_outndarray von str-Objekten

Transformierte Merkmalnamen.

get_metadata_routing()[Quelle]#

Holt das Metadaten-Routing dieses Objekts.

Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.

Gibt zurück:
routingMetadataRequest

Ein MetadataRequest, der Routing-Informationen kapselt.

get_params(deep=True)[Quelle]#

Holt Parameter für diesen Schätzer.

Parameter:
deepbool, default=True

Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.

Gibt zurück:
paramsdict

Parameternamen, zugeordnet ihren Werten.

inverse_transform(X)[Quelle]#

Transformiert diskretisierte Daten zurück in den ursprünglichen Feature-Raum.

Beachten Sie, dass diese Funktion die Originaldaten aufgrund der Diskretisierungsrundung nicht wiederherstellt.

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

Transformierte Daten im Bin-Raum.

Gibt zurück:
X_originalndarray, dtype={np.float32, np.float64}

Daten im ursprünglichen Feature-Raum.

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') KBinsDiscretizer[Quelle]#

Konfiguriert, ob Metadaten für die fit-Methode angefordert werden sollen.

Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit enable_metadata_routing=True aktiviert ist (siehe sklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.

Die Optionen für jeden Parameter sind

  • True: Metadaten werden angefordert und, falls vorhanden, an fit übergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an fit.

  • None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.

  • str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.

Der Standardwert (sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.

Hinzugefügt in Version 1.3.

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

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

Gibt zurück:
selfobject

Das aktualisierte Objekt.

set_output(*, transform=None)[Quelle]#

Ausgabecontainer festlegen.

Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.

Parameter:
transform{“default”, “pandas”, “polars”}, default=None

Konfiguriert die Ausgabe von transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

  • None: Die Transformationskonfiguration bleibt unverändert

Hinzugefügt in Version 1.4: Die Option "polars" wurde hinzugefügt.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

set_params(**params)[Quelle]#

Setzt die Parameter dieses Schätzers.

Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie Pipeline). Letztere haben Parameter der Form <component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.

Parameter:
**paramsdict

Schätzer-Parameter.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

transform(X)[Quelle]#

Diskretisiert die Daten.

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

Zu diskretisierende Daten.

Gibt zurück:
Xt{ndarray, sparse matrix}, dtype={np.float32, np.float64}

Daten im Bin-Raum. Wird eine sparse Matrix sein, wenn self.encode='onehot', andernfalls ein ndarray.