one hot编码分类实例代码讲解
时间: 2023-05-09 07:01:09 浏览: 115
one hot 编码是一种分类变量的编码方式。它将一个具有 $n$ 个类别的变量编码为一个长度为 $n$ 的向量,其中每个元素代表一个类别。
假设我们有一个数据集,其中我们要对一个分类变量进行编码。为了演示,我们选择了衣服颜色作为分类变量,并选择了红色、蓝色和绿色作为类别。我们可以使用以下代码将这些类别转换为 one hot 编码:
```python
import numpy as np
def one_hot_encode(data):
classes = np.unique(data)
encoded = np.zeros((len(data), len(classes)))
for i, c in enumerate(classes):
encoded[:, i] = (data == c).astype(int)
return encoded
```
该函数接受一个数组参数,该数组包含要编码的分类变量数据。在函数内部,我们使用 numpy 的 unique() 函数来获取类别列表。 然后,我们创建一个形状为 (样本数量, 类别数量) 的全零数组。接下来,我们使用 enumerate() 函数枚举每个类别并将与该类别匹配的数据点设置为 1。最后,函数返回一个 one hot 编码的数据数组。
让我们使用以下代码对示例数据进行编码:
```python
data = np.array(['red', 'green', 'blue', 'green', 'red'])
one_hot_data = one_hot_encode(data)
print(one_hot_data)
```
输出:
```
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.],
[0., 1., 0.],
[1., 0., 0.]])
```
我们可以看到,函数将输入的分类变量编码为一个包含列数等于类别数量的二维数组,该数组的每行都代表一个输入样本,并且只有与样本所属类别相对应的相应列为 1。
阅读全文