您的位置:首页 > 其它

R与机器学习:(2)——数据管理与理解

2017-04-20 11:41 253 查看



R与机器学习:(2)——数据管理与理解

向量

说明

R的基本数据结构是向量。向量存储一组有序的值,称为元素。
  • 一个向量可以有多个元素。
  • 所有的元素必须是同一种类型。

常用的向量类型  

  • integer 整数型
  • numeric 数值型,包括小数的数字
  • character 字符型,文本数据
  • logical 逻辑型,取值为False或者True
  • 两个特殊的值:NULL,NA

基本操作

  手动创建向量

  



说明:<-是R语言的赋值操作符,类似于其他编程语言的 =,此处是给向量命名。


  访问向量中的元素

  




说明:第一个根据下标输出向量中的元素

   第二个输出一个范围内的向量元素

   第三个在2前面加上-,表示输出除第2个以外的其他元素

   第四个构建一个逻辑向量来标识每一项是否包含在内


因子

说明

  因子是R语言提供了用来标识名义属性(或变量)的专用数据结构。


为什么使用因子?而不是字符型向量:

因子的一个优势在于类别标签只被存储一次. 例如,相比存储MALE , MALE , FEMALE ,使用因子只需要存储 1 , 1 , 2 , 存储相同的信息可以节约空间。 另外, 很多机器学习算法对待名词和数据集的处理是不同的. 把分类变量编码可以确保模型能够合理地处理这些数据。


基本使用

  把字符型向量转换成因子

  



说明:当性别数据显示出来后,R会输出额外的信息来表明性别因子的水平。水平由数据可能取到的所有类别组成。


  创建因子时,加入额外水平

  



意义:尽管血型B没有被记录在我们的数据中,但是我们创建血型类型表时知道类型B是存在的。


列表

说明

  列表是一种特殊类型的向量,它用来存储一组有序的值,它允许收集不同类型的值。

  列表一直用于存储不同类型的输入和输出数据,以及存储机器学习模型中使用的结构参数。

基本使用

  创建一个列表

  



说明:名字不是必须的,但是它使得接下来可以能够通过名字来访问列表中的值,而不单单使用位置序号。


  使用名字访问列表值

  



数据框

说明

  机器学习中使用的最重要的R数据结构就是数据框。数据框定义为一个向量列表或者因子列表,它类似于电子表格或数据库形式。

基本使用

  利用病人数据构建一个数据框

  



说明:我们使用了data.frame()函数来将多个向量和因子组成为一个数据框。其中我们指定了,stringAsFactors=FALSE,如果不指定这个选项,R将自动把每个字符向量转换为因子,subject_name显然不是分类数据,所以不应该将其转换为因子。

用机器学习的术语来说:行代表的是案例,列代表的是特征或属性。


  提取列(向量)数据

  


  提取数据框中值

  



矩阵

说明

  矩阵是一种表示行和列数据的二维表格数据结构,能包含任何一种单一类型的数据,但是经常用来数学运算,因此矩阵通常存储数值型数据。

基本说明

  创建一个矩阵

  



说明:矩阵是按列顺序加载的。


  提取矩阵数据

  



用R管理数据

保存和加载R数据结构

  save()函数把R数据结构写道由file参数设定的位置,默认后缀名为RData.

 如:save(m,file="mydata.RData")

  load()函数会加载任何一种保存在以.RData为文件扩展名的文件中的数据结构。

 如:load("mydata.RData")


快照:save.image()会将你所有的会话写入一个叫做.RData的文件里。默认下次启动时会自动加载,实现会话重现。  


用CSV文件导入和保存数据

  CSV(Comma-Separated Value)文件,是一种由逗号分割开来的最简单的表格文件。

  读入该文件:

  > pt_data <- read.csv("/home/zy/Chapter 02/usedcars.csv",stringsAsFactors=FALSE)

  保存到CSV文件:

  >write.csv(pt_data,"pt_data.csv")

探索和理解数据

探索数据的结构

  函数str():提供了一个显示数据库结构的方法。

  



说明:观察每一行,我们发现变量名称后面标注的是数据类型,如int chr 等


探索数值型变量

summary():给出了几个常用的汇总统计量。



mean():用于计算向量的均值。

median():用来计算向量的中位数。

diff()可以获取两个数之间的差值。

range()函数可以同时返回最小值和最大值。

max() min():用来测量向量中的最极端的两个值。

Q1指的是由25%的数据小于Q1,Q3指的是由25%的数据大于Q3.

IQR():获取Q1~Q3之间的差。

quantile()获取一组值的分位数。  



箱图

说明:

  箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。

  



说明:异常值是什么?

异常值又称离群值,指大于1.5倍四分位数间距的数值。处于1.5~3倍四分位数间距之间的异常值在箱式图中常用空心圆表示。


绘制

  boxplot(pt_data$price,main="标题",ylab="纵坐标标题")用于绘制箱形图

  

获得方差和标准查

说明

  应用函数var()和函数sd(),可以在R中快速获得方差和标准差。


说明:方差越大表示数据在均值周围越分散,标准差表示平均来看每个值与均值差多少。


实例

> var(pt_data$price)
[1] 9749892
> sd(pt_data$price)
[1] 3122.482


探索分类变量

说明

  把某些项数据看成分类数据,比如年份,颜色,模型等等。与数值型变量相比,分类数据是用表格而不是汇总统计量来进行检测的。表示单个分类变量的表格称为一元表。函数table()可用来产生一元表。

实例

> table(pt_data$year)

2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
3    1    1    1    3    2    6   11   14   42   49   16    1
> model_table <- table(pt_data$model)
> prop.table(model_table)

SE       SEL       SES
0.5200000 0.1533333 0.3266667
> color_table<-table(pt_data$color)
> color_prc <-prop.table(color_table)*100
> round(color_prc,digits=1)

Black   Blue   Gold   Gray  Green    Red Silver  White Yellow
23.3   11.3    0.7   10.7    3.3   16.7   21.3   10.7    2.0


探索变量之间的关系

散点图

  散点图是一种可视化两遍历之间关系的图像。它是一个二维的图形。将点画在坐标平面中,该坐标平面的横坐标x是其中一个特征的值,纵坐标y是另一个特征的值来标识。坐标平面上点的排放模式,揭示了两个特征之间的内在关系。

  使用plot函数可以绘制散点图,但是需要指明自变量x和因变量y。

实例

> plot(x=pt_data$mileage,y=pt_data$price,main="mileage VS price",xlab="MileAge(KM)",ylab="Price($)")


双向交叉表

 双向交叉表用于检验两个名义变量之间的关系。与散点图类似,也是用来观察一个变量的值随另一个变量变化的。


 gmodels添加包中的crossTable()在一个表格中出现了行、列和边际百分比,是创建双向交叉表的很好函数。

 安装[b]gmodels:install.packages("gmodels");[/b]

 载入gmodels:library(gmodels);

使用CrossTable():CrossTable(x=pt_data$model,y=pt_data$color)


实例

> CrossTable(x=pt_data$model,y=pt_data$color)

Cell Contents   //这个表格说明如何解释每一个值
|-------------------------|
|                       N |
| Chi-square contribution |
|           N / Row Total |
|           N / Col Total |
|         N / Table Total |
|-------------------------|

Total Observations in Table:  150

| pt_data$color
pt_data$model |     Black |      Blue |      Gold |      Gray |     Green |       Red |    Silver |     White |    Yellow | Row Total |
--------------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|
SE |        19 |         9 |         1 |         7 |         4 |        12 |        11 |        14 |         1 |        78 |
|     0.035 |     0.003 |     0.443 |     0.209 |     0.754 |     0.077 |     1.912 |     3.878 |     0.201 |           |
|     0.244 |     0.115 |     0.013 |     0.090 |     0.051 |     0.154 |     0.141 |     0.179 |     0.013 |     0.520 |
|     0.543 |     0.529 |     1.000 |     0.438 |     0.800 |     0.480 |     0.344 |     0.875 |     0.333 |           |
|     0.127 |     0.060 |     0.007 |     0.047 |     0.027 |     0.080 |     0.073 |     0.093 |     0.007 |           |
--------------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|
SEL |         3 |         3 |         0 |         5 |         1 |         2 |         7 |         1 |         1 |        23 |
|     1.044 |     0.059 |     0.153 |     2.644 |     0.071 |     0.877 |     0.893 |     0.861 |     0.634 |           |
|     0.130 |     0.130 |     0.000 |     0.217 |     0.043 |     0.087 |     0.304 |     0.043 |     0.043 |     0.153 |
|     0.086 |     0.176 |     0.000 |     0.312 |     0.200 |     0.080 |     0.219 |     0.062 |     0.333 |           |
|     0.020 |     0.020 |     0.000 |     0.033 |     0.007 |     0.013 |     0.047 |     0.007 |     0.007 |           |
--------------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|
SES |        13 |         5 |         0 |         4 |         0 |        11 |        14 |         1 |         1 |        49 |
|     0.215 |     0.055 |     0.327 |     0.288 |     1.633 |     0.983 |     1.203 |     3.418 |     0.000 |           |
|     0.265 |     0.102 |     0.000 |     0.082 |     0.000 |     0.224 |     0.286 |     0.020 |     0.020 |     0.327 |
|     0.371 |     0.294 |     0.000 |     0.250 |     0.000 |     0.440 |     0.438 |     0.062 |     0.333 |           |
|     0.087 |     0.033 |     0.000 |     0.027 |     0.000 |     0.073 |     0.093 |     0.007 |     0.007 |           |
--------------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|
Column Total |        35 |        17 |         1 |        16 |         5 |        25 |        32 |        16 |         3 |       150 |
|     0.233 |     0.113 |     0.007 |     0.107 |     0.033 |     0.167 |     0.213 |     0.107 |     0.020 |           |
--------------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: