机器学习之类别性特征

类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型。Sklearn中提供了几个转换器来处理文本属

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

  类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型。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 be
          in ``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 sparse
    CSR format.

(2)示例

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

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120029.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • hadoop集群老的资源管理Mrv1与Yarn资源管理器的工作流程和对比

    hadoop集群老的资源管理Mrv1与Yarn资源管理器的工作流程和对比hadoop集群老的资源管理Mrv1与Yarn资源管理器的工作流程和对比

  • 怎么看idea是否激活_最新在线免费激活

    (怎么看idea是否激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlCJM5ZJBPHS-eyJsaWNlbnNlSWQi…

  • MySql数据库备份与恢复——使用mysqldump 导入与导出方法总结

    MySql数据库备份与恢复——使用mysqldump 导入与导出方法总结MySql数据库备份与恢复——使用mysqldump导入与导出方法总结mysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个sql服务器(不一定是一个mysql服务器)。转储包含创建表和/或装载表的sql语句。ps、如果在服务器上进行备份,并且表均为myisam表,应考虑使用mysqlhotcopy,因为可以更快地进行备份和恢复。本文从三部分介绍了mys…

  • Java编译时类型和运行时类型「建议收藏」

    Java编译时类型和运行时类型「建议收藏」一、前言最近在做笔试题的时候,才看到有这么一个知识点,查了好几篇博客,在这里记录一下二、是什么Java引用变量有两个类型,一个是编译时类型,还有一个是运行时类型。编译时类型是由声明该变量时使用的类型所决定,运行时类型是由该变量指向的对象类型决定如果两种类型不一致,就会出现多态,因此就会将子类对象之间赋值给父类引用变量,称为向上转型,而不用进行类型转换。如Animal…

  • 计算机三级(数据库)备考题目知识点总结

    计算机三级(数据库)备考题目知识点总结计算机三级(数据库)备考题目知识点总结刷题所遇到的知识点总结考后总结刷题所遇到的知识点总结以下都是我在刷题时遇到的常考的知识点,供复习时做参考。1.DBAS需求分析阶段的一项重要工作是分析DBAS应具有的性能指标,主要包括:①数据操作响应时间,或数据访问响应时间;②系统吞吐量,即指系统在单位时间内可以完成的数据库事务或查询的数量;③允许并发访问最大用户数;④每TPS(PriceperTP…

  • UML——包图[通俗易懂]

    UML——包图[通俗易懂]UML——包图

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号