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 | | --------------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|
相关文章推荐
- 《机器学习与R语言》读书笔记3:数据的管理和理解
- 对云计算 大数据 机器学习 pagerrank的粗浅理解
- R语言与机器学习-学习笔记2(数据探索及理解)
- hw1: 理解文件系统方式下的数据管理
- 【机器学习实战-python3】缩减系数来“理解”数据
- 简单理解:人工智能、数据挖掘、模式识别、机器学习、深度学习
- 机器学习——python数据导入、数据理解
- 理解arcgis server 10.1 服务发布与数据管理
- 数据挖掘与机器学习的相关理解
- 【O'Reilly Data Show】机器学习将如何加速数据管理系统
- JVM学习记录-JVM的内存结构管理和运行时数据区理解
- 现阶段对数据库中知识发现KDD、数据挖掘、集成学习、深度学习、机器学习、人工智能、统计学、大数据、云计算的个人理解:
- 如何区分理解数据科学家与机器学习工程师
- 数据降维之PCA算法的理解(机器学习公开课)
- oracle表的管理,数据类型简单理解
- 项目管理工具+软件开发、云计算、数据分析和机器学习工具
- FMI飞马网 | 人工智能/大数据/程序/语言/项目管理/机器学习/Python书籍免费赠书
- .NET数据管理引论(1)---数据管理概论
- 动态的管理ASP.NET DataGrid数据列
- 掀开幕布看PDM-产品数据管理