机器学习之类别性特征
类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型。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 值来指定
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
机器学习之类别性特征相关推荐
- 【机器学习】树模型遇上类别型特征(Python)
在数据挖掘项目的数据中,数据类型可以分为两种:有序的连续数值 和 无序的类别型特征. 对于xgboost.GBDT等boosting树模型,基学习通常是cart回归树,而cart树的输入通常只支持连续 ...
- 【机器学习基础】机器学习中类别变量的编码方法总结
机器学习 Author:louwill Machine Learning Lab 在做结构化数据训练时,类别特征是一个非常常见的变量类型.机器学习中有多种类别变量编码方式,各种编码方法都有各自的适用场 ...
- toarray方法_机器学习中类别变量的编码方法总结
作者:louwill:转载自:机器学习实验室 在做结构化数据训练时,类别特征是一个非常常见的变量类型.机器学习中有多种类别变量编码方式,各种编码方法都有各自的适用场景和特点.本文就对机器学习中常见的类 ...
- KDD 2021 | 谷歌DHE:不使用embedding table的类别型特征embedding
作者 | Chilia 哥伦比亚大学 NLP搜索推荐 整理 | NewBeeNLP 类别型特征(用户ID/物品ID)的embedding在推荐系统中扮演着重要的作用,标准的方式是用一个(巨大的)emb ...
- 机器学习中类别变量的编码方法总结
机器学习 Author:louwill Machine Learning Lab 在做结构化数据训练时,类别特征是一个非常常见的变量类型.机器学习中有多种类别变量编码方式,各种编码方法都有各自的适用场 ...
- 北交桑基韬:“超”人的机器学习,非语义特征的得与失
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者 | 桑基韬 整理 | 维克多 人工智能目前最大的"拦路虎"是不可信赖性,以深度学习为基础的算法,在实验室环境下 ...
- 机器学习处理流程、特征工程,模型设计实例
作者:大树 更新时间:01.14 email:59888745@qq.com 数据处理,机器学习 回主目录:2017 年学习记录和总结 阿里天池 大航杯"智造扬中"电力AI大赛 的 ...
- 一文了解类别型特征的编码方法
来源:Unsplash,作者:an Rizzari 2019 年第 78 篇文章,总第 102 篇文章 目录: 问题描述 数据准备 标签编码 自定义二分类 one-hot 编码 总结 问题描述 一般特 ...
- 如何处理类别型特征?
目录: 问题描述 数据准备 标签编码 自定义二分类 one-hot 编码 问题描述 一般特征可以分为两类特征,连续型和离散型特征,而离散型特征既有是数值型的,也有是类别型特征,也可以说是字符型,比如说 ...
最新文章
- Python中非常有用的三个数据科学库
- 2016全球教育机器人发展白皮书
- amazeui学习笔记--css(常用组件4)--关闭按钮Close
- js+jQuery获取全选并用ajax进行批量删除
- 反射学习4-通过反射机制动态创建和访问数组
- python中元组和列表转化_4.Python列表/元组/集合/字典
- 计算机单词修改是否正确,计算机组装必懂的53个单词及装机步骤51条.doc
- java 输出字符串的所有排列_JAVA 输出指定字符串所有排列组合
- 创建一个1000w个随机浮点数的数组
- SlickEdit 的宏解析设置方法
- spark原理和spark与mapreduce的最大区别
- 网络工程师Day9--GRE配置
- 如何清除vsphere主机提示“此主机当前没有管理网络冗余”
- GitHub+Hexo 搭建个人网站详细教程(转载)
- 8.0强行转换后变成了7_南方Cass软件坐标转换方法!
- ANC 调试 -FF 降噪原理和调试
- VLP-16第一课: Velodyne的工作原理和驱动安装
- 苹果电脑开机慢怎么办
- 【我的Android进阶之旅】Android实现中文汉字笔划(笔画)排序、中文拼音排序、英文排序的国家地区选择界面
- python学习——主要的代码结构,模块和包
热门文章
- Remoting學習(五)----Reomoting 事件和配置文件的疑惑
- python推荐书-python的书推荐
- python爬虫图片-Python图片爬取方法总结
- python爬虫能干什么-爬虫可以做的事情非常多,Python的爬虫你又了解多少?
- python绘制灰度图片直方图-用python简单处理图片(5):图像直方图
- python 命令-新手向——用python编写命令行应用的简洁方式
- python培训出来的有公司要吗-python培训机构出来好就业吗
- python软件开发的一般流程-django最快程序开发流程详解
- python数字类型-Python数字类型介绍
- php和python哪个学起来简单一点-现在自学php和python那个合适?