为了账号安全,请及时绑定邮箱和手机立即绑定

数据帧列表上的 MinMax 缩放器

数据帧列表上的 MinMax 缩放器

白板的微信 2021-10-10 15:20:52
我有数据框列表(所有数据框都有相同的数字列,代表同一测试的不同结果。我想将它们分开)。我想训练 scikit MinMaxScalar,它将考虑所有数据帧中每列的最小值和最大值。有人可以解决这个问题吗?
查看完整描述

2 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

您想要执行以下操作:

  1. 创建一个临时 DataFrametmp作为列表中所有 DF 的串联

  2. MinMaxScalertmpDF上拟合对象

  3. 使用拟合MinMaxScaler对象 缩放(变换)列表中的所有 DF


更新:

您可以在不创建临时数据框的情况下对培训提出建议吗?

我们可以使用该.partial_fit()方法来迭代地拟合来自所有 DF 的数据:

创建示例 DF 列表:

In [100]: dfs = [pd.DataFrame(np.random.rand(3,3)*100 - 50) for _ in range(3)]


In [101]: dfs[0]

Out[101]:

           0          1          2

0  45.473162  42.366712  41.395652

1 -35.476703  43.777850 -36.363200

2   0.479528  14.861075   4.196630


In [102]: dfs[2]

Out[102]:

           0          1          2

0   6.888876 -24.454986 -39.794309

1  -8.988094 -34.426252 -24.760782

2  34.317689 -43.644643  44.243769

缩放:


In [103]: from sklearn.preprocessing import MinMaxScaler


In [104]: mms = MinMaxScaler()


In [105]: _ = [mms.partial_fit(df) for df in dfs]


In [106]: scaled = [mms.transform(df) for df in dfs]

结果:


In [107]: scaled[0]

Out[107]:

array([[1.        , 0.9838584 , 0.91065751],

       [0.07130264, 1.        , 0.03848462],

       [0.48381052, 0.66922958, 0.49341912]])


In [108]: scaled[1]

Out[108]:

array([[0.53340314, 0.8729412 , 0.62360548],

       [0.        , 0.39480025, 1.        ],

       [0.04767918, 0.10412712, 0.95859434]])


In [109]: scaled[2]

Out[109]:

array([[0.55734177, 0.2195048 , 0.        ],

       [0.37519322, 0.10544644, 0.16862177],

       [0.87201883, 0.        , 0.94260309]])


查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号