無需密碼自動登陸,系統用戶名shiyanlou,密碼shiyanlouhtml
本實驗環境採用帶桌面的Ubuntu Linux環境,實驗中會用到程序:web
1. LX終端(LXTerminal): Linux命令行終端,打開後會進入Bash環境,可使用Linux命令
2. GVim:很是好用的編輯器,最簡單的用法能夠參考課程[Vim編輯器](http://www.shiyanlou.com/courses/2)
3. R:在命令行輸入‘R’ 進入R語言的交互式環境,下面的代碼都是在交互式環境運行。編輯器
使用R語言交互式環境輸入實驗所需的代碼及文件,使用LX終端(LXTerminal)運行所需命令進行操做。函數
完成實驗後能夠點擊桌面上方的「實驗截圖」保存並分享實驗結果到微博,向好友展現本身的學習進度。實驗樓提供後臺系統截圖,能夠真實有效證實您已經完成了實驗。post
實驗記錄頁面能夠在「個人主頁」中查看,其中含有每次實驗的截圖及筆記,以及每次實驗的有效學習時間(指的是在實驗桌面內操做的時間,若是沒有操做,系統會記錄爲發呆時間)。這些都是您學習的真實性證實。學習
這一節課主要介紹使用R語言初步分析數據。首先查看數據的維度、結構以及R數據對象,其次是基本的統計量和圖表。接下來是多元數據的分析包括多變量分佈、多變量箱型圖以及散點圖。在後面的例子中將會繪製水平圖、熱圖和3D圖,並將圖表保存爲各類形式的文件。 spa
這一章咱們將會用到‘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)
> 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()
更多關於數據挖掘的課程細節請參考:實驗樓課程