Ich verwende sklearns PCA Funktion für einige Daten, die ich analysieren möchte, und ich habe Probleme herauszufinden, wie genau ich das brauche transformiere skalierte Daten zurück in Zahlen, die im Zusammenhang mit dem, was ich gerade mache, sinnvoll sind. Genauer gesagt, wenn ich laufe:Erklären des Unterschieds zwischen sklearn's scale() und Multiplikation mit STD und Addieren des Mittelwerts
import pandas as pd
import numpy as np
from sklearn.preprocessing import scale
X_scaled = scale(otr_df)
X_scaled2 = otr_df.sub(otr_df.mean())
X_scaled2 = X_scaled2.div(otr_df.std())
# Should print all zeroes
print (X_scaled - X_scaled2)/X_scaled
"""
The above prints the following:
Date Index1 Index2 Index3 Index4
2016-05-11 0.000706 0.000706 0.000706 0.000706 ...
2016-05-10 0.000706 0.000706 0.000706 0.000706 ...
2016-05-09 0.000706 0.000706 0.000706 0.000706 ...
2016-05-06 0.000706 0.000706 0.000706 0.000706 ...
. . . .
. . . .
. . . .
"""
Statt Null (wie ich erwarten würde), ich für jede Spalte konstante Werte von 0,000706 bin immer, wenn in der unteren Zeile des obigen Codes gedruckt wird. Obwohl klein, scheint es nicht trivial zu sein, wenn ich mich mit mehreren tausend multipliziere, um zur ursprünglichen Skala zurückzukehren (was ich in einigen Fällen bin). Meine Vermutung ist, dass es mit der Division durch (N - 1) anstelle von N oder etwas in dieser Richtung zu tun hat. Nachdem ich zu viel Zeit damit verbracht habe, Sklearn- und Pandas-Dokumente zu lesen, ohne dafür etwas zu zeigen, dachte ich, dass ich hier fragen würde, ob jemand eine Idee hätte.
Ahh, ich wusste, dass es etwas mit den Freiheitsgraden zu tun wäre. Danke für die Antwort. – weskpga