[PYTHON] [Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.3. Datenvorverarbeitung

google übersetzte http://scikit-learn.org/0.18/modules/preprocessing.html [scikit-learn 0.18 Benutzerhandbuch 4. Datensatzkonvertierung](http://qiita.com/nazoking@github/items/267f2371757516f8c168#4-%E3%83%87%E3%83%BC%E3%82%BF Von% E3% 82% BB% E3% 83% 83% E3% 83% 88% E5% A4% 89% E6% 8F% 9B)


4.3. Datenvorverarbeitung

Das Paket "sklearn.preprocessing" bietet einige allgemeine Dienstprogrammfunktionen und Transformationsklassen zum Transformieren von Rohmerkmalsvektoren in eine Darstellung, die für nachgeschaltete Schätzer geeignet ist.

4.3.1 Standardisierung, durchschnittliche Entfernung und Dispersionsskalierung

Die ** Standardisierung ** des Datensatzes ist eine häufige Anforderung ** vieler Schätzer für maschinelles Lernen, die in Scikit-Learn implementiert sind. Wenn die einzelnen Merkmale nicht wie normalverteilte Daten aussehen, dh bei einer Gaußschen Verteilung mit einem Mittelwert von Null und einer Einheitsvarianz, können sie sich schlecht verhalten. In der Praxis wird die Form der Verteilung ignoriert, der Durchschnittswert jedes Merkmals entfernt, die Daten in die Mitte transformiert, das instationäre Merkmal durch die Standardabweichung dividiert und skaliert. Beispielsweise sind in vielen Elementen, die in Zielfunktionen des Lernalgorithmus verwendet werden (wie dem RBF-Kernel von Support Vector Machines und den l1- und l2-Normalisierern linearer Modelle), alle Merkmale auf Null zentriert und in derselben Reihenfolge verteilt. Angenommen, Sie haben. Wenn die Varianz eines Merkmals größer als die Reihenfolge eines anderen ist, kann sie die Zielfunktion dominieren, und der Schätzer lernt möglicherweise nicht wie erwartet korrekt von den anderen Merkmalen. scale Diese Funktion funktioniert für ein einzelnes Array-ähnliches Dataset. Es bietet eine schnelle und einfache Möglichkeit, Vorgänge auszuführen.

>>> from sklearn import preprocessing
>>> import numpy as np
>>> X = np.array([[ 1., -1.,  2.],
...               [ 2.,  0.,  0.],
...               [ 0.,  1., -1.]])
>>> X_scaled = preprocessing.scale(X)

>>> X_scaled                                          
array([[ 0.  ..., -1.22...,  1.33...],
       [ 1.22...,  0.  ..., -0.26...],
       [-1.22...,  1.22..., -1.06...]])

Der Mittelwert und die Einheitsvarianz der skalierten Daten ist Null.

>>>
>>> X_scaled.mean(axis=0)
array([ 0.,  0.,  0.])

>>> X_scaled.std(axis=0)
array([ 1.,  1.,  1.])

Darüber hinaus ist das Modul "Vorverarbeitung" eine Dienstprogrammklasse [StandardScaler](http://scikit-learn.org/0.18/modules/generated/sklearn.preprocessing.StandardScaler.html#sklearn.preprocessing.StandardScaler], die die API "Transformer" implementiert. ) Berechnung des Mittelwerts und der Standardabweichung des Trainingssatzes, damit dieselbe Transformation später erneut auf den Testsatz angewendet werden kann. Daher wird diese Klasse in den frühen Phasen von [sklearn.pipeline.Pipeline] verwendet (http://scikit-learn.org/0.18/modules/generated/sklearn.pipeline.Pipeline.html#sklearn.pipeline.Pipeline). Passend für.

Scaler-Instanzen können für neue Daten verwendet und auf die gleiche Weise wie Trainingssätze transformiert werden.

Entweder with_mean = False oder with_std = False in StandardScaler Sie können die Zentrierung oder Skalierung deaktivieren, indem Sie sie an den Konstruktor übergeben.

4.3.1.1. Skalieren von Features über einen Bereich

Ein weiterer Standard ist eine Skalierungsfunktion, mit der ein bestimmter Minimal- und Maximalwert zwischen Null und Eins liegen kann oder der maximale Absolutwert jedes Features auf eine Einheitsgröße skaliert werden kann. Gibt es. Dies ist entweder MinMaxScaler oder [MaxAbsScaler](http: // scikit-learn) Dies kann mit .org / 0.18 / modules / generate / sklearn.preprocessing.MaxAbsScaler.html (sklearn.preprocessing.MaxAbsScaler) erreicht werden. Zu den Motiven für die Verwendung dieser Skalierung gehören die Robustheit gegenüber sehr kleinen Standardabweichungen von Merkmalen und die Beibehaltung von Nulleinträgen mit geringen Datenmengen. Das Folgende ist ein Beispiel für die Skalierung einer Spielzeugdatenmatrix auf den Bereich "[0, 1]".

>>> X_train = np.array([[ 1., -1.,  2.],
...                     [ 2.,  0.,  0.],
...                     [ 0.,  1., -1.]])
...
>>> min_max_scaler = preprocessing.MinMaxScaler()
>>> X_train_minmax = min_max_scaler.fit_transform(X_train)
>>> X_train_minmax
array([[ 0.5       ,  0.        ,  1.        ],
       [ 1.        ,  0.5       ,  0.33333333],
       [ 0.        ,  1.        ,  0.        ]])

Sie können dieselbe Instanz des Transformators auf einige neue Testdaten anwenden, die während des Anpassungsaufrufs nicht sichtbar sind. Die gleichen Skalierungs- und Verschiebungsoperationen werden angewendet, um die an den Trainingsdaten durchgeführten Transformationen abzugleichen.

>>> X_test = np.array([[ -3., -1.,  4.]])
>>> X_test_minmax = min_max_scaler.transform(X_test)
>>> X_test_minmax
array([[-1.5       ,  0.        ,  1.66666667]])

Wenn Sie sich die Attribute des Skalierers ansehen, können Sie die genaue Art der in den Trainingsdaten gelernten Transformationen ermitteln.

>>> min_max_scaler.scale_                             
array([ 0.5       ,  0.5       ,  0.33...])

>>> min_max_scaler.min_                               
array([ 0.        ,  0.5       ,  0.33...])

MinMaxScaler erhält einen expliziten feature_range = (min, max) Wenn ja, wäre die vollständige Formel:

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))

X_scaled = X_std / (max - min) + min

MaxAbsScaler funktioniert sehr gut, aber die Trainingsdaten sind ` Teilen und skalieren Sie den Maximalwert jedes Features so, dass er im Bereich [-1, 1] liegt. Dies bedeutet Daten, die sich bereits in der Mitte von Null oder spärlichen Daten befinden. So verwenden Sie die Daten aus dem vorherigen Beispiel mit diesem Skalierer:

>>> X_train = np.array([[ 1., -1.,  2.],
...                     [ 2.,  0.,  0.],
...                     [ 0.,  1., -1.]])
...
>>> max_abs_scaler = preprocessing.MaxAbsScaler()
>>> X_train_maxabs = max_abs_scaler.fit_transform(X_train)
>>> X_train_maxabs                # doctest +NORMALIZE_WHITESPACE^
array([[ 0.5, -1. ,  1. ],
       [ 1. ,  0. ,  0. ],
       [ 0. ,  1. , -0.5]])
>>> X_test = np.array([[ -3., -1.,  4.]])
>>> X_test_maxabs = max_abs_scaler.transform(X_test)
>>> X_test_maxabs                 
array([[-1.5, -1. ,  2. ]])
>>> max_abs_scaler.scale_         
array([ 2.,  1.,  2.])

Module sind wie scale eine nützliche Funktion minmax_scale, wenn Sie keine Objekte erstellen möchten. .minmax_scale) und maxabs_scale werden bereitgestellt.

4.3.1.2. Spärliche Datenskalierung

Das Zentrieren von Daten mit geringer Dichte ist selten gut, da dadurch die Struktur der Daten mit geringer Dichte zerstört wird. Die Funktionen können jedoch in unterschiedlichen Maßstäben vorliegen. MaxAbsScaler und maxabs_scale /modules/generated/sklearn.preprocessing.maxabs_scale.html#sklearn.preprocessing.maxabs_scale) wurde speziell für die Skalierung von Daten mit geringer Dichte entwickelt und ist die empfohlene Methode. Allerdings scale und StandardScaler /0.18/modules/generated/sklearn.preprocessing.StandardScaler.html#sklearn.preprocessing.StandardScaler) akzeptiert die Matrix "scipy.sparse" als Eingabe, solange "with_mean = False" explizit an den Konstruktor übergeben wird. tun können. Andernfalls wird die dünn besetzte Matrix leise zentriert und erweitert, wodurch unbeabsichtigt zu viel Speicher zugewiesen und abgestürzt wird, was zu einem ValueError führt. RobustScaler kann die Eingabe nicht spärlich machen, aber die "transform" -Methode Kann in spärlichen Matrizen verwendet werden.

Der Skalierer akzeptiert sowohl die Formate "Komprimierte spärliche Zeilen" als auch "Komprimierte sparsame Spalten" (siehe "scipy.sparse.csr_matrix" und "scipy.sparse.csc_matrix"). Andere Eingaben mit geringer Dichte werden ** in CSR-Matrizen konvertiert **. Wir empfehlen, dass Sie die Upstream-CSR- oder CSC-Darstellung auswählen, um unnötige Speicherkopien zu vermeiden. Wenn Sie schließlich erwarten, dass die Center-Daten klein genug sind, können Sie die Eingabe auch explizit in ein Array konvertieren, indem Sie die Toarray-Methode der Sparse-Matrix verwenden.

4.3.1.3. Skalierung von Daten, die Ausreißer enthalten

Die Skalierung mit Mittelwertbildung und Verteilung von Daten funktioniert möglicherweise nicht gut, wenn die Daten eine große Anzahl von Ausreißern enthalten. In solchen Fällen stattdessen robust_scale und RobustScaler Sie können (: //scikit-learn.org/0.18/modules/generated/sklearn.preprocessing.RobustScaler.html#sklearn.preprocessing.RobustScaler) verwenden. Sie verwenden robustere Schätzer für die Mitte und den Umfang Ihrer Daten.

--Referenz:

4.3.1.4. Kernel-Matrix zentrieren

Wenn Sie eine Kernelmatrix für den Kernel $ K $ haben, die das Punktprodukt in dem durch die Funktion $ phi $ definierten Feature-Space berechnet, dann KernelCenterer .KernelCenterer.html # sklearn.preprocessing.KernelCenterer) kann die Kernelmatrix so transformieren, dass das innere Produkt in den durch $ phi $ definierten Feature-Space aufgenommen wird, und dann den Durchschnitt in diesem Space entfernen.

4.3.2 Normalisierung

** Normalisierung ** ist ein ** Prozess, bei dem einzelne Proben auf einen Einheitsstandard skaliert werden. Dieser Prozess ist nützlich, um die Ähnlichkeit von Probenpaaren unter Verwendung von Sekundärformaten wie Punktprodukten und anderen Kerneln zu quantifizieren. Diese Annahme ist die Grundlage des Vektorraummodells (https://en.wikipedia.org/wiki/Vector_Space_Model), das häufig im Zusammenhang mit der Klassifizierung und Clusterbildung von Text verwendet wird. Die Funktion normalisieren verwendet die Norm "l1" oder "l2". Es bietet eine schnelle und einfache Möglichkeit, diesen Vorgang für Datasets wie ein einzelnes Array auszuführen.

>>> X = [[ 1., -1.,  2.],
...      [ 2.,  0.,  0.],
...      [ 0.,  1., -1.]]
>>> X_normalized = preprocessing.normalize(X, norm='l2')

>>> X_normalized                                      
array([[ 0.40..., -0.40...,  0.81...],
       [ 1.  ...,  0.  ...,  0.  ...],
       [ 0.  ...,  0.70..., -0.70...]])

Das Modul "Vorverarbeitung" verwendet auch die API "Transformer", um denselben Vorgang in der Dienstprogrammklasse Normalizer zu implementieren sklearn.preprocessing.Normalizer) (auch wenn die fit -Methode in diesem Fall nicht hilft, ist diese Operation zustandslos, da sie das Sample unabhängig verarbeitet). Daher ist diese Klasse für die frühzeitige Verwendung von "sklearn.pipeline.Pipeline" geeignet.

>>> normalizer = preprocessing.Normalizer().fit(X)  # fit does nothing
>>> normalizer
Normalizer(copy=True, norm='l2')

Die Normalisiererinstanz kann als beliebiger Transformator im Abtastvektor verwendet werden.

>>> normalizer.transform(X)                            
array([[ 0.40..., -0.40...,  0.81...],
       [ 1.  ...,  0.  ...,  0.  ...],
       [ 0.  ...,  0.70..., -0.70...]])

>>> normalizer.transform([[-1.,  1., 0.]])             
array([[-0.70...,  0.70...,  0.  ...]])

--Sparse Eingabe --normalize und Normalizer akzeptieren sowohl dichte als auch spärliche Matrizen von scipy.sparse als Eingabe.

4.3.3 Binarisierung

4.3.3.1. Feature-Binärisierung

Bei der Merkmalsbinarisierung werden numerische Merkmale mit Schwellenwerten versehen, um Boolesche Werte zu erhalten. Dies ist nützlich für nachgelagerte probabilistische Schätzungen, bei denen davon ausgegangen wird, dass die Eingabedaten gemäß der multivariaten Bernoulli-Verteilung (https://en.wikipedia.org/wiki/Bernoulli_distribution) verteilt sind. Dies ist beispielsweise bei [sklearn.neural_network.BernoulliRBM] der Fall (http://scikit-learn.org/0.18/modules/generated/sklearn.neural_network.BernoulliRBM.html#sklearn.neural_network.BernoulliRBM). Die Verwendung von binären Merkmalswerten (zur Vereinfachung der probabilistischen Inferenz) funktioniert auch dann etwas besser, wenn normalisierte Zählungen (z. B. Termfrequenz) und TF-IDF-bewertete Merkmale tatsächlich etwas besser funktionieren. , Häufig in der Textverarbeitungs-Community. Verwenden Sie binäre Merkmalswerte, auch wenn normalisierte Zählwerte oder TF-IDF-bewertete Merkmale häufig etwas besser funktionieren. Für Normalizer die Dienstprogrammklasse [Binarizer](http: // scikit-learn) .org / 0.18 / modules / generate / sklearn.preprocessing.Binarizer.html # sklearn.preprocessing.Binarizer) ist [sklearn.pipeline.Pipeline](http://scikit-learn.org/0.18/modules/generated/sklearn. Es soll in den frühen Phasen der Pipeline verwendet werden.Pipeline.html # sklearn.pipeline.Pipeline). Die "fit" -Methode bewirkt nichts, da jede Probe unabhängig von den anderen Proben verarbeitet wird.

>>> X = [[ 1., -1.,  2.],
...      [ 2.,  0.,  0.],
...      [ 0.,  1., -1.]]

>>> binarizer = preprocessing.Binarizer().fit(X)  # fit does nothing
>>> binarizer
Binarizer(copy=True, threshold=0.0)

>>> binarizer.transform(X)
array([[ 1.,  0.,  1.],
       [ 1.,  0.,  0.],
       [ 0.,  1.,  0.]])

Sie können den Schwellenwert von Binarizer anpassen.

>>> binarizer = preprocessing.Binarizer(threshold=1.1)
>>> binarizer.transform(X)
array([[ 0.,  0.,  1.],
       [ 1.,  0.,  0.],
       [ 0.,  0.,  0.]])

Für die Klassen StandardScaler und Normalizer ist das Modul "Vorverarbeitung" eine Begleitfunktion [binarize](http://scikit-learn.org/0.18/modules/generated/sklearn.preprocessing. ", Die verwendet wird, wenn die Konvertierungs-API nicht benötigt wird. binarize.html # sklearn.preprocessing.binarize) wird bereitgestellt.

--Sparse Eingabe --binarize und Binarizer akzeptieren sowohl dichte als auch spärliche Matrizen von scipy.sparse als Eingabe.

4.3.4. Kategoriefunktionen codieren

In vielen Fällen werden Features eher kategorisiert als fortlaufende Werte. Zum Beispiel "[" männlich "," weiblich "]", "[" aus Europa "," aus den USA "," aus Asien "]," ["verwendet Firefox", "verwendet Chrome", "verwendet Safari", "Verwendet Internet Explorer"] Solche Funktionen können effizient als Ganzzahlen codiert werden. Zum Beispiel ist "[" männlich "," aus den USA "," verwendet Internet Explorer "]" [0,1,3] "[" weiblich "," aus Asien "," verwendet Chrome "]" ist "[ 1, 2, 1] . Solche ganzzahligen Darstellungen erwarten eine kontinuierliche Eingabe und interpretieren die Kategorien wie geordnet, sodass sie nicht direkt mit dem Scicit-Learn-Schätzer verwendet werden können (häufig wird ein unerwünschter Satz von Browsern willkürlich geordnet Ich tat). Eine Möglichkeit, Kategoriefeatures in Features zu konvertieren, die vom Scikit-Learn-Schätzer verwendet werden können, ist [OneHotEncoder](http://scikit-learn.org/0.18/modules/generated/sklearn.preprocessing.OneHotEncoder.html# sklearn.preprocessing.OneHotEncoder) verwendet die implementierte One-to-K- oder One-Hot-Codierung. Dieser Schätzer konvertiert jedes Kategoriemerkmal mit "m" möglichen Werten in "m" Binärmerkmale, wobei nur eines aktiv bleibt. Fahren Sie mit dem obigen Beispiel fort:

>>> enc = preprocessing.OneHotEncoder()
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])  
OneHotEncoder(categorical_features='all', dtype=<... 'numpy.float64'>,
       handle_unknown='error', n_values='auto', sparse=True)
>>> enc.transform([[0, 1, 3]]).toarray()
array([[ 1.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  1.]])

Standardmäßig wird die Anzahl der Werte, die jedes Feature annehmen kann, automatisch aus dem Datensatz abgeleitet. Sie können dies explizit mit dem Parameter n_values angeben. Der Datensatz hat zwei Geschlechter, drei mögliche Kontinente und vier Webbrowser. Transformieren Sie dann die Datenpunkte entsprechend Ihrer Schätzung. Infolgedessen codieren die ersten beiden Zahlen das Geschlecht, die dritte Nummer den Kontinent und die letzten vier den Webbrowser. Beachten Sie, dass Sie "n_values" explizit festlegen müssen, wenn Ihre Trainingsdaten möglicherweise keine kategorialen Funktionen aufweisen. Zum Beispiel

>>> enc = preprocessing.OneHotEncoder(n_values=[2, 3, 4])
>>> #Beachten Sie, dass die Kategoriewerte für das 2. und 3. Feature fehlen
>>> enc.fit([[1, 2, 3], [0, 2, 0]])  
OneHotEncoder(categorical_features='all', dtype=<... 'numpy.float64'>,
       handle_unknown='error', n_values=[2, 3, 4], sparse=True)
>>> enc.transform([[1, 0, 0]]).toarray()
array([[ 0.,  1.,  1.,  0.,  0.,  1.,  0.,  0.,  0.]])

"Laden von Funktionen aus [dicts](http://qiita.com/nazoking@github/items/b270288fa38aed0a71bf#421-dicts%E3%81%8B%E3%82%89%E3%81%AE%E7%" 89% B9% E5% BE% B4% E9% 87% 8F% E3% 81% AE% E3% 83% AD% E3% 83% BC% E3% 83% 89) ".

4.3.5 Fehlende Wertvervollständigung

Aus verschiedenen Gründen enthalten viele reale Datensätze fehlende Werte und werden häufig als Platzhalter wie Leerzeichen, NaN usw. codiert. Solche Datensätze sind jedoch nicht mit der Scicit-Learn-Schätzung kompatibel, bei der davon ausgegangen wird, dass alle Werte im Array numerisch, aussagekräftig und beibehalten sind. Die grundlegende Strategie für die Verwendung eines unvollständigen Datasets besteht darin, die gesamte Zeile und / oder Spalte zu verwerfen, die den fehlenden Wert enthält. Dies führt jedoch zu Datenverlust (auch wenn dieser unvollständig ist). Eine bessere Strategie besteht darin, fehlende Werte zu ersetzen, d. H. Sie aus bekannten Teilen der Daten abzuleiten. Imputer Die Klasse ist der Durchschnitt oder Median von Zeilen oder Spalten mit fehlenden Werten. Oder verwenden Sie die häufigsten Werte, um eine grundlegende Möglichkeit zum Zuweisen fehlender Werte bereitzustellen. Diese Klasse erlaubt auch verschiedene Codierungen für fehlende Werte. Das folgende Snippet zeigt, wie der Durchschnitt der Spalten mit fehlenden Werten (Achse 0) verwendet wird, um die fehlenden Werte zu ersetzen, die als "np.nan" codiert sind.

>>> import numpy as np
>>> from sklearn.preprocessing import Imputer
>>> imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
>>> imp.fit([[1, 2], [np.nan, 3], [7, 6]])
Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0)
>>> X = [[np.nan, 2], [6, np.nan], [7, 6]]
>>> print(imp.transform(X))                           
[[ 4.          2.        ]
 [ 6.          3.666...]
 [ 7.          6.        ]]

Die Imputer-Klasse unterstützt auch spärliche Matrizen.

>>> import scipy.sparse as sp
>>> X = sp.csc_matrix([[1, 2], [0, 3], [7, 6]])
>>> imp = Imputer(missing_values=0, strategy='mean', axis=0)
>>> imp.fit(X)
Imputer(axis=0, copy=True, missing_values=0, strategy='mean', verbose=0)
>>> X_test = sp.csc_matrix([[0, 2], [6, 0], [7, 6]])
>>> print(imp.transform(X_test))                      
[[ 4.          2.        ]
 [ 6.          3.666...]
 [ 7.          6.        ]]

Beachten Sie, dass die fehlenden Werte hier 0-codiert sind, sodass sie implizit in der Matrix gespeichert werden. Daher ist dieses Format geeignet, wenn mehr Werte als die beobachteten Werte fehlen. Sie können Imputer in Ihrer Pipeline verwenden, um einen zusammengesetzten Schätzer zu erstellen, der die Substitution unterstützt. Siehe Geben Sie fehlende Werte ein, bevor Sie einen Schätzer erstellen (http://scikit-learn.org/0.18/auto_examples/missing_values.html#sphx-glr-auto-examples-missing-values-py). Bitte

4.3.6 Erzeugung polymorpher Merkmale

Das Hinzufügen von Komplexität zum Modell ist häufig nützlich, wobei die nichtlinearen Eigenschaften der Eingabedaten berücksichtigt werden. Eine einfache und gebräuchliche Verwendung sind polymorphe Merkmale, mit denen Sie Begriffe höherer Ordnung und Interaktion für Merkmale erhalten können. Implementiert in PolynomialFeatures:

>>> import numpy as np
>>> from sklearn.preprocessing import PolynomialFeatures
>>> X = np.arange(6).reshape(3, 2)
>>> X                                                 
array([[0, 1],
       [2, 3],
       [4, 5]])
>>> poly = PolynomialFeatures(2)
>>> poly.fit_transform(X)                             
array([[  1.,   0.,   1.,   0.,   0.,   1.],
       [  1.,   2.,   3.,   4.,   6.,   9.],
       [  1.,   4.,   5.,  16.,  20.,  25.]])

Die Funktionalität von X wurde von $ (X_1, X_2) $ in $ (1, X_1, X_2, X_1 ^ 2, X_1X_2, X_2 ^ 2) $ konvertiert. Wenn Sie nur den Interaktionsbegriff zwischen Features benötigen, können Sie ihn mit der Einstellung "interakt_only = True" abrufen.

>>> X = np.arange(9).reshape(3, 3)
>>> X                                                 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> poly = PolynomialFeatures(degree=3, interaction_only=True)
>>> poly.fit_transform(X)                             
array([[   1.,    0.,    1.,    2.,    0.,    0.,    2.,    0.],
       [   1.,    3.,    4.,    5.,   12.,   15.,   20.,   60.],
       [   1.,    6.,    7.,    8.,   42.,   48.,   56.,  336.]])

Die Funktionalität von X wurde von $ (X_1, X_2, X_3) $ in $ (1, X_1, X_2, X_3, X_1X_2, X_1X_3, X_2X_3, X_1X_2X_3) $ konvertiert. Die Polygonfunktion ist Polypolyse [Kernelfunktion](http://qiita.com/nazoking@github/items/2b16be7f7eac940f2e6a#146-%E3%82%AB%E3%83%BC%E3%83%8D%E3%83 Bei Verwendung von% AB% E9% 96% A2% E6% 95% B0) wird die Kernel-Methode (https://en.wikipedia.org/wiki/Kernel_method) (z. B. sklearn.svm.SVC, sklearn.decomposition.KernelPCA Beachten Sie, dass es implizit in /modules/generated/sklearn.decomposition.KernelPCA.html#sklearn.decomposition.KernelPCA)) verwendet wird. Ridge-Regression unter Verwendung der erstellten Polynommerkmale Polygoninterpolation Siehe -polynom-interpolation-py).

4.3.7 Kundenspezifischer Transformator

In vielen Fällen möchten Sie Ihre vorhandenen Python-Funktionen in Transformatoren umwandeln, um Ihre Daten zu bereinigen und zu verarbeiten. Sie können einen Transformator von jeder Funktion aus mit dem FunctionTransformer (http://scikit-learn.org/0.18/modules/generated/sklearn.preprocessing.FunctionTransformer.html#sklearn.preprocessing.FunctionTransformer) implementieren. So erstellen Sie beispielsweise einen Transformator, der Protokolltransformationen in Ihrer Pipeline anwendet:

>>> import numpy as np
>>> from sklearn.preprocessing import FunctionTransformer
>>> transformer = FunctionTransformer(np.log1p)
>>> X = np.array([[0, 1], [2, 3]])
>>> transformer.transform(X)
array([[ 0.        ,  0.69314718],
       [ 1.09861229,  1.38629436]])

Ein vollständiges Codebeispiel für die Verwendung von FunctionTransformer zum Auswählen benutzerdefinierter Features finden Sie unter Auswählen von Spalten mit FunctionTransformer (http://scikit-learn.org/0.18/auto_examples/preprocessing/plot_function_transformer.html#). sphx-glr-auto-examples-preprocessing-plot-function-transformator-py) ".


[scikit-learn 0.18 Benutzerhandbuch 4. Datensatzkonvertierung](http://qiita.com/nazoking@github/items/267f2371757516f8c168#4-%E3%83%87%E3%83%BC%E3%82%BF % E3% 82% BB% E3% 83% 83% E3% 83% 88% E5% A4% 89% E6% 8F% 9B)

© 2010 - 2016, Entwickler von Scikit-Learn (BSD-Lizenz).

Recommended Posts

[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.3. Datenvorverarbeitung
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.5. Zufällige Projektion
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.11. Ensemble-Methode
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.15. Isotonische Regression
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.2 Merkmalsextraktion
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.16. Wahrscheinlichkeitskalibrierung
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.13 Funktionsauswahl
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 3.4. Modellpersistenz
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 2.8. Dichteschätzung
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.4. Unüberwachte Dimensionsreduzierung
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch Inhaltsverzeichnis
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.4. Support Vector Machine
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.12. Mehrklassenalgorithmus und Mehrfachetikettenalgorithmus
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 3.2. Optimieren der Hyperparameter des Schätzers
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.8. Konvertieren Sie das Vorhersageziel (y)
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 2.7. Erkennung von Neuheiten und Ausreißern
[Übersetzung] scicit-learn 0.18 Tutorial Manipulation von Textdaten
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 3.1. Kreuzvalidierung: Bewerten Sie die Leistung des Schätzers
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 3.3. Modellbewertung: Quantifizieren Sie die Qualität der Vorhersage
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.1. Pipeline- und Feature-Union: Kombination von Schätzern
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 3.5. Verifizierungskurve: Zeichnen Sie die Punktzahl, um das Modell zu bewerten
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 2.5. Zerlegen von Signalen in Komponenten (Matrixzerlegungsproblem)
[Übersetzung] scikit-learn 0.18 Tutorial Statistisches Lern-Tutorial für die wissenschaftliche Datenverarbeitung
Korrelation durch Datenvorverarbeitung
Vorverarbeitung von Präfekturdaten
Implementieren Sie die Normalisierung der Vorverarbeitung von Python-Trainingsdaten mit scicit-learn [fit_transform].
Vorverarbeitung von Textdaten (Vektorisierung, TF-IDF)
Pandas Benutzerhandbuch "Tabellenformatierung und Pivot-Tabelle" (offizielles Dokument Japanische Übersetzung)