类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型。Sklearn中提供了几个转换器来处理文本属性,下面将总结LabelEncode(序号编码)、OneHotEncoder(独热编码)和LabelBinarizer(二进制编码)转换器用法

1. 类图结构

  

2. LabelEncode用法

  官方文档:https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html

示例:

labels = [1,2,2,6]
le = LabelEncoder()
le.fit(labels)
print("classes_:",le.classes_)
print("transform:",le.transform([1, 2, 2, 6]))
print('fit_transform:',le.fit_transform(labels))
print('inverser_transform:',le.inverse_transform([0, 0, 1, 2]))

输出:

  当labels换成文本标签时

labels = ['aa','cc','dd','bb']
le = LabelEncoder()
le.fit(labels)
print("classes_:",le.classes_)
print("transform:",le.transform(['aa','cc','dd','bb']))
print('fit_transform:',le.fit_transform(labels))
print('inverser_transform:',le.inverse_transform([0, 2, 3, 1]))

输出:

3. OneHotEncoder用法

OneHotEncoder(n_values=’auto’,  categorical_features=’all’,  dtype=<class ‘numpy.float64’>,  sparse=True,  handle_unknown=’error’)

(1)参数

  n_values = 'auto' --->表示每个特征使用几维的数值由数据集自动推断,即几种类别就使用几位来表示,还可以自己设置

- int : number of categorical values per feature.Each feature value should be in ``range(n_values)``
- array : ``n_values[i]`` is the number of categorical values in``X[:, i]``. Each feature value should bein ``range(n_values[i])``

  categorical_features = 'all' --->这个参数指定了对哪些特征进行编码,默认对所有类别都进行编码。也可以自己指定选择哪些特征,通过索引或者 bool 值来指定

dtype --->表示编码数值格式,默认为浮点型
spares--->表示编码的格式,默认为True,即为稀疏的格式,指定False则就不用toarray了
handle_unknow --->指定为‘error’或者'ignore',即如果碰到未知的类型,是返回一个错误还是忽略它
(2)示例
enc = OneHotEncoder()
enc.fit([[0, 0, 3],[1, 1, 0],[0, 2, 1],[1, 0, 2]])
print(enc.transform([[0,1,3]]).toarray())

  输出:

  我们先来看第一个特征,即第一列 [0,1,0,1][0,1,0,1],也就是说它有两个取值 0 或者 1,那么 one-hot 就会使用两位来表示这个特征,[1,0][1,0] 表示 0, [0,1][0,1] 表示 1,在上例输出结果中的前两位 [1,0...][1,0...] 也就是表示该特征为 0

  第二个特征,第二列 [0,1,2,0][0,1,2,0],它有三种值,那么 one-hot 就会使用三位来表示这个特征,[1,0,0][1,0,0] 表示 0, [0,1,0][0,1,0] 表示 1,[0,0,1][0,0,1] 表示 2,在上例输出结果中的第三位到第六位 [...0,1,0,0...][...0,1,0,0...] 也就是表示该特征为 1

  第二个特征,第三列 [3,0,1,2][3,0,1,2],它有四种值,那么 one-hot 就会使用四位来表示这个特征,[1,0,0,0][1,0,0,0] 表示 0, [0,1,0,0][0,1,0,0] 表示 1,[0,0,1,0][0,0,1,0] 表示 2,[0,0,0,1][0,0,0,1] 表示 3,在上例输出结果中的最后四位 [...0,0,0,1][...0,0,0,1] 也就是表示该特征为 3

示例:

array = np.array([1,2,3])
ohe = OneHotEncoder()
labels = ohe.fit_transform(array.reshape(-1,1))
print(labels.toarray())

[[ 1.  0.  0.][ 0.  1.  0.][ 0.  0.  1.]]

4. LabelBinarizer用法

(1)参数

neg_label : int (default: 0)Value with which negative labels must be encoded.pos_label : int (default: 1)Value with which positive labels must be encoded.sparse_output : boolean (default: False)True if the returned array from transform is desired to be in sparseCSR format.

(2)示例

  使用LabelBinarizer可以一次性完成LabelEncoder和OneHotEncoder(从文本类别转化为整数类别,再从整数类别转换为独热向量)

lb = preprocessing.LabelBinarizer()
lb.fit_transform(['yes', 'no', 'no', 'yes'])
array([[1],[0],[0],[1]])

转载于:https://www.cnblogs.com/xiaobingqianrui/p/10593182.html

机器学习之类别性特征相关推荐

  1. 【机器学习】树模型遇上类别型特征(Python)

    在数据挖掘项目的数据中,数据类型可以分为两种:有序的连续数值 和 无序的类别型特征. 对于xgboost.GBDT等boosting树模型,基学习通常是cart回归树,而cart树的输入通常只支持连续 ...

  2. 【机器学习基础】机器学习中类别变量的编码方法总结

    机器学习 Author:louwill Machine Learning Lab 在做结构化数据训练时,类别特征是一个非常常见的变量类型.机器学习中有多种类别变量编码方式,各种编码方法都有各自的适用场 ...

  3. toarray方法_机器学习中类别变量的编码方法总结

    作者:louwill:转载自:机器学习实验室 在做结构化数据训练时,类别特征是一个非常常见的变量类型.机器学习中有多种类别变量编码方式,各种编码方法都有各自的适用场景和特点.本文就对机器学习中常见的类 ...

  4. KDD 2021 | 谷歌DHE:不使用embedding table的类别型特征embedding

    作者 | Chilia 哥伦比亚大学 NLP搜索推荐 整理 | NewBeeNLP 类别型特征(用户ID/物品ID)的embedding在推荐系统中扮演着重要的作用,标准的方式是用一个(巨大的)emb ...

  5. 机器学习中类别变量的编码方法总结

    机器学习 Author:louwill Machine Learning Lab 在做结构化数据训练时,类别特征是一个非常常见的变量类型.机器学习中有多种类别变量编码方式,各种编码方法都有各自的适用场 ...

  6. 北交桑基韬:“超”人的机器学习,非语义特征的得与失

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者 | 桑基韬 整理 | 维克多 人工智能目前最大的"拦路虎"是不可信赖性,以深度学习为基础的算法,在实验室环境下 ...

  7. 机器学习处理流程、特征工程,模型设计实例

    作者:大树 更新时间:01.14 email:59888745@qq.com 数据处理,机器学习 回主目录:2017 年学习记录和总结 阿里天池 大航杯"智造扬中"电力AI大赛 的 ...

  8. 一文了解类别型特征的编码方法

    来源:Unsplash,作者:an Rizzari 2019 年第 78 篇文章,总第 102 篇文章 目录: 问题描述 数据准备 标签编码 自定义二分类 one-hot 编码 总结 问题描述 一般特 ...

  9. 如何处理类别型特征?

    目录: 问题描述 数据准备 标签编码 自定义二分类 one-hot 编码 问题描述 一般特征可以分为两类特征,连续型和离散型特征,而离散型特征既有是数值型的,也有是类别型特征,也可以说是字符型,比如说 ...

最新文章

  1. Python中非常有用的三个数据科学库
  2. 2016全球教育机器人发展白皮书
  3. amazeui学习笔记--css(常用组件4)--关闭按钮Close
  4. js+jQuery获取全选并用ajax进行批量删除
  5. 反射学习4-通过反射机制动态创建和访问数组
  6. python中元组和列表转化_4.Python列表/元组/集合/字典
  7. 计算机单词修改是否正确,计算机组装必懂的53个单词及装机步骤51条.doc
  8. java 输出字符串的所有排列_JAVA 输出指定字符串所有排列组合
  9. 创建一个1000w个随机浮点数的数组
  10. SlickEdit 的宏解析设置方法
  11. spark原理和spark与mapreduce的最大区别
  12. 网络工程师Day9--GRE配置
  13. 如何清除vsphere主机提示“此主机当前没有管理网络冗余”
  14. GitHub+Hexo 搭建个人网站详细教程(转载)
  15. 8.0强行转换后变成了7_南方Cass软件坐标转换方法!
  16. ANC 调试 -FF 降噪原理和调试
  17. VLP-16第一课: Velodyne的工作原理和驱动安装
  18. 苹果电脑开机慢怎么办
  19. 【我的Android进阶之旅】Android实现中文汉字笔划(笔画)排序、中文拼音排序、英文排序的国家地区选择界面
  20. python学习——主要的代码结构,模块和包

热门文章

  1. Remoting學習(五)----Reomoting 事件和配置文件的疑惑
  2. python推荐书-python的书推荐
  3. python爬虫图片-Python图片爬取方法总结
  4. python爬虫能干什么-爬虫可以做的事情非常多,Python的爬虫你又了解多少?
  5. python绘制灰度图片直方图-用python简单处理图片(5):图像直方图
  6. python 命令-新手向——用python编写命令行应用的简洁方式
  7. python培训出来的有公司要吗-python培训机构出来好就业吗
  8. python软件开发的一般流程-django最快程序开发流程详解
  9. python数字类型-Python数字类型介绍
  10. php和python哪个学起来简单一点-现在自学php和python那个合适?