由男人和女人想到的分类问题

栏目: R语言 · 发布时间: 7年前

内容简介:由男人和女人想到的分类问题

由男人和女人想到的分类问题

由男人和女人想到的分类问题

我们生活中经常会遇到分类的问题,比如从性别上分能分成两类:男人和女人。如果从年龄上划分,又可将人群分为青年人(<-30岁),中年人(30-60岁),老年人(>60岁)。我们可以将这一表示类别的数据称为 分类数据

分类数据有着重要的意义,比如我们可以对现在流行的共享单车用户按下面的类别进行分组研究。

由男人和女人想到的分类问题

对数据进行分组研究后,我们会发现90%用户在目的地与地铁/公交站相距3000米内时选择使用共享单车,共享单车成为最有效的“最后一公里”解决方案。

由男人和女人想到的分类问题

类别数据对于分组数据研究非常有用。那么,在数据分析中是如何来表示类别数据呢?

这个问题也源自 大数据社群 的内部讨论。今天我们以数据分析R语言为例,看下在R中是如何表示类别数据的。

由男人和女人想到的分类问题

由男人和女人想到的分类问题

1. 如何表示分类数据?

在R中数据的分类是用 因子 数据类型(factor)来表示的。那么什么是因子呢?

因子被用来表示类别数据,因此也被称为“类别变量”。 举个具体的例子吧,你所在工作单位老板特别变态,要求每天上班打卡(我个人是非常痛恨上班打卡这种变态的行为的)。

由男人和女人想到的分类问题

你的老板电脑里就有所有员工每天打卡的记录数据,其中有姓名(name),性别(sex),是否打卡(card)等列。

由男人和女人想到的分类问题

这里的性别(男,女)有2个类别,就可以把姓名这一列作为因子变量来处理。而姓名这一列因为不是类别,毕竟每个人的姓名是不一样的,即使有两个人的姓名重名(加入都叫猴子),这两个人也不属于同一类。

不过也确实,这个世界说白了就是男人与女人的世界。

由男人和女人想到的分类问题

现在你明白了,因子就是用于表示一组数据中的类别,可以记录这组数据中的类别名称及类别数目。

在R中使用factor函数来创建因子,下面我们创建了性别向量为因子。

由男人和女人想到的分类问题

我们用class来查看下性别(sex)的数据类型,发现是因子类型:

由男人和女人想到的分类问题

因子中具体有哪些类别,可以用 levels()来查看。而有多少个类别可以nlevels()来查看。如下图,我们发现性别有2类,类别名称分别是:男,女。

由男人和女人想到的分类问题

2. 使用分类数据的意义是什么?

  • 实现研究对象的分组、分类计算

很多时候,一些模型参数都需要传入变量类型为因子。同时,绘图时候因子可以帮助你自动实现分组绘图。下面我们具体看下。

根据一开始的例子,我们创建了一个打卡记录数据。

由男人和女人想到的分类问题

我们使用summary()来具体看下创建的打卡数据的特征。

由男人和女人想到的分类问题

你会发现,只要是列里的值是字符串的,R都会自动将该列转换为因子类型。例如上面的姓名(name)列转换为因子类型,姓名叫“猴子”的有2个人。同样的,性别(sex)列也列出了每个类别的数据条数。

但是,姓名不是类别,我们不希望这一列是因子类型,需要将姓名这一列转换为字符串类型。

由男人和女人想到的分类问题

转换后,我们重新看下数据类型,姓名这里列就变为字符串类型了:

由男人和女人想到的分类问题

现在,我们用因子类型(性别)这一列来绘柱状图,看下每个性别的人数分布。

由男人和女人想到的分类问题

由男人和女人想到的分类问题

绘图后,我们看到每个性别的人数个数。现在你能理解了因子的作用了吧。正是因为性别(sex)这一列是因子类型,我们才能绘图是自动按照类别进行分组,计算出每一个类别的数目。

  • 类别数据能帮助我们自动发现错误数据

上面我们绘制的柱状图,你会发现性别里有个类别(feamle)并不是我们想要的,这有可能是原始数据本身的错误。

由男人和女人想到的分类问题

这时候,我们需要查找原始数据的值进行校验修改。校验后我们发现值为“feamle”的数据对应的值应该为性别“男”。我们现在来修改下。

由男人和女人想到的分类问题

我们再用summary()来看下数据的特征,发现性别(sex)这一列还存在feamle这个类别。

由男人和女人想到的分类问题

你可以使用droplevels()将废弃的类别删掉。

由男人和女人想到的分类问题

删除废弃的类别后,你会发现性别(sex)这一列只有两个类别了。

由男人和女人想到的分类问题

因子类型还有很多用处,当你后面学习到模型建立的时候,就会知道它的好处了。很多知识,只有你再用的过程中才会理解的更深刻。

3. 类别如何 排序 呢?

因子的类别默认排序都是按字母顺序来排序。但是有时候我们想制定类别的顺序。

例如学校让学生给老师教学打评分的类别有:良好,同意,不满意,非常同意,非常不满意。其实,按照正常的顺序你希望是这样的: 非常不满意,不满意,良好,同意,非常同意

下面我们以性别为例,将这一列的类别按照:女,男顺序来排序。

由男人和女人想到的分类问题

对因子排序有什么好处呢?排序后的因子类别可以按照排序顺序来显示。如下图,性别女的就显示在前面了。

由男人和女人想到的分类问题

4. 因子的几个问题

1)数值类型转换成因子

直接用as.numeric转换会有问题,转换后的内容不是你想要的:

由男人和女人想到的分类问题

由男人和女人想到的分类问题

正确的方法应该是这样的:

由男人和女人想到的分类问题

2)因子中 levels和lables的区别

levels代表原始类别名称,lables相当于对类别名称进行重命名。

下面我们将原始数据中所以类别为女的重命名为“female”,男的重命名为“male”。

由男人和女人想到的分类问题

最后所有数据按类别进行了对应的更新。

由男人和女人想到的分类问题

由男人和女人想到的分类问题

上面只是列举了数据分析R语言中的分类问题处理。其实其他编程语言 Python 也类似。一个领域中的陌生知识如果搞不明白,我们就可以联想下这个知识可以和现实生活中的哪些常识对应起来,因为知识的发明根本上是为了解决生活中的问题的。

这个世界也正是有了男人和女人才变的那么有趣。

由男人和女人想到的分类问题

漫画来自 Brightside

由男人和女人想到的分类问题


以上所述就是小编给大家介绍的《由男人和女人想到的分类问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Spring in Action

Spring in Action

Craig Walls / Manning Publications / 2011-6-29 / USD 49.99

Spring in Action, Third Edition has been completely revised to reflect the latest features, tools, practices Spring offers to java developers. It begins by introducing the core concepts of Spring and......一起来看看 《Spring in Action》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试