机器学习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()
相关推荐
黎燃8 小时前
短视频平台内容推荐算法优化:从协同过滤到多模态深度学习
人工智能
飞哥数智坊9 小时前
多次尝试用 CodeBuddy 做小程序,最终我放弃了
人工智能·ai编程
后端小肥肠10 小时前
别再眼馋 10w + 治愈漫画!Coze 工作流 3 分钟出成品,小白可学
人工智能·aigc·coze
唐某人丶13 小时前
教你如何用 JS 实现 Agent 系统(2)—— 开发 ReAct 版本的“深度搜索”
前端·人工智能·aigc
FIT2CLOUD飞致云13 小时前
九月月报丨MaxKB在不同规模医疗机构的应用进展汇报
人工智能·开源
阿里云大数据AI技术13 小时前
【新模型速递】PAI-Model Gallery云上一键部署Qwen3-Next系列模型
人工智能
袁庭新13 小时前
全球首位AI机器人部长,背负反腐重任
人工智能·aigc
机器之心14 小时前
谁说Scaling Law到头了?新研究:每一步的微小提升会带来指数级增长
人工智能·openai
算家计算14 小时前
AI配音革命!B站最新开源IndexTTS2本地部署教程:精准对口型,情感随心换
人工智能·开源·aigc
量子位14 小时前
马斯克周末血裁xAI 500人
人工智能·ai编程