首先,我为一个模糊的问题道歉。让我解释。我有一个熊猫数据框,其中包含 2 列,即平方英尺和卧室数量。我正在尝试使用线性回归计算价格,并希望运行矩阵来计算梯度下降。由于平方英尺比卧室数量大 1000 倍,而且梯度下降不能很好地收敛,我试图通过归一化来处理属性中的这种尺度差异。
我正在做的特定归一化是用它们各自的平均值减去卧室和平方英尺的各个列单元格,然后将结果除以它们各自的标准偏差。我写的代码是这样的:-
meanb= X[['bedrooms']].mean()
meanFeet=X[['sqrfeet']].mean()
stdb=X[['bedrooms']].std()
stdFeet=X[['sqrfeet']].std()
norb=lambda x: (x-meanb)/stdb
nors=lambda x: (x-meanFeet)/stdFeet
X['bedrooms']=X['bedrooms'].apply(norb)
X['sqrfeet']= X['sqrfeet'].apply(nors)
问题是有一种更简单的方法可以做到这一点,因为如果我有 1000 列,这将无法扩展。我想知道是否有一个 dataframe.applymap() 方法可以计算各个列的平均值和标准差,并对每列的各个单元格执行归一化。请注意,每一列可以有不同的值范围,但都是数字。