我想按特定列对 DataFrame 进行分组,然后应用 sklearn 预处理 MinMaxScaler 并存储缩放器对象。
我目前的出发点:
import pandas as pd
from sklearn import preprocessing
scaler = {}
groups = df.groupby('ID')
for name, group in groups:
scr = preprocessing.MinMaxScaler()
scr.fit(group)
scaler.update({name: scr})
group = scr.transform(group)
这可能吗?df.groupby('ID').transform
?
UPDATE
来自我原来的数据框
pd.DataFrame( dict( ID=list('AAABBB'),
VL=(0,10,10,100,100,200))
我想根据 ID 缩放所有列。在这个例子中:
A 0.0
A 1.0
A 1.0
B 0.0
B 0.0
B 1.0
使用信息/缩放器对象(使用 fit 初始化)
preprocessing.MinMaxScaler().fit( ... )
你可以朝一个方向做:
In [62]: from sklearn.preprocessing import minmax_scale
In [63]: df
Out[63]:
ID VL SC
0 A 0 0
1 A 10 1
2 A 10 1
3 B 100 0
4 B 100 0
5 B 200 1
In [64]: df['SC'] = df.groupby('ID').VL.transform(lambda x: minmax_scale(x.astype(float)))
In [65]: df
Out[65]:
ID VL SC
0 A 0 0
1 A 10 1
2 A 10 1
3 B 100 0
4 B 100 0
5 B 200 1
但你将无法使用inverse_transform
因为每次调用MinMaxScaler
(对于每个组或每个ID
)将覆盖有关您原始功能的信息...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)