Ich versuche, Datensatzspalten für die lineare Regression zu standardisieren.
Eine der Spalten hat die Standardabweichung = 0.
def standardize(X):
return (X - mean(X)) / std(X)
Dieser Code funktioniert also nicht.
Gibt es irgendwelche Tricks, um dieses Problem zu lösen? Ich habe zwei Dinge versucht
- Werfen Sie die Spalte mit der Standardabweichung 0 weg, da dies ein nutzloser Parameter ist.
- Fügen Sie einem der Elemente der Spalte ein sehr kleines Rauschen wie , damit die Funktion funktioniert.
standardize
Vielen Dank!
regression
standardization
Pratik Deoghare
quelle
quelle
Antworten:
Die von Ihnen beschriebene Situation ergibt sich aus einem dieser beiden Szenarien:
Für Szenario 1 : Überspringen Sie diese Spalte, standardisieren Sie alle anderen Spalten und führen Sie die Regression wie gewohnt aus.
In Szenario 2 müssen Sie diese zusätzliche konstante Spalte jedoch vollständig entfernen. Unabhängig von der Frage der Standardisierung können Sie die Regression niemals mit zwei konstanten Spalten ausführen, da Sie dann eine perfekte Kollinearität hätten . Das Ergebnis ist , dass selbst wenn Sie versuchen , die Regression ausgeführt wird , wird das Computerprogramm eine Fehlermeldung ausspucken und auf halbem Weg durch [Anmerkung beenden: Das ist , weil eine OLS Regression der Matrix erfordert X'X sein nicht singulär für Dinge zu erarbeiten , korrekt].
Wie auch immer, viel Glück mit deinem, ähm, rückläufigen!
[****] Nur um zu verdeutlichen: Was ich unter "zwei Spalten von Konstanten" verstehe, ist, dass Sie eine Spalte haben, in der jedes Element '1' ist, und eine zweite Spalte, in der jedes Element eine Konstante 'k' ist. .
quelle
Der richtige Weg wäre, die Feature-Spalte aus den Daten zu löschen. Aber als vorübergehender Hack -
Sie können für diese Funktion einfach die 0 std durch 1 ersetzen. Dies würde im Grunde bedeuten, dass der skalierte Wert für alle Datenpunkte für dieses Merkmal Null wäre. Dies ist sinnvoll, da dies impliziert, dass die Merkmalswerte nicht einmal ein bisschen vom Mittelwert abweichen (da die Werte konstant sind, ist die Konstante der Mittelwert).
Zu Ihrer Information: Das macht sklearn! https://github.com/scikit-learn/scikit-learn/blob/7389dbac82d362f296dc2746f10e43ffa1615660/sklearn/preprocessing/data.py#L70
quelle
Die Funktion mit der Varianz Null ist nutzlos. Entfernen Sie sie.
Wenn dies die einzige Funktion wäre, würden Sie aus den Daten nichts über die Reaktion auf diese Funktion erfahren. Im multivariaten Fall ist eine lineare Algebra erforderlich, um zu derselben Schlussfolgerung zu gelangen, aber die Idee ist dieselbe.
quelle