机器学习sklearn:编码、哑变量、二值化和分段

就是转换为数值类型方便机器学习模型处理

一、编码

这里举例将Survived这一行的数据转换为编码,原本是字符串类型

2、将标签编码并赋值回去

python 复制代码
from sklearn.preprocessing import LabelEncoder
y = data.iloc[:, -1]    # 最后一列拿出来
print(y)
le = LabelEncoder()
le = le.fit(y)
label_ = le.transform(y)

# label_ = le.fit_transform(y) # 上面两个可以合并成这个
# le.inverse_transform(label_)  # 逆向编码,和fit_transform相反

data.iloc[:, -1] = label_   # 填回最后一列
# 那么多可以简写成这样:
# data.iloc[:, -1] = LabelEncoder().fit_transform(data[:, -1])
data.head()

此时的Survived那一列变成了数字类型

二、哑变量

这里以Embarked那一列举例,它有三个值,这个时候就可以变成二进制的值来存储使用

python 复制代码
from sklearn.preprocessing import OneHotEncoder
X = data.iloc[:,1:-1]

enc = OneHotEncoder(categories='auto').fit(X)
result = enc.transform(X).toarray()     # 可以合并为:OneHotEncoder().fit(X).transform(X).toarray()
result

0和1列是Sex的编码,其它的是Embarked的编码

三、二值化

原本年龄那一列是数值类型的,然后想要以30岁为界限进行分类

python 复制代码
from sklearn.preprocessing import Binarizer
X = data_2.iloc[:, 0].values.reshape(-1,1)      # 找到年龄那一列,并转换为二维数组
transformer = Binarizer(threshold=30).fit_transform(X)

四、分段

将年龄按照段来分开

python 复制代码
from sklearn.preprocessing import KBinsDiscretizer

X = data.iloc[:, 0].values.reshape(-1,1)        # 取出Age那一列
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
est.fit_transform(X)

也可以不用整数形式显示,用哑变量

python 复制代码
# 年龄分三段,哑变量进行显示,onehot控制
est = KBinsDiscretizer(n_bins=3, encode='onehot', strategy='uniform')
est.fit_transform(X).toarray()
相关推荐
Shawn_Shawn6 小时前
mcp学习笔记(一)-mcp核心概念梳理
人工智能·llm·mcp
33三 三like8 小时前
《基于知识图谱和智能推荐的养老志愿服务系统》开发日志
人工智能·知识图谱
芝士爱知识a8 小时前
【工具推荐】2026公考App横向评测:粉笔、华图与智蛙面试App功能对比
人工智能·软件推荐·ai教育·结构化面试·公考app·智蛙面试app·公考上岸
腾讯云开发者9 小时前
港科大熊辉|AI时代的职场新坐标——为什么你应该去“数据稀疏“的地方?
人工智能
工程师老罗9 小时前
YoloV1数据集格式转换,VOC XML→YOLOv1张量
xml·人工智能·yolo
Coder_Boy_10 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
啊森要自信10 小时前
CANN ops-cv:面向计算机视觉的 AI 硬件端高效算子库核心架构与开发逻辑
人工智能·计算机视觉·架构·cann
2401_8362358610 小时前
中安未来SDK15:以AI之眼,解锁企业档案的数字化基因
人工智能·科技·深度学习·ocr·生活
njsgcs10 小时前
llm使用 AgentScope-Tuner 通过 RL 训练 FrozenLake 智能体
人工智能·深度学习