文章目录

  • 类别转换成数字
  • 类别one-hot

类别转换成数字

我们看一下文本属性。在此数据集中,只有一个:ocean_proximity属性:

housing_cat = housing[['ocean_proximity']]
sklearn.utils.shuffle(housing_cat).head()
ocean_proximity
10763 <1H OCEAN
322 NEAR BAY
11124 <1H OCEAN
8115 NEAR OCEAN
2630 NEAR OCEAN

它不是任意文本,而是有限个可能的取值,每个值代表一个类别。因此,此属性是分类属性。大多数机器学习算法更喜欢使用数字,因此让我们将这些类别从文本转到数字:

from sklearn.preprocessing import OrdinalEncoder
ordinal_encoder = OrdinalEncoder()
housing_cat_encoded = ordinal_encoder.fit_transform(housing_cat)
np.random.permutation(housing_cat_encoded)[:5]
array([[4.],[1.],[0.],[4.],[4.]])

我们看一下每个数字的含义:

ordinal_encoder.categories_
[array(['<1H OCEAN', 'INLAND', 'ISLAND', 'NEAR BAY', 'NEAR OCEAN'],dtype=object)]

类别one-hot

上述将类型转化为数字的方式产生的一个问题是,机器学习算法会认为两个相近的值比两个离得较远的值更为相似一些。在某些情况下这是对的(对一些有序类别,像“坏”“平均”“好”“优秀”),但是,对ocean_proximity而言情况并非如此(例如,类别0和类别4之间就比类别0和类别1之间的相似度更高)。为了解决这个问题,常见的解决方案是给每个类别创建一个二进制的属性:当类别是“<1HOCEAN”时,一个属性为1(其他为0),当类别是“INLAND”时,另一个属性为1(其他为0),以此类推。这就是独热编码,因为只有一个属性为1(热),其他均为0(冷)。新的属性有时候称为哑(dummy)属性。ScikitLearn提供了一个OneHotEncoder编码器,可以将整数类别值转换为独热向量。我们用它来将类别编码为独热向量

from sklearn.preprocessing import OneHotEncoder
oh_encoder = OneHotEncoder()
housing_1hot = oh_encoder.fit_transform(housing_cat)
housing_1hot
<20640x5 sparse matrix of type '<class 'numpy.float64'>'with 20640 stored elements in Compressed Sparse Row format>

注意到这里的输出是一个SciPy稀疏矩阵,而不是一个NumPy数组。当你有成千上万个类别属性时,这个函数会非常有用。因为在独热编码完成之后,我们会得到一个几千列的矩阵,并且全是0,每行仅有一个1。占用大量内存来存储0是一件非常浪费的事情,因此稀疏矩阵选择仅存储非零元素的位置。而你依旧可以像使用一个普通的二维数组那样来使用他,当然如果你实在想把它转换成一个(密集的)NumPy数组,只需要调用toarray()方法即可:

housing_1hot.toarray()
array([[0., 0., 0., 1., 0.],[0., 0., 0., 1., 0.],[0., 0., 0., 1., 0.],...,[0., 1., 0., 0., 0.],[0., 1., 0., 0., 0.],[0., 1., 0., 0., 0.]])

关于one-hot的详细内容,可以参考另一篇文章:数值分箱与one-hot

sklearn处理文本和分类属性的方式相关推荐

  1. 读书笔记《Outlier Analysis》 第八章 分类、文本和混合属性中的异常检测

    1.引言 前面讨论的都是数值数据,然而,在现实生活生成中,还有很多其他类型的数据,如性别.种族.邮编.人员和实体的名称.IP地址等.通常处理这些数据更有挑战,因为难以以均匀和一致的方式来处理各种类型的 ...

  2. 使用python和sklearn的文本多标签分类实战开发

    文本分类一般可以分为二分类.多分类.多标签分类三种情况,二分类是指将一组文本分成两个类(0或1),比较常见的应用如垃圾邮件分类.电商网站的用户评价数据的正负面分类等,多分类是指将文本分成若干个类中的某 ...

  3. 鬼吹灯文本挖掘5:sklearn实现文本聚类和文本分类

    鬼吹灯文本挖掘1:jieba分词和CountVectorizer向量化 鬼吹灯文本挖掘2:wordcloud 词云展示 鬼吹灯文本挖掘3:关键词提取和使用sklearn 计算TF-IDF矩阵 鬼吹灯文 ...

  4. 利用word2vec、textCNN、jieba对事故文本多分类及致因修复(三维向量)

    中文分词 + 数据集三维向量化 + TextCNN 一.背景 经过几天的测试及模拟建模训练,尝试了机器学习中的一些常用模型,例如Lasso.LR.SVM.XGBoost.GBTD等,发现效果并不如人意 ...

  5. 二十一、文本情感分类二

    1.1 文本训练化概述 深度学习构建模型前需要将文本转化为向量表示(Word Embedding).首先需要将文本转化为数字(文本序列化),在把数字转化为向量. 可以考虑把文本中的每个词语和其对应的数 ...

  6. 机器学习--sklearn之决策树(分类+回归)

    什么是决策树? 决策树算法实现分类问题可以被理解为不断地进行条件语句判断,最终实现分类,如下图: 进行判断的分支很像树的枝干,被分出来的类别像是枝干上的叶子,所以将这个图称为决策树.所以,用决策树算法 ...

  7. 文本主题分类(TFIDF-朴素贝叶斯分类)

    文本主题分类(TFIDF-朴素贝叶斯分类) 大纲 1.背景介绍 2.文本特征提取 3.朴素贝叶斯主题分类实战 背景介绍: 贝叶斯讲的是一种"逆向概率",当我们没有上帝视角时,无法准 ...

  8. 基于LSTM的中文文本多分类实战

    在我之前的博客中我们介绍了文本的多分类的方法,我们还尝试了各种分类模型,比如朴素贝叶斯.逻辑回归.支持向量机和随机森林等并且都取得了非常不错的效果.今天我们使用深度学习中的LSTM(Long Shor ...

  9. 李宏毅ML作业笔记4: RNN文本情感分类

    更新中... 目录 任务介绍 文本情感分类 句子喂入RNN的方式 半监督 data格式 代码思路 加载数据集 正确个数计算 word embedding 数据预处理 RNN模型构建 RNN模型训练 改 ...

最新文章

  1. JSP第二次作业_2小题
  2. STM32的IIC应用详解2
  3. python 抓取“煎蛋妹子图”并分页存在本地(普通版和多线程版)
  4. 7-57 又来一个上三角数字三角形 (10 分)
  5. python sftp模块_python下载paramiko模块准备使用SFTP的坑!!!
  6. c++ file* 句柄泄漏_C++核心准则?讨论:持有没有被句柄管理的资源时切勿抛出异常...
  7. UI标签库专题六:JEECG智能开发平台 Autocomplete(自动补全标签 )
  8. 用编程解决生活中的问题
  9. 计算机毕业论文java毕业设计论文题目基于SpringBoot项目源码旅游信息管理系统[包运行成功]
  10. idea构建post请求_IDEA-HTTP工具
  11. android 电话号码,Android中的电话号码自动格式化
  12. C#微信、支付宝扫码支付源码
  13. 在QT界面中使用ico/png等图片文件,生成exe后不依赖外部文件
  14. HoneyFramework蜂巢框架六边形生成unity地图使用教程提示和技巧
  15. 电子设计教程4:稳压管稳压电路
  16. 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 有序
  17. 百科系统php,HDwiki与PHPCMS联合推出开源中文Wiki系统
  18. 计算机内存五个区域,总结:计算机内存的五大区域
  19. 美团 SP 30K*15.5?如何看待老生常谈的薪资倒挂现象?
  20. 手机LBS位置应用服务盘点

热门文章

  1. 【解决没有该选项问题】使Clion运行编译运行单个C/C++文件(Single File Execution插件)
  2. 【四重优化,速看】剑指 Offer 13. 机器人的运动范围
  3. leetcode算法刷题记录表
  4. 风险评估资产重要性识别_如何有效的进行风险评估?
  5. win7网络连接优先级设置
  6. linux shell oracle脚本_领导:如何用shell脚本统计Oracle数据库进程明细和存储过程信息...
  7. dvwa php sql,DVWA phpstudy安装
  8. utm虚拟机安装linux,UTM: 在 iOS 上安装 Windows 或 Linux 等系统及虚机安装过程
  9. hbase 可视化工具_Hadoop工具TOP 9:
  10. java http 接口制定_java調用http接口