python的归一化例子
时间: 2023-06-28 13:09:36 浏览: 45
归一化是将数据缩放到特定范围内的过程,常用的方法有最小-最大缩放和z-score标准化。以最小-最大缩放为例,下面是一个Python的归一化例子:
```python
import numpy as np
# 生成一个5x3的随机数组
X = np.random.randn(5,3)
print("原始数据:\n", X)
# 对每一列进行最小-最大缩放
X_minmax = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
print("最小-最大缩放后的数据:\n", X_minmax)
```
在上面的例子中,我们使用了NumPy库生成了一个5x3的随机数组X,然后对每一列进行了最小-最大缩放,得到了缩放后的数组X_minmax。具体来说,对于X中的任意一个元素$X_{i,j}$,我们先计算出该列的最小值$min_j$和最大值$max_j$,然后将$X_{i,j}$缩放到[0,1]区间内:
$$X_{i,j}^{'}=\frac{X_{i,j}-min_j}{max_j-min_j}$$
最后得到的$X_{i,j}^{'}$就是缩放后的结果。
相关问题
python归一化数据代码
归一化是将数据缩放到指定的范围内,通常是 [0,1] 或 [-1,1]。以下是用 Python 进行归一化操作的示例代码:
```python
from sklearn.preprocessing import MinMaxScaler
data = [[1, 2], [2, 4], [3, 6], [4, 8]]
scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)
print(normalized_data)
```
输出结果为:
```
[[0. 0. ]
[0.33333333 0.33333333]
[0.66666667 0.66666667]
[1. 1. ]]
```
其中,`MinMaxScaler()` 是 Scikit-learn 库中的一个归一化函数,可以将数据缩放到 [0,1] 范围内。`fit_transform()` 方法将数据进行归一化操作并返回归一化后的结果。在这个例子中,我们将二维数组 `data` 归一化后得到了 `normalized_data`。
python向量归一化
在Python中,向量归一化(也称为规范化或单位向量)是将一个非零向量转换为长度为1的新向量,同时保持其原始方向不变的过程。这在机器学习、数据处理和向量空间模型中非常常见,如词嵌入、特征缩放等。归一化的主要方法有两种:L2范数归一化(也叫欧几里得归一化)和L1范数归一化。
**L2范数归一化 (Euclidean normalization)**:
- 计算向量的欧几里得距离(即标准差),公式是 `||v||_2 = sqrt(sum(v_i^2))`
- 将向量除以其L2范数,公式是 `v_normalized = v / ||v||_2`
**L1范数归一化 (Manhattan normalization)**:
- 计算向量的曼哈顿距离,公式是 `||v||_1 = sum(abs(v_i))`
- 将向量除以其L1范数,公式是 `v_normalized = v / ||v||_1`
下面是一个简单的例子:
```python
from math import sqrt
from typing import List
def l2_normalize(vector: List[float]) -> List[float]:
norm = sqrt(sum(x**2 for x in vector))
if norm == 0:
raise ValueError("Vector cannot be zero")
return [x / norm for x in vector]
def l1_normalize(vector: List[float]) -> List[float]:
norm = sum(abs(x) for x in vector)
if norm == 0:
raise ValueError("Vector cannot be all zeros")
return [x / norm for x in vector]
# 使用示例
vector = [3, 4]
normalized_vector_l2 = l2_normalize(vector)
normalized_vector_l1 = l1_normalize(vector)
```