使用 MinMaxScaler 的归一化邻接矩阵(在 pandas 中)
Normalize adjency matrix (in pandas) with MinMaxScaler
我有一个项目与项目的邻接矩阵 (dm);两个项目(例如,item0、item1)之间的值是指这些项目一起出现的次数。如何在 0 到 1 之间缩放 pandas 中的所有值?
from sklearn import preprocessing
scaler = preprocessing.MinMaxScaler()
但是,我不确定如何将缩放器应用于 pandas 数据框。
您可以使用 loc:
将生成的数组分配回数据框
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
您可以对 (df - df.min()) / (df.max() - df.min())
执行相同的操作。
我有一个项目与项目的邻接矩阵 (dm);两个项目(例如,item0、item1)之间的值是指这些项目一起出现的次数。如何在 0 到 1 之间缩放 pandas 中的所有值?
from sklearn import preprocessing
scaler = preprocessing.MinMaxScaler()
但是,我不确定如何将缩放器应用于 pandas 数据框。
您可以使用 loc:
将生成的数组分配回数据框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
您可以对 (df - df.min()) / (df.max() - df.min())
执行相同的操作。