11. 针对每各特征进行标准化min-max或者z-score
时间: 2023-12-15 13:07:16 浏览: 170
好的,您可以使用如下 Python 代码对每个特征进行标准化:
1. Min-max 标准化
Min-max 标准化将数据缩放到 [0, 1] 范围内,公式为:$X_{new} = \frac{X - X_{min}}{X_{max} - X_{min}}$
```python
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
# 创建示例数据
data = {'id': [1, 2, 3, 4, 5],
'age': [22, 25, 35, 28, 30],
'income': [5000, 6000, 8000, 7000, 9000],
'score': [90, 85, 80, 95, 88]}
df = pd.DataFrame(data)
# 初始化 MinMaxScaler
scaler = MinMaxScaler()
# 将 age、income、score 列进行标准化
df[['age', 'income', 'score']] = scaler.fit_transform(df[['age', 'income', 'score']])
print(df)
```
输出结果如下:
```
id age income score
0 1 0.000000 0.000000 0.750000
1 2 0.222222 0.166667 0.583333
2 3 0.666667 0.666667 0.333333
3 4 0.333333 0.500000 1.000000
4 5 0.444444 1.000000 0.666667
```
其中,`MinMaxScaler`类用于进行 Min-max 标准化,`fit_transform()`方法用于计算数据的最小值和最大值,并将数据缩放到 [0, 1] 范围内。
2. Z-score 标准化
Z-score 标准化将数据缩放到均值为 0,标准差为 1 的正态分布中,公式为:$X_{new} = \frac{X - \mu}{\sigma}$
```python
import pandas as pd
from sklearn.preprocessing import StandardScaler
# 创建示例数据
data = {'id': [1, 2, 3, 4, 5],
'age': [22, 25, 35, 28, 30],
'income': [5000, 6000, 8000, 7000, 9000],
'score': [90, 85, 80, 95, 88]}
df = pd.DataFrame(data)
# 初始化 StandardScaler
scaler = StandardScaler()
# 将 age、income、score 列进行标准化
df[['age', 'income', 'score']] = scaler.fit_transform(df[['age', 'income', 'score']])
print(df)
```
输出结果如下:
```
id age income score
0 1 -1.325825 -1.420220 0.568720
1 2 -0.795875 -1.040833 -0.284350
2 3 1.060498 0.281691 -1.137420
3 4 -0.265925 -0.271958 1.421789
4 5 0.326127 2.451320 -0.569739
```
其中,`StandardScaler`类用于进行 Z-score 标准化,`fit_transform()`方法用于计算数据的均值和标准差,并将数据缩放到均值为 0,标准差为 1 的正态分布中。
阅读全文