[PYTHON] Reduzieren Sie redundante Dummy-Variablen mit OneHotEndoder

Einführung

Wenn Sie den OneHotEncoder von scikit-learn unverändert verwenden, werden Dummy-Variablen für die Anzahl der Ebenen kategorialer Variablen erstellt. In diesem Fall tritt bei der linearen Regressionsmethode eine multiple Co-Linearität auf, daher möchten wir die Dummy-Variable auf die Anzahl der Ebenen -1 reduzieren. Ich habe herausgefunden, wie es geht, also notiere es dir.

Umgebung

Methode

Wenn Sie die Drop-Option von OneHotEncoder auf "first" setzen, wird die erste Dummy-Variable entfernt.

Lass es uns versuchen

Hier extrahieren wir die Spalte, in der die folgenden kategorialen Variablen gespeichert sind, und machen sie zu kategorialen Variablen.

[['D']
 ['D']
 ['D']
 ['T']
 ['T']
 ['T']
 ['N']
 ['N']
 ['N']]

Die Quelle ist wie folgt. Wenn Sie die Drop-Option auf "first" setzen, werden Sie wütend, wenn Sie handle_unknown = 'error' nicht setzen.

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import OneHotEncoder
import numpy as np

def main():

    X = np.array([
        [1, "D"],
        [3, "D"],
        [5, "D"],
        [2, "T"],
        [4, "T"],
        [6, "T"],
        [1, "N"],
        [8, "N"],
        [2, "N"],
        ])
    y = np.array([2, 6, 10, 6, 12, 18, 1, 8, 2])

    #Nehmen Sie die zweite Reihe heraus
    category = X[:, [1]]
    print(category)
    encoder = OneHotEncoder(handle_unknown='error', drop='first')
    encoder.fit(category)
    result = encoder.transform(category)
    print(result.toarray())


if __name__ == "__main__":
    main()

Ergebnis

Wenn drop = 'first' nicht hinzugefügt wird.

[[1. 0. 0.]
 [1. 0. 0.]
 [1. 0. 0.]
 [0. 0. 1.]
 [0. 0. 1.]
 [0. 0. 1.]
 [0. 1. 0.]
 [0. 1. 0.]
 [0. 1. 0.]]

Wenn drop = 'Faust' hinzugefügt wird

[[0. 0.]
 [0. 0.]
 [0. 0.]
 [0. 1.]
 [0. 1.]
 [0. 1.]
 [1. 0.]
 [1. 0.]
 [1. 0.]]

Sicher ist die erste Spalte weg. Jetzt können Sie die Fit-Methode ohne zu zögern aufrufen.

Recommended Posts

Reduzieren Sie redundante Dummy-Variablen mit OneHotEndoder
Umgebungsvariablen mit Lambda-Uploader einstellen
Maschinelles Lernen mit Python ohne Verlust an kategoriale Variablen (Dummy-Variablenkonvertierung)