1. 程式人生 > >R語言snow包平行計算

R語言snow包平行計算


This post was kindly contributed by 資料科學與R語言 - go there to comment and to read the full post.  






在資料探勘和機器學習領域有許多的演算法需要強大的計算能力,如果對大資料進行運算操作,那麼其工作量之大使單個CPU核心難以承受負荷。目前的個人計算機已經具備有多個核心,如果採用平行計算將任務分解到多個核心上執行就能大大減少計算時間。進一步還可以將多臺計算機組合成計算叢集(Cluster)則能使之具備組合金剛般的運算能力。


目前已經有多個R語言擴充套件包專注於高效能運算,彌補了R本身單核心作業的弱點。其中snow(Simple Network of Workstations)是R語言中最流行的並行程式設計包於2003年推出,本文將嘗試用snow來運算K均值聚類。


我們先用單核心運算K均值聚類來看看花費的時間,用到的資料集是MASS包中的Boston資料,我們希望將其聚為4類,由於K均值聚類的演算法是隨機確定初始中心點,所以為了使之收斂到最優解上需要反覆運算多次。此處nstart引數設定為100000,即為運算次數。


system.time({  library(MASS)  result <- kmeans(Boston,4,nstart=100000)})可看到單核心計算共耗費了61秒,再用本地計算機上用雙核心構建叢集進行比較。在安裝和載入snow包後,首先用makeCluster函式構建本地計算叢集,通訊方式使用socket,叢集命名為cl。然後將運算所需的Boston資料分發到叢集上。之後使用clusterApply函式將計算任務分配到兩個核心上,其中第一個引數是叢集名稱,第二個引數表示每個核心分別計算5萬次,第三個引數是一個匿名函式,規定了核心的計算任務。兩個核心的計算結果分別存在results的list元素中。比較兩個核心的結果取較優的一個,最後關閉叢集。




install.packages('snow')library(snow)

system.time({  data(Boston)  cl <- makeCluster(2,type='SOCK')  clusterExport(cl,'Boston')  

results <- clusterApply(cl,rep(50000,2),function(nstart)

 kmean(Boston,4,nstart=nstart))  i <- sapply(results,function(result) result$tot.withinss)  

result <- results[[which.min(i)]]  stopCluster(cl)})

從結果觀察到本地雙核心組成的計算叢集只耗費了34秒即完成了運算。snow也可以用多臺計算機構建叢集,不過設定蠻複雜,筆者沒有折騰成功。總而言之,snow是一種高階包,它不關注底層的執行緒之間的通訊,而著重於任務的執行易於使用,相對R的單核心弱點是很好的補充。


相關推薦

R語言snow平行計算

This post was kindly contributed by 資料科學與R語言 - go there to comment and to read the full post.   在資料探勘和機器學習領域有許多的演算法需要強大的計算能力,如果對大資料進行運算操

R語言常用分類總結

arr const poisson string arm ova 處理 port 線性規劃 常用包: ——數據處理:lubridata ,plyr ,reshape2,stringr,formatR,mcmc; ——機器學習:nnet,rpart,tree,party,la

R語言常用匯總

ice hal 信號 行數據 包組 質量 spatial ike pat 轉載於:https://blog.csdn.net/sinat_26917383/article/details/50651464?locationNum=2&fps=1 一、一些函數

使用R語言ggplot2繪製pathway富集分析氣泡圖(Bubble圖):資料結構及程式碼

氣泡圖是在笛卡爾座標系同加入大小的引數所形成的可以表示三個變數關係的圖例。在對基因完成GO/KEGG分析後,使用氣泡圖可以直觀的展示pathway、pvalue、count之間的關係。下面為使用R語言ggplot2包繪製氣泡圖所需的資料結構及程式碼: 由於筆者常使用read.csv讀取

[學習分享] R語言擴充套件dplyr筆記 (轉載)

 2014年剛到, 就在 Feedly 訂閱裡看到 RStudio Blog 介紹 dplyr 包已釋出 (Introducing dplyr), 此包將原本 plyr 包中的 ddply() 等函式進一步分

R語言實戰 R語言安裝的安裝與使用

第一步首先獲取安裝包,下面以package–RODBC為例子 使用命令install.packages(“RODBC”) > install.packages("RODBC") trying URL 'https://cran.rstudio.com/bi

R語言安裝

第一步 開啟R。 可以是cmd或者是terminal,也可以是開啟的R-GUI或者是RStudio 總之,都會出現命令列輸出的操作 第二步 輸入命令: install.packages("ggplo

R語言基礎中的繪圖函式——快速用R探索資料

library(ggplot2) #R語言中的基礎包所帶的繪圖函式雖然用起來相對ggplot2包不是那麼友好 #但在剛拿到原始資料時進行快速探索還是很方便的 ####散點圖 #運用plot()函式,向函式傳入一個x向量和一個y向量 plot(mtcars$wt,mtcars$mpg) #等價於

[R語言] quantmod 獲取國內的股票資料

quantmod 包預設是訪問 yahoo finance 的資料,其中包括上證和深證的股票資料,還有港股資料。 上證程式碼是 ss,深證程式碼是 sz,港股程式碼是 hk 比如茅臺:6000519.ss,萬科 000002.sz,長江實業 0001.hk 在R的控制檯裡

R語言常用及介紹

https://www.rstudio.com/products/rpackages/ 2.shiny閃亮使得它非常容易構建互動式Web應用程式與R. Shiny有自動“反應”繫結輸入和輸出和廣泛的預構建的小部件。 https://cran.r-project.org/web/packages/shiny/i

R語言tm中的TermDocumentMatrix函式生成中文詞語矩陣含有\n

問題產生原因是新版本R的scan函式讀取utf8格式資料有時會新增\n,解決辦法是在執行TermDocumentMatrix前,呼叫Sys.setlocale(locale=”English”),之後再設定回去,Sys.setlocale(locale=”Chi

Bagging(R語言實現)—外錯誤率,多樣性測度

1.      Bagging Bagging即套袋法,其演算法過程如下: 從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓練樣本(在訓練集中,有些樣本可能被多次抽取到,而有些樣本可能一次都沒有被抽中)。共進

決策樹——CART——之R語言rpart

R是一種用於統計計算與作圖的開源軟體,同時也是一種程式語言,它廣泛應用於企業和學術界的資料分析領域,正在成為最通用的語言之一。由於近幾年資料探勘、大資料等概念的走紅,R也越來越多的被人關注。 一、環境準備 作業系統windows 下載安裝R 地址:http://mirror

R語言ggplot2之畫折線圖

引言 折線圖一般用於描述一維變數隨著某一連續變數變化的情況,連續變數通常為時間。換句話說,折線圖最適合描述時間序列資料的變化情況。當然隨著離散變數變化也是可以的,不過這個離散變數必須是有序的。 畫一條折線圖 一條基本的折線圖還是比較簡單的,只要在ggp

R語言 arules apriori()函式中文幫助文件(中英文對照)

apriori(arules) apriori()所屬R語言包:arules                                         Mining Associations with Apriori                          

R語言:leaflet做地圖展示

leaflet包用來做地圖簡直太方便了,地圖神器。 下面介紹兩個用leaflet做地圖展示的方法: 1、按等級展示(按照資料的某個值的變化來控制顏色變化) 程式碼如下: library(le

R語言安裝出現 Error in loadNamespace(j

大晚上,在合肥學習期間一個實驗室的發來QQ問我一個R語言畫圖問題,是要求柱狀圖上加上數值,試了下,並沒有用R解決,而是改用EXCEL了,逼格也不減啊。 言歸正傳, > library("ggpl

Multinomial Logit Model (MNL) 模型R語言nnetmultinom函式實現例項

最近做專案涉及到要使用multinomial logit model (MNL) 模型。看了一堆文獻講mnl, 但是沒有給什麼具體能上手的例項,就算有也是一筆帶過,打算找一些使用R 語言來實現mnl模型的例子,在模仿和實踐中慢慢理解。 Multinomial Logit M

R語言ggplot2之畫直方圖

引言 ggplot2包的作圖質量毋庸置疑,但是其作圖語法對新手來說還是有點難度,ggplot2:資料分析與圖形藝術這本書也介紹了ggplot2包的基本哲學思想和操作,個人感覺例子還不夠豐富,所以對該包的用法還是停留在半瓶醋的水平。某天,突然發現一本ggplot

CentOS下離線安裝R語言Forecast

1.下載Forecast包以及其依賴包,執行下面R指令碼; getPackages <- function(packs){