[译]用R语言做挖掘数据《二》
数据探索
一、实验说明
1. 环境登录
无需密码自动登录,系统用户名shiyanlou,密码shiyanlou
2. 环境介绍
本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序:
1. LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令
2. GVim:非常好用的编辑器,最简单的用法可以参考课程[Vim编辑器](http://www.shiyanlou.com/courses/2)
3. R:在命令行输入‘R’ 进入R语言的交互式环境,下面的代码都是在交互式环境运行。
3. 环境使用
使用R语言交互式环境输入实验所需的代码及文件,使用LX终端(LXTerminal)运行所需命令进行操作。
完成实验后可以点击桌面上方的“实验截图”保存并分享实验结果到微博,向好友展示自己的学习进度。实验楼提供后台系统截图,可以真实有效证明您已经完成了实验。
实验记录页面可以在“我的主页”中查看,其中含有每次实验的截图及笔记,以及每次实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。
二、课程介绍
这一节课主要介绍使用R语言初步分析数据。首先查看数据的维度、结构以及R数据对象,其次是基本的统计量和图表。接下来是多元数据的分析包括多变量分布、多变量箱型图以及散点图。在后面的例子中将会绘制水平图、热图和3D图,并将图表保存为各种形式的文件。
三、课程内容
1、观察数据
这一章我们将会用到‘iris’数据集,这个数据集属于R中自带的数据,因此不需要额外的加载。首先,查看数据的维度和结构,使用函数dim()和names()可以分别得到数据的维度和数据的列表名称也就是变量名称。使用函数str()和函数attribute()可以查看数据的结构和属性。
> dim(iris) # 维度
> names(iris) # 列名
> str(iris) # 结构
> attribute(iris) # 属性
接下来,查看数据的前5行,使用head()查看数据的前面几行,使用tail()可以查看数据的后面几行。
> iris[1:5,] # 查看1-5行数据
> head(iris) # 查看前6行数据
> tail(iris) # 查看后6行数据
其次,我们可以通过单独的列名称检索数据,下面的代码都可以实现检索‘Sepal.Length’(萼片长度)这个属性的前面10个数据。
> iris[1:10,'Sepal.Length']
> iris$Sepal.Length[1:10] # 一般比较常用的检索方式
结果如下图所示:

2、分析单变量的分布
每一个数值变量的分布都可以使用函数summary()查看,该函数可以得出变量的最小值、最大值、均值、中位数、第一和第三四分位数。
> summary(iris)
结果显示如下:

同样,均值、中位数以及范围可以通过函数mean()、median()以及range()分别实现,下面是通过quantile()函数实现四分位数和百分位数的代码:
> quantile(iris$Sepal.Length)
# 实现10%和30%以及65%的分位数
> quantile(iris$Sepal.Length,c(.1,.3,.65))
接下来,使用var()查看‘Sepal.Length’的方差,并使用函数hist()和density()查看该属性的直方图分布和密度分布。
> var(iris$Sepal.Length) # 方差
> hist(iris$Sepal.Length) # 直方图
> plot(density(iris$Sepal.Length)) # 密度分布图
变量的频数可以通过函数table()查看,使用pie()画饼状图或使用barplot()画条形图。
> table(iris$Species)
> pie(table(iris$Species))
> barplot(table(iris$Species))
条状图如下图所示:

3、分析多元数据
在观察完单独变量的分布之后,我们需要研究两个变量之间的关系。下面我们将会使用函数cov()和cor()计算变量之间的协方差和相关系数。
> cov(iris$Sepal.Length, iris$Petal.Length)
# 计算1-4列属性之间的协方差
> cov(iris[,1:4])
# 计算萼片长度和花瓣长度之间的相关系数
> cor(iris$Sepal.Length, iris$Petal.Length)
> cor(iris[,1:4]) # 计算4个属性之间的相关系数
使用aggregate()返回每种鸢尾花的萼片长度的状态。
# summary这个参数表明使用的是summary()函数查看数据分布状态
> aggregate(Sepal.Length ~ Species, summary, data=iris)
结果显示如下:

使用函数boxplot()绘制箱线图也称箱须图来展示中位数、四分位数以及异常值的分布情况。
> boxplot(Sepal.Length~Species, data=iris)
如下图所示:

上图中,矩形盒中间的横条就是变量的中位数,矩形盒的上下两个边分别是上、下四分位数也称第一四分位数和第三四分位数,最外面的上下两条横线分别是最大值和最小值,至于在virginica这类鸢尾花上面的箱线图外面的一个圆圈就是异常值。
使用plot()函数可以绘制两个数值变量之间的散点图,如果使用with()函数就不需要在变量名之前添加‘iris$’,下面的代码中设置了每种鸢尾花观测值的点的颜色和形状(了解函数或者模块的用法可以通过输入‘?function’查看函数文档):
# 参数col根据鸢尾花种类设置点的颜色,pch将种类转化为数值型设置点的形状
> with(iris, plot(Sepal.Length, Sepal.Width, col=Species, pch=as.numeric(Species)))
效果图如下:

当点比较多的时候就会有重叠,我们可以在绘图前使用jitter()往数据中添加一些噪声点来减少数据的重叠:
> plot(jitter(iris$Sepal.Length), jitter(iris$Sepal.Width))
通过函数pair()绘制散点图矩阵。
> pairs(iris)
4、拓展
> library(scatterplot3d) # 加载包
> scatterplot3d(iris$Petal.Width, iris$Sepal.Length, iris$Sepal.Width) # 3d图
# dist()函数用来计算不同鸢尾花数据的相似度
> distMatrix <- as.matrix(dist(iris[,1:4]))
> heatmap(distMatrix)
# 绘制平行坐标图
> library(MASS)
> parcoord(iris[1:4], col=iris$Species)
> library(lattice)
> parallelplot(~iris[1:4] | Species, data=iris)
> library(ggplot2)
> qplot(Sepal.Length, Sepal.Width, data=iris, facets=Species ~.)
除了上面的图以外,还有更多比较复杂的图可以通过包‘ggplot’实现。
5、将图标保存到文件
在数据分析中会产生很多图片,为了能够在后面的程序中用到那些图表需要将它们保存起来。R提供了很多保存文件的函数。下面的例子就是将图表保存为pdf文件。另外,可以使用函数ps()和postscript()将图片保存为ps文件,使用bmp()、jpeg()、png()以及tiff()可以保存为对应的图片格式文件。注意画完图以后需要使用函数graphics.off()或者dev.off()关闭画图设备。
# 创建一个myPlot.pdf文件,并在里面画图,画完图后关闭图片设备
> pdf("myPlot.pdf")
> x <- 1:50
> plot(x, log(x))
> graphics.off()
更多关于数据挖掘的课程细节请参考:实验楼课程
[译]用R语言做挖掘数据《二》的更多相关文章
- [译]用R语言做挖掘数据《六》
异常值检测 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...
- [译]用R语言做挖掘数据《七》
时间序列与数据挖掘 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用 ...
- [译]用R语言做挖掘数据《五》
介绍 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...
- [译]用R语言做挖掘数据《四》
回归 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...
- [译]用R语言做挖掘数据《三》
决策树和随机森林 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到 ...
- [译]用R语言做挖掘数据《一》
介绍 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...
- R语言实现金融数据的时间序列分析及建模
R语言实现金融数据的时间序列分析及建模 一 移动平均 移动平均能消除数据中的季节变动和不规则变动.若序列中存在周期变动,则通常以周期为移动平均项数.移动平均法可以通过数据显示出数据长期趋势的变动 ...
- 用R语言 做回归分析
使用R做回归分析整体上是比较常规的一类数据分析内容,下面我们具体的了解用R语言做回归分析的过程. 首先,我们先构造一个分析的数据集 x<-data.frame(y=c(102,115,124,1 ...
- R语言分析朝阳医院数据
R语言分析朝阳医院数据 本次实践通过分析朝阳医院2016年销售数据,得出“月均消费次数”.“月均消费金额”.“客单价”.“消费趋势”等结果,并据此作出可视化图形. 一.读取数据: library(op ...
随机推荐
- docker为什么适合devops?
欢迎访问网易云社区,了解更多网易技术产品运营经验 进阶版结论:Kubernetes + Docker 是 Dev 和 Ops 融合的一个桥梁. DevOps 强调的是高效组织团队之间如何通过自动化 ...
- Robolectric 单元测试中使用 Ressource
单元测试类中: @RunWith(RobolectricGradleTestRunner.class) @Config(constants=BuildConfig.class, sdk = 21) 获 ...
- Python----初次见面,请多关照!
1.计算机的最基本认识 CPU(大脑) 3GHZ + 内存(DDR4) + 主板 + 电源(心脏)+ 显示器 + 键盘 +鼠标+ 显卡 + 硬盘 80MB/s 操作系统分为: windows 家用 l ...
- Gogland编译LiteIDE工程需要注意问题!
致歉声明:实在抱歉,因为自己对Go语言和Gogland的不熟悉,导致错误判断!无论LiteIDE和Goland都可以顺利使用同一个包下的其它文件内容!!Go语言本身就允许把一个包拆分成不同的文件,下面 ...
- @media媒体查询
@media媒体查询 @media screen and (min-width:640px) and (max-width:1920px){/*当屏幕尺寸大于640px时与小于1920时*/ .pub ...
- 洛谷P4250 [SCOI2015]小凸想跑步(半平面交)
题面 传送门 题解 设\(p\)点坐标为\(x_p,y_p\),那么根据叉积可以算出它与\((i,i+1)\)构成的三角形的面积 为了保证\(p\)与\((0,1)\)构成的面积最小,就相当于它比其它 ...
- 洛谷P5280 [ZJOI2019]线段树(线段树)
题面 传送门 题解 考场上就这么一道会做的其它连暴力都没打--活该爆炸-- 首先我们得看出问题的本质:有\(m\)个操作,总共\(2^m\)种情况分别对应每个操作是否执行,求这\(2^m\)棵线段树上 ...
- [推荐] 网络侦查工具 NMAP 简单入门
[推荐] 网络侦查工具 NMAP 简单入门 # 前言 作为一只运维开发,总是避不开要和网络打交道的.尤其是当自身能力到达瓶颈,开始从事云计算以求突破.会有搭建多台虚拟机的需要,这时候如果在手工的查询 ...
- Nginx+SpringBoot搭建负载均衡
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- iOS --高仿QQ空间页面
1.首先分析一下qq空间页面的主要2个功能: 1)随着TableView的向上滑动导航栏的颜色渐变,变化过程是从透明变成白色. 2)随着TableView的向下滑动,图片随着offset放大. 2.首 ...