如何使用scikit-learn通过标准差来规范化数据框?

问题描述 投票:2回答:2

鉴于以下数据框和left-x列:

|       | left-x | left-y | right-x | right-y |
|-------|--------|--------|---------|---------|
| frame |        |        |         |         |
| 0     | 149    | 181    | 170     | 175     |
| 1     | 149    | 181    | 170     | 175     |
| 2     | 149    | 181    | 170     | 175     |
| 3     | 149    | 181    | 170     | 175     |

我如何使用left-x标准偏差scikit-learn library

python pandas sklearn-pandas
2个回答
5
投票

您可以通过标准偏差进行标准化,而无需使用sci-kit-learn,如下所示:

df['left-x'] = df['left-x'] / df['left-x'].std()

或者,如果您还想要中心数据:

df['left-x'] = (df['left-x'] - df['left-x'].mean())/df['left-x'].std()

这里df是你的asl.df[l]变量。

.std()方法给出了给定轴上数据帧的标准偏差。通过首先选择一列,仅为该列计算标准偏差。

如果你需要做很多事情并希望避免混乱,你可以把它包装成一个函数,例如

def std_norm(df, column):
    c = df[column]
    df[column] = (c - c.mean())/c.std()

你称之为:

std_norm(df, 'left-x')

请注意,这会就地更新传递的DataFrame。


2
投票

您可以使用sklearn.preprocessing模块中的缩放功能。

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()
sc.fit(df['left-x'])

df['left-x'] = sc.transform(df['left-x'])
© www.soinside.com 2019 - 2024. All rights reserved.