2016-07-06 14 views
0

Ich habe eine Adjuncy-Matrix (dm) von Elementen vs Elemente; Der Wert zwischen zwei Elementen (z. B. Element0, Element1) bezieht sich auf die Häufigkeit, mit der diese Elemente zusammen angezeigt werden. Wie kann ich alle Werte in Pandas zwischen 0 und 1 skalieren?Normalisieren Adjuncts Matrix (in Pandas) mit MinMaxScaler

from sklearn import preprocessing 
scaler = preprocessing.MinMaxScaler() 

Allerdings bin ich mir nicht sicher, wie man Scaler auf den Pandas Datenrahmen anwendet.

enter image description here

Antwort

0

Sie können die resultierende Anordnung an den Datenrahmen mit loc zuweisen zurück:

df = pd.DataFrame(np.random.randint(1, 5, (5, 5))) 

df 
Out[277]: 
    0 1 2 3 4 
0 2 3 2 3 1 
1 2 3 4 4 2 
2 2 3 4 3 2 
3 1 1 2 1 4 
4 4 2 2 3 1 

df.loc[:,:] = scaler.fit_transform(df) 

df 
Out[279]: 
      0 1 2   3   4 
0 0.333333 1.0 0.0 0.666667 0.000000 
1 0.333333 1.0 1.0 1.000000 0.333333 
2 0.333333 1.0 1.0 0.666667 0.333333 
3 0.000000 0.0 0.0 0.000000 1.000000 
4 1.000000 0.5 0.0 0.666667 0.000000 

Sie können mit (df - df.min())/(df.max() - df.min()) das gleiche tun.

+0

das funktioniert auch: df.apply (Lambda x: scaler.fit_transform (x)) – kitchenprinzessin