[譯]用R語言作挖掘數據《二》

數據探索

1、實驗說明

1. 環境登陸

無需密碼自動登陸,系統用戶名shiyanlou,密碼shiyanlouhtml

 2. 環境介紹

本實驗環境採用帶桌面的Ubuntu Linux環境,實驗中會用到程序:web

1. LX終端(LXTerminal): Linux命令行終端,打開後會進入Bash環境,可使用Linux命令
2. GVim:很是好用的編輯器,最簡單的用法能夠參考課程[Vim編輯器](http://www.shiyanlou.com/courses/2)
3. R:在命令行輸入‘R’  進入R語言的交互式環境,下面的代碼都是在交互式環境運行。編輯器

3. 環境使用

使用R語言交互式環境輸入實驗所需的代碼及文件,使用LX終端(LXTerminal)運行所需命令進行操做。函數

完成實驗後能夠點擊桌面上方的「實驗截圖」保存並分享實驗結果到微博,向好友展現本身的學習進度。實驗樓提供後臺系統截圖,能夠真實有效證實您已經完成了實驗。post

實驗記錄頁面能夠在「個人主頁」中查看,其中含有每次實驗的截圖及筆記,以及每次實驗的有效學習時間(指的是在實驗桌面內操做的時間,若是沒有操做,系統會記錄爲發呆時間)。這些都是您學習的真實性證實。學習

2、課程介紹

這一節課主要介紹使用R語言初步分析數據。首先查看數據的維度、結構以及R數據對象,其次是基本的統計量和圖表。接下來是多元數據的分析包括多變量分佈、多變量箱型圖以及散點圖。在後面的例子中將會繪製水平圖、熱圖和3D圖,並將圖表保存爲各類形式的文件。 spa

3、課程內容

一、觀察數據

這一章咱們將會用到‘iris’數據集,這個數據集屬於R中自帶的數據,所以不須要額外的加載。首先,查看數據的維度和結構,使用函數dim()和names()能夠分別獲得數據的維度和數據的列表名稱也就是變量名稱。使用函數str()和函數attribute()能夠查看數據的結構和屬性。命令行

> dim(iris) # 維度
> names(iris) # 列名
> str(iris) # 結構
> attribute(iris) # 屬性

接下來,查看數據的前5行,使用head()查看數據的前面幾行,使用tail()能夠查看數據的後面幾行。3d

> iris[1:5,] # 查看1-5行數據
> head(iris) # 查看前6行數據
> tail(iris) # 查看後6行數據

其次,咱們能夠經過單獨的列名稱檢索數據,下面的代碼均可以實現檢索‘Sepal.Length’(萼片長度)這個屬性的前面10個數據。htm

> iris[1:10,'Sepal.Length']
> iris$Sepal.Length[1:10] # 通常比較經常使用的檢索方式

結果以下圖所示:

二、分析單變量的分佈

每個數值變量的分佈均可以使用函數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))

條狀圖以下圖所示:

三、分析多元數據

在觀察完單獨變量的分佈以後,咱們須要研究兩個變量之間的關係。下面咱們將會使用函數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) 

四、拓展

這一節將會學習一些有趣的圖,包括3D圖熱圖平行座標圖

> 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’實現。

五、將圖標保存到文件

在數據分析中會產生不少圖片,爲了可以在後面的程序中用到那些圖表須要將它們保存起來。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()

更多關於數據挖掘的課程細節請參考:實驗樓課程

相關文章
相關標籤/搜索