• Python 之Scikit-learn(六) -- Scikit-learn提供的独热编码


    独热编码(One-Hot Encoding)是一种常用的将分类数据转换为数值数据的技术。Scikit-learn 提供了 OneHotEncoder 类来方便地进行独热编码。下面是独热编码的原理、适用情况以及使用 Scikit-learn 进行独热编码的详细介绍和示例代码。

    原理

    独热编码是一种将分类变量转换为二进制向量的编码方式。每个类别都用一个独特的二进制向量表示,向量的长度等于类别的总数。在该向量中,只有一个元素是1,其他元素都是0。例如,有三个类别 ['cat', 'dog', 'mouse'],独热编码后将变为:

    • cat: [1, 0, 0]
    • dog: [0, 1, 0]
    • mouse: [0, 0, 1]

    适用情况

    独热编码适用于以下情况:

    • 分类变量需要转换为数值变量,供机器学习模型使用。
    • 适用于没有顺序的分类数据(如颜色、性别、城市等)。
    • 适用于大多数机器学习算法,特别是线性模型、树模型、神经网络等。

    Scikit-learn 独热编码示例

    下面是使用 Scikit-learn 进行独热编码的详细步骤和示例代码。

    1. 导入必要的库

    1. import numpy as np
    2. from sklearn.preprocessing import OneHotEncoder

    2. 创建示例数据

    假设我们有一个包含三个分类特征的数据集:

    1. data = np.array([
    2. ['cat', 'small', 'black'],
    3. ['dog', 'large', 'brown'],
    4. ['mouse', 'small', 'white'],
    5. ['cat', 'large', 'white'],
    6. ['dog', 'small', 'black']
    7. ])

    3. 初始化并应用 OneHotEncoder

    首先,创建 OneHotEncoder 的实例。然后,使用 fit_transform 方法将分类特征转换为独热编码。

    1. encoder = OneHotEncoder()
    2. encoded_data = encoder.fit_transform(data).toarray()

    4. 查看编码后的数据

    print(encoded_data)

    5. 获取编码后的特征名称

    print(encoder.get_feature_names_out())
    

    完整示例代码

    1. import numpy as np
    2. from sklearn.preprocessing import OneHotEncoder
    3. # 创建示例数据
    4. data = np.array([
    5. ['cat', 'small', 'black'],
    6. ['dog', 'large', 'brown'],
    7. ['mouse', 'small', 'white'],
    8. ['cat', 'large', 'white'],
    9. ['dog', 'small', 'black']
    10. ])
    11. # 初始化 OneHotEncoder
    12. encoder = OneHotEncoder()
    13. # 应用 OneHotEncoder 进行独热编码
    14. encoded_data = encoder.fit_transform(data).toarray()
    15. # 输出编码后的数据
    16. print("Encoded Data:")
    17. print(encoded_data)
    18. # 输出编码后的特征名称
    19. print("Feature Names:")
    20. print(encoder.get_feature_names_out())

    结果

    1. Encoded Data:
    2. [[1. 0. 0. 1. 0. 1. 0. 1.]
    3. [0. 1. 0. 0. 1. 0. 1. 0.]
    4. [0. 0. 1. 1. 0. 0. 0. 1.]
    5. [1. 0. 0. 0. 1. 0. 0. 1.]
    6. [0. 1. 0. 1. 0. 1. 0. 1.]]
    7. Feature Names:
    8. ['x0_cat' 'x0_dog' 'x0_mouse' 'x1_large' 'x1_small' 'x2_black' 'x2_brown' 'x2_white']

     

  • 相关阅读:
    开发者生态:共享知识,携手共进,共创技术辉煌
    打印nXn方阵的上三角阵
    iNeuOS工业互联网操作系统,设备运维业务和“低代码”表单开发工具
    (一)Lenet5 手写数字识别原理及代码解析
    分布式事务的应用场景
    ES:模板字符串的使用
    【数独问题】递归+回溯算法求解数独问题
    scala(自学-4)
    springboot集成kafka详解
    为什么 Django 后台管理系统那么“丑”?
  • 原文地址:https://blog.csdn.net/wodertianna/article/details/141003876