机器学习 类别特征编码:Category Encoders 库的使用
2023-12-14 15:32:25
?作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
Category Encoders 简介
Category Encoders 是一个用于将分类变量编码为数值的 Python 库,它提供了多种不同的编码技术。这些编码技术可以将分类变量转换成数值表示,以便在机器学习算法中使用。这个库的设计与 scikit-learn 类似,因此可以很容易地与 scikit-learn 的流程和工具集成。
以下是 Category Encoders 库的一些主要特点:
- 对 Pandas DataFrame 的原生支持:它支持 Pandas DataFrame 直接作为输入,也可以指定输出类型为 Pandas DataFrame。
- 灵活的列配置:你可以通过列名或索引来明确配置要编码的列,或者让它自动推断出非数值列,无论输入的数据类型如何。
- 低方差列的删除:它可以基于训练集可选地删除方差非常低的列,以避免给模型带来噪音。
- 可移植性:你可以在数据上训练一个编码器,将其保存为 pickle 文件,以后可以重新使用它,而且可以得到相同的结果。
- 兼容 scikit-learn:它可以像其他转换器一样接受类似数组的数据集,可以无缝地与 scikit-learn 的 Pipelines 或 ColumnTransformers 集成。
Category Encoders 安装
Category Encoders 库可以通过 pip 安装:
pip install category_encoders
或者通过 conda 安装:
conda install -c conda-forge category_encoders
Category Encoders 的使用
Category Encoders 库提供了多种编码方法,每种方法都对应的编码器:
import category_encoders as ce
encoder = ce.BackwardDifferenceEncoder(cols=[...])
encoder = ce.BaseNEncoder(cols=[...])
encoder = ce.BinaryEncoder(cols=[...]) # 二进制编码
encoder = ce.CatBoostEncoder(cols=[...]) # CatBoost 编码
encoder = ce.CountEncoder(cols=[...]) # 计数编码
encoder = ce.GLMMEncoder(cols=[...])
encoder = ce.GrayEncoder(cols=[...])
encoder = ce.HashingEncoder(cols=[...]) # 哈希编码
encoder = ce.HelmertEncoder(cols=[...])
encoder = ce.JamesSteinEncoder(cols=[...])
encoder = ce.LeaveOneOutEncoder(cols=[...])
encoder = ce.MEstimateEncoder(cols=[...])
encoder = ce.OneHotEncoder(cols=[...]) # 独热编码
encoder = ce.OrdinalEncoder(cols=[...]) # 序数编码
encoder = ce.PolynomialEncoder(cols=[...])
encoder = ce.QuantileEncoder(cols=[...])
encoder = ce.RankHotEncoder(cols=[...])
encoder = ce.SumEncoder(cols=[...])
encoder = ce.TargetEncoder(cols=[...]) # 目标编码
encoder = ce.WOEEncoder(cols=[...])
encoder.fit(X, y)
X_cleaned = encoder.transform(X_dirty)
编码方法介绍
每种编码方法都有其独特的原理和计算过程,适用于不同的数据情况和建模需求。以下是部分编码方法的简单介绍:
- BinaryEncoder:二进制编码,将每个类别的整数值表示为其二进制形式,适用于类别数量较多的特征。
- CatBoostEncoder:CatBoost 编码,一种基于目标变量的编码方法,使用目标变量的统计信息来为每个类别生成编码,以更好地捕获类别与目标之间的关系。
- CountEncoder:计数编码,将每个类别的值编码为该类别在训练集中出现的次数,有助于捕获类别的普遍性。
- HashingEncoder:哈希编码,将每个类别的值编码为其哈希值,能够较好的降低维度,但可能会引入冲突。
- OneHotEncoder:独热编码,将每个类别的值编码为一个布尔值,适用于类别数量较少的特征。
- OrdinalEncoder:序数编码,将每个类别的值编码为一个整数,适用于有序分类特征。
- TargetEncoder:目标编码,使用目标变量的平均值来为每个类别的编码,可能会导致过拟合。
文章来源:https://blog.csdn.net/qq_63585949/article/details/134864353
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!