Ich habe eine list
X
enthält die Daten von verschiedenen Benutzern N
durchgeführt, so dass die Nummer des Benutzers ist i=0,1,....,N-1
. Jeder Eintrag Xi
hat eine andere Länge. Ich möchte den Wert jedes Benutzers Xi
über den globalen Datensatz X
normalisieren.Python: Wie man einen Normalisierungsalgorithmus verbessert?
Das ist, was ich tue. Zunächst einmal erstelle ich eine 1D
Liste, die alle Daten enthalten, so:
tmp = list()
for i in range(0,len(X)):
tmp.extend(X[i])
dann wandle ich es in ein Array und ich entfernen Ausreißer und NaN
.
A = np.array(tmp)
A = A[~np.isnan(A)] #remove NaN
tr = np.percentile(A,95)
A = A[A < tr] #remove outliers
und dann schaffe ich das Histogramm des Datensatzes
p, x = np.histogram(A, bins=10) # bin it into n = N/10 bins
schließlich ich den Wert jeder Benutzer über das Histogramm normalisieren ich erstellt, so:
Xn = list()
for i in range(0,len(X)):
tmp = np.array(X[i])
tmp = tmp[tmp < tr]
tmp = np.histogram(tmp, x)
Xn.append(append(tmp[0]/sum(tmp[0]))
Meine Datensatz ist sehr groß und dieser Prozess könnte eine Weile dauern. Ich frage mich, ob es einen besseren Weg gibt, das oder ein Paket zu machen.