本文目录导读:

- Min-Max 归一化(最值归一化)
- Z-Score 归一化(标准化)
- 最大绝对值归一化
- 单位向量归一化(L2归一化)
- 稳健归一化(Robust Scaler)
- Decimal Scaling 归一化
- 选择建议
- 完整示例
在Python中,数据归一化(Normalization)主要有以下几种常用方法,每种方法适用于不同的场景:
Min-Max 归一化(最值归一化)
将数据缩放到 [0, 1] 区间(或指定区间)。
import numpy as np
from sklearn.preprocessing import MinMaxScaler
# 原始数据
data = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
# 方法1:使用 scikit-learn
scaler = MinMaxScaler(feature_range=(0, 1)) # 可指定区间
normalized_data = scaler.fit_transform(data)
# 方法2:手动实现
def min_max_normalize(x):
return (x - np.min(x)) / (np.max(x) - np.min(x))
公式: ( X{norm} = \frac{X - X{min}}{X{max} - X{min}} )
Z-Score 归一化(标准化)
将数据转换为均值为0,标准差为1的分布。
from sklearn.preprocessing import StandardScaler
# 使用 scikit-learn
scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)
# 手动实现
def z_score_normalize(x):
return (x - np.mean(x)) / np.std(x)
公式: ( X_{norm} = \frac{X - \mu}{\sigma} )
最大绝对值归一化
将数据缩放到 [-1, 1] 区间,保留数据的稀疏性。
from sklearn.preprocessing import MaxAbsScaler scaler = MaxAbsScaler() normalized_data = scaler.fit_transform(data)
公式: ( X_{norm} = \frac{X}{max(|X|)} )
单位向量归一化(L2归一化)
将每个样本转换为单位向量(长度为1)。
from sklearn.preprocessing import Normalizer # L2归一化(默认) scaler = Normalizer(norm='l2') normalized_data = scaler.fit_transform(data) # L1归一化 scaler_l1 = Normalizer(norm='l1')
公式: ( X_{norm} = \frac{X}{||X||} )
稳健归一化(Robust Scaler)
使用中位数和四分位数范围,对异常值更稳健。
from sklearn.preprocessing import RobustScaler scaler = RobustScaler() robust_data = scaler.fit_transform(data)
公式: ( X_{norm} = \frac{X - median}{IQR} )
Decimal Scaling 归一化
通过移动小数点位置进行归一化。
def decimal_scaling(x):
max_val = np.max(np.abs(x))
j = np.ceil(np.log10(max_val))
return x / (10 ** j)
选择建议
| 方法 | 适用场景 | 注意事项 |
|---|---|---|
| Min-Max | 需要固定范围,数据分布已知 | 对异常值敏感 |
| Z-Score | 数据近似正态分布 | 不保证特定范围 |
| MaxAbs | 稀疏数据 | 保留零值 |
| 单位向量 | 需要特征方向而非大小 | 改变数据分布 |
| Robust | 数据含有异常值 | 计算成本较高 |
完整示例
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler
# 生成示例数据
np.random.seed(42)
data = pd.DataFrame({
'feature1': np.random.randn(100),
'feature2': np.random.randn(100) * 10,
'feature3': np.random.randn(100) * 100
})
# 多种归一化方法对比
scalers = {
'Min-Max': MinMaxScaler(),
'Z-Score': StandardScaler(),
'Robust': RobustScaler()
}
normalized_data = {}
for name, scaler in scalers.items():
normalized_data[name] = pd.DataFrame(
scaler.fit_transform(data),
columns=data.columns
)
在实际应用中,需要根据数据的特性和后续模型的要求选择合适的归一化方法。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播