机器学习实战笔记2特征编码

特征编码

我们要做的就是将数据的一列目标字段编码

import pandas as pd
data={
    'size':['XL','L','M','L','M'],
    'color':['red','green','blue','green','red'],
    'gender':['female','male','male','female','female'],
    'price':[199.0,89.0,99.0,129.0,79.0],
    'weight':[500,450,300,380,410],
    'bought':['yes','no','yes','no','yes']
}
df=pd.DataFrame(data=data)
df

这是我们的数据的DataFrame图,我们要做的是将最后一列编码

1.导入函数库

from sklearn.preprocessing import LabelEncoder

LabelEncoderscikit-learn 库中的一个预处理工具,它用于将分类数据(目标变量或特征)中的标签转换为数字值。这在机器学习中非常有用,因为许多算法需要数值输入,而不是文本标签。

2.创建一个实例。

labelEncoder=LabelEncoder()

3.编码

df["bought"]=labelEncoder.fit_transform(df["bought"])
df

转化“bought”列,转化的结果。

labelEncoder.classes_

scikit-learnLabelEncoder 类中,属性 classes_ 存储了在调用 fitfit_transform 方法后学习到的类别。这个属性是一个数组,包含了所有经过编码的类别的排序列表,顺序是它们首次出现在输入数据中的顺序。

请注意,classes_ 属性是在调用 fitfit_transform 方法之后才可用的,因为在这些方法中 LabelEncoder 会学习数据中的类别。如果尝试在拟合之前访问 classes_,将会得到一个空数组。

4.逆转化

问题:若我想知道0,1代表的是什么字符串怎么办?

答:逆转化

labelEncoder.inverse_transform(df["bought"])

使用逆转化就能知道编码代表的是什么字符串。

5.one-hot编码,进行01编码变成数字类型

#普通的特征列转化为数字

from sklearn.preprocessing import OneHotEncoder
oneHotEncoder=OneHotEncoder(sparse=False)
oneHotEncoder.fit(df[["size"]])

oneHotEncoder.transform(df[["size"]])

scikit-learn 中,OneHotEncoder 是一个预处理类,用于将分类特征的整数或名义数据转换为一个二进制(0或1)矩阵。这种转换通常用于机器学习模型,特别是那些需要数值输入的模型

OneHotEncoder 的主要参数和方法包括:

  • sparse=False: 指定输出格式是否为稀疏矩阵。如果设置为 True(默认值),输出将是稀疏矩阵格式,这对于具有高维稀疏数据的大规模数据集很有用。

  • fit(X): 计算输入数据 X 中类别的频率,构建一个类别到整数索引的映射。

  • transform(X): 将输入数据 X 转换为二进制矩阵,其中每一行代表一个样本,每一列代表一个类别。

  • get_feature_names_out(): 获取转换后特征的名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值