三种数据归一化的方法并给出代码表示
时间: 2024-05-07 11:18:44 浏览: 6
数据归一化是将不同范围的数据映射到相同的范围内,常见的三种归一化方法是:最小-最大归一化、Z-score标准化和小数定标规范化。
1. 最小-最大归一化
最小-最大归一化(Min-Max Normalization)是将数据缩放到[0,1]的范围内,公式如下:
$$x_{norm}=\frac{x-x_{min}}{x_{max}-x_{min}}$$
代码实现:
```python
def min_max_normalization(data):
"""
最小-最大归一化
:param data: 待归一化的数据
:return: 归一化后的数据
"""
max_val = max(data)
min_val = min(data)
norm_data = [(i - min_val) / (max_val - min_val) for i in data]
return norm_data
```
2. Z-score标准化
Z-score标准化是将数据缩放成均值为0,标准差为1的分布,公式如下:
$$x_{norm}=\frac{x-\mu}{\sigma}$$
代码实现:
```python
def z_score_normalization(data):
"""
Z-score标准化
:param data: 待归一化的数据
:return: 归一化后的数据
"""
mean_val = sum(data) / len(data)
std_val = (sum([(i - mean_val) ** 2 for i in data]) / len(data)) ** 0.5
norm_data = [(i - mean_val) / std_val for i in data]
return norm_data
```
3. 小数定标规范化
小数定标规范化是将数据缩放到[-1,1]或[-0.5,0.5]的范围内,公式如下:
$$x_{norm}=\frac{x}{10^k}$$
代码实现:
```python
def decimal_scaling_normalization(data):
"""
小数定标规范化
:param data: 待归一化的数据
:return: 归一化后的数据
"""
max_val = max([abs(i) for i in data])
k = len(str(int(max_val))) - 1
norm_data = [i / (10 ** k) for i in data]
return norm_data
```