赞
踩
独热编码(One-Hot Encoding)是一种常用的将分类数据转换为数值数据的技术。Scikit-learn 提供了 OneHotEncoder
类来方便地进行独热编码。下面是独热编码的原理、适用情况以及使用 Scikit-learn 进行独热编码的详细介绍和示例代码。
原理
独热编码是一种将分类变量转换为二进制向量的编码方式。每个类别都用一个独特的二进制向量表示,向量的长度等于类别的总数。在该向量中,只有一个元素是1,其他元素都是0。例如,有三个类别 ['cat', 'dog', 'mouse']
,独热编码后将变为:
适用情况
独热编码适用于以下情况:
Scikit-learn 独热编码示例
下面是使用 Scikit-learn 进行独热编码的详细步骤和示例代码。
1. 导入必要的库
- import numpy as np
- from sklearn.preprocessing import OneHotEncoder
2. 创建示例数据
假设我们有一个包含三个分类特征的数据集:
- data = np.array([
- ['cat', 'small', 'black'],
- ['dog', 'large', 'brown'],
- ['mouse', 'small', 'white'],
- ['cat', 'large', 'white'],
- ['dog', 'small', 'black']
- ])
3. 初始化并应用 OneHotEncoder
首先,创建 OneHotEncoder
的实例。然后,使用 fit_transform
方法将分类特征转换为独热编码。
- encoder = OneHotEncoder()
- encoded_data = encoder.fit_transform(data).toarray()
4. 查看编码后的数据
print(encoded_data)
5. 获取编码后的特征名称
print(encoder.get_feature_names_out())
完整示例代码
- import numpy as np
- from sklearn.preprocessing import OneHotEncoder
-
- # 创建示例数据
- data = np.array([
- ['cat', 'small', 'black'],
- ['dog', 'large', 'brown'],
- ['mouse', 'small', 'white'],
- ['cat', 'large', 'white'],
- ['dog', 'small', 'black']
- ])
-
- # 初始化 OneHotEncoder
- encoder = OneHotEncoder()
-
- # 应用 OneHotEncoder 进行独热编码
- encoded_data = encoder.fit_transform(data).toarray()
-
- # 输出编码后的数据
- print("Encoded Data:")
- print(encoded_data)
-
- # 输出编码后的特征名称
- print("Feature Names:")
- print(encoder.get_feature_names_out())
结果
- Encoded Data:
- [[1. 0. 0. 1. 0. 1. 0. 1.]
- [0. 1. 0. 0. 1. 0. 1. 0.]
- [0. 0. 1. 1. 0. 0. 0. 1.]
- [1. 0. 0. 0. 1. 0. 0. 1.]
- [0. 1. 0. 1. 0. 1. 0. 1.]]
-
- Feature Names:
- ['x0_cat' 'x0_dog' 'x0_mouse' 'x1_large' 'x1_small' 'x2_black' 'x2_brown' 'x2_white']
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。