分享

R语言与数据挖掘学习笔记(3):数据探索

 啊羊的书店 2013-03-24


19
Jun 12

R语言与数据挖掘学习笔记(3):数据探索

   在开始一个数据分析项目之前,都非常有必要了解一下我们的数据,今天晚上主要整理数据探索方面一些常用的代码:

一、先看看数据

我们首先要先了解一下数据的尺寸和结构:

dim(iris) # 了解数据集的维度,有多少行多少列?

names(iris) # 数据有哪些列?

str(iris) # 数据的结构如何?

attributes(iris) # 数据的列名、行名和数据结构

然后看看数据集前几行和后几行长成什么样子:

iris[1:5, ] # 看看数据的前5行

head(iris) # 看看数据的前6行

tail(iris) # 看看数据的最后6行

iris[1:10, "Sepal.Length"] # Sepal.Length变量的前10个取值

iris$Sepal.Length[1:10] # 用另外一种形式取出

二、看看单个变量的情况

summary(iris) # 看看单个变量的关键数据:最小值、25%分位数、中位数、均值、75%分位数、最大值

quantile(iris$Sepal.Length) # 单个变量的1%、25%、50%、75%、100%分位数

quantile(iris$Sepal.Length, c(0.1, 0.3, 0.65)) # 指定分位点对应的分位数

mean(),median(),range() # 返回均值、中位数和数据的范围

对于连续变量:

var() # 返回变量的方差

hist(iris$Sepal.Length) # 画出变量的直方图,看看变量的分布情况

plot(density(iris$Sepal.Length)) # 画出变量的密度函数图

对于类别变量:

table(iris$Species) # 统计每个类别的计数,了解一下各个类别的分布

pie(table(iris$Species)) # 画出每个类别的占比饼图

barplot(table(iris$Species)) # 画出柱状图

三、观察多个变量之间的关系

首先看看变量之间的相关性:

cov(iris[ , 1:4]) # 计算变量之间的协方差矩阵

cor(iris[ , 1:4]) # 计算变量之间的相关系数矩阵

然后研究一些在不同的目标变量水平下,某变量的基本情况:

aggregate(Sepal.Length~Spacies, summary, data=iris) # 对于Sepal.Length变量,在每个Species水平上执行summary计算

boxplot(Sepal.Length~Species, data=iris) # 针对每个Species水平绘制Sepal.Length的盒形图

with(iris, plot(Sepal.Length, Sepal.Width, col=Species, pch=as.numeric(Species))) #针对每个Species水平绘制两个变量的散点图,并用颜色和点状区分

plot(jitter(iris$Sepal.Length), jitter(iris$Sepal.Width))

接着用图形的方式研究变量之间的关系:

pairs(iris) # 绘制任意两个矩阵之间的散点图,发现变量之间的相关性

四、看看其他方面

三维散点图:

library(scatterplot3d)
scatterplot3d(iris$Petal.Width, iris$Sepal.Length, iris$Sepal.Width)

构造相似性矩阵,用热图可视化样本之间的相似性:

distMatrix <- as.matrix(dist(iris[,1:4]))
heatmap(distMatrix)

以Sepal.Length和Sepal.Width为横纵坐标,分水平,以Petal.Width大小为颜色,探索数据之间的关系:

library(lattice)
levelplot(Petal.Width~Sepal.Length*Sepal.Width, iris, cuts=9,col.regions=grey.colors(10)[10:1])

以等高线的形式探索数据的关系:

library(lattice)

filled.contour(volcano, color=terrain.colors, asp=1,plot.axes=contour(volcano, add=T))

画一顶帽子:

persp(volcano, theta = 25, phi = 30, expand = 0.5, col = "lightblue")

平面坐标可视化,研究不同类别变量之间的差异:

library(MASS)
parcoord(iris[1:4], col=iris$Species)

还可以用另外一个函数实现

library(lattice)
parallelplot(~iris[1:4] | Species, data=iris)

最后介绍一下ggplot2这个包,非常强悍,后续专门找一个晚上重点学习,一个简单的例子:

根据Species的不同类别,绘制Sepal.Length和Sepal.Width的散点图。

library(ggplot2)
qplot(Sepal.Length, Sepal.Width, data=iris, facets=Species ~.)

五、保存图片

# save as a PDF file
pdf("myPlot.pdf")
x <- 1:50
plot(x, log(x))
graphics.off()
# Save as a postscript file
postscript("myPlot2.ps")
x <- -20:20
plot(x, x^2)
graphics.off()

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多