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. 导入必要的库
python 复制代码
import numpy as np
from sklearn.preprocessing import OneHotEncoder
  1. 创建示例数据

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

python 复制代码
data = np.array([
    ['cat', 'small', 'black'],
    ['dog', 'large', 'brown'],
    ['mouse', 'small', 'white'],
    ['cat', 'large', 'white'],
    ['dog', 'small', 'black']
])
  1. 初始化并应用 OneHotEncoder

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

python 复制代码
encoder = OneHotEncoder()
encoded_data = encoder.fit_transform(data).toarray()
  1. 查看编码后的数据
python 复制代码
print(encoded_data)
  1. 获取编码后的特征名称
python 复制代码
print(encoder.get_feature_names_out())

完整示例代码

python 复制代码
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())

结果

python 复制代码
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']
相关推荐
历程里程碑几秒前
1 . Git本地操作:版本控制 跨平台协作 仓库核心
java·开发语言·数据结构·c++·git·gitee·github
ZC跨境爬虫11 分钟前
Scrapy实战爬取5sing网站:Pipeline优化+全流程踩坑复盘,从报错到数据落地
前端·爬虫·python·scrapy
ZhuNian的学习乐园12 分钟前
LLM智能体调度:从ReAct到多智能体调度
人工智能·python·深度学习
喵叔哟14 分钟前
6.【.NET10 实战--孢子记账--产品智能化】--认证与安全包
python·安全·flask
小鱼~~21 分钟前
Jupyter Notebook 最常用快捷键
python·jupyter
xianluohuanxiang26 分钟前
高精度气象:极端天气一来,零售最先出问题的不是客流,而是补货体系和损失控制
开发语言·人工智能·深度学习·机器学习·零售
KKKlucifer27 分钟前
零信任融合 4A 平台,构建全域身份动态可信管控体系
开发语言·php
wgzrmlrm7431 分钟前
如何从SQL中提取年份或月份:EXTRACT与日期函数用法
jvm·数据库·python
web3.088899934 分钟前
淘宝、京东、1688 拍立淘图搜 API 均返回 JSON 格式
python·json
IT莫染43 分钟前
用脚本解放双手!我写了个WorkBuddy自动签到工具
python