Py之GraphLab:graphlab庫的簡介、安裝、使用方法之詳細(xì)攻略
graphlab庫的簡介
? ? ? ? GraphLab 是由CMU(卡內(nèi)基梅隆大學(xué))的Select 實驗室在2010 年提出的一個基于圖像處理模型的開源圖計算框架,框架使用C++語言開發(fā)實現(xiàn)。該框架是面向機(jī)器學(xué)習(xí)(ML)的流處理并行計算框架,可以運行在多處理機(jī)的單機(jī)系統(tǒng)、集群或是亞馬遜的EC2 等多種環(huán)境下。框架的設(shè)計目標(biāo)是,像MapReduce一樣高度抽象,可以高效執(zhí)行與機(jī)器學(xué)習(xí)相關(guān)的、具有稀疏的計算依賴特性的迭代性算法,并且保證計算過程中數(shù)據(jù)的高度一致性和高效的并行計算性能。
? ? ? ? 為了實現(xiàn)機(jī)器學(xué)習(xí)算法通用性的目標(biāo),CMU 的Select 實驗室開發(fā)出了GraphLab。該框架最初是為處理大規(guī)模機(jī)器學(xué)習(xí)任務(wù)而開發(fā)的,但是該框架也同樣適用于許多數(shù)據(jù)挖掘方面的計算任務(wù)。在并行圖計算領(lǐng)域,該框架在性能上高出很多其他并行計算框架(例如,MapReduce、Mahout)幾個數(shù)量級。GraphLab 自成立以來就是一個發(fā)展很迅速的開源項目,其用戶涉及的范圍也相當(dāng)廣泛,全球有2 000 多個企業(yè)、機(jī)構(gòu)使用GraphLab。
官網(wǎng)介紹:https://reviews./p/graphlab-create/
1、GraphLab是什么
- GraphLab Create是Turi為開發(fā)者和數(shù)據(jù)科學(xué)家創(chuàng)建的機(jī)器學(xué)習(xí)平臺。Apple子公司為用戶提供算法,使他們能夠用Python設(shè)計智能應(yīng)用程序。
- 使用GraphLab Create,用戶還可以訪問旨在簡單有效地開發(fā)應(yīng)用程序的工具包。這使得他們可以將其應(yīng)用程序特有的關(guān)鍵特性(如自動化)整合到機(jī)器學(xué)習(xí)模型中。
- GraphLab Create還提供了高級的機(jī)器學(xué)習(xí)應(yīng)用程序元素。這些技術(shù)包括深度學(xué)習(xí)、異常檢測、文本分析、分類、模型優(yōu)化等,使開發(fā)人員能夠設(shè)計最先進(jìn)的機(jī)器學(xué)習(xí)程序。
2、GraphLab的五大特點
- 可續(xù)訂:GraphLab Create是免費的,可用于學(xué)術(shù)用途。那些希望安裝該工具的人可以注冊并獲得為期一年的可續(xù)訂訂閱。這使用戶可以繼續(xù)學(xué)習(xí)AI的復(fù)雜性,尤其是AI的應(yīng)用程序,而無需花很多錢購買許可證。
- 相同的代碼:GraphLab Create使用戶可以在其臺式計算機(jī)或分布式系統(tǒng)上運行相同的代碼。該平臺通過Hadoop Yarn或EC2集群來實現(xiàn)此目的。這使用戶可以在不同的系統(tǒng)上測試其代碼的有效性,從而確保它們在一個系統(tǒng)中和另一個系統(tǒng)中都能正常工作。
- 靈活的API:GraphLab Create提供有關(guān)使用其API的文檔。這使開發(fā)人員可以查看API使用示例,并通過深入的描述(使他們專注于機(jī)器學(xué)習(xí)任務(wù))更深入地了解代碼。
- 簡化開發(fā):GraphLab Create為用戶提供了面向應(yīng)用程序的工具包,可幫助簡化開發(fā)過程。這樣,機(jī)器學(xué)習(xí)模型就注入了其應(yīng)用程序特有的各種功能。
- 進(jìn)階元素:用戶可以通過GraphLab Create訪問高級機(jī)器學(xué)習(xí)元素。它們的設(shè)計具有可訪問性,可伸縮性和可擴(kuò)展性,以鼓勵開發(fā)人員和數(shù)據(jù)科學(xué)家設(shè)計適合自己特定需求的智能和創(chuàng)新機(jī)器學(xué)習(xí)應(yīng)用程序。
3、為什么需要GraphLab
? ? ? ? GraphLab 的設(shè)計目標(biāo)是在集群或者多處理機(jī)的單機(jī)系統(tǒng)上實現(xiàn)大規(guī)模的機(jī)器學(xué)習(xí)算法。一般的機(jī)器學(xué)習(xí)類算法有以下兩個特性。
- 數(shù)據(jù)依賴性很強(qiáng):運算過程中參與計算的各個機(jī)器之間經(jīng)常需要交換大量的數(shù)據(jù)。
- 流處理復(fù)雜:主要表現(xiàn)在整個處理過程需要反復(fù)地迭代計算,數(shù)據(jù)處理分支很多,很難實現(xiàn)真正的并行。
? ? ? ? 在GraphLab 出現(xiàn)之前,針對這些機(jī)器學(xué)習(xí)的算法,普遍的編程方法是采用MPI 和PThread 這些已有的底層開發(fā)庫來完成這類計算問題。采用這種編程模型的開發(fā)應(yīng)用,針對具體的應(yīng)用,需要開發(fā)者實現(xiàn)相應(yīng)的算法來完成計算過程中集群計算節(jié)點之間主機(jī)通信和數(shù)據(jù)同步等底層操作。這種開發(fā)方法的優(yōu)勢在于,可以針對具體的應(yīng)用對代碼進(jìn)行深度的優(yōu)化,以達(dá)到很高的性能。但是對于不同的應(yīng)用,需要重寫代碼實現(xiàn)底層的數(shù)據(jù)分配、數(shù)據(jù)通信等細(xì)節(jié),這就導(dǎo)致了代碼重用率很低,可拓展性差,對編程人員要求高。這種編程模型顯然不適合當(dāng)前敏捷的互聯(lián)網(wǎng)開發(fā)。而當(dāng)前被廣泛使用的MapReduce 計算框架,在并行執(zhí)行多任務(wù)的時候,要求各個任務(wù)之間相互獨立,任務(wù)執(zhí)行期間不需要相互之間進(jìn)行數(shù)據(jù)通信,所以MapReduce 不適合數(shù)據(jù)依賴性強(qiáng)的任務(wù),而且MapReduce 并行計算模型也不能高效表達(dá)迭代型算法。這種計算模型在處理如日志分析、數(shù)據(jù)統(tǒng)計等數(shù)據(jù)獨立性的任務(wù)時具有明顯的優(yōu)勢,但是在機(jī)器學(xué)習(xí)領(lǐng)域,MapReduce 框架并不能很好地滿足機(jī)器學(xué)習(xí)計算任務(wù)。
4、?GraphLab有什么優(yōu)點
? ? ? ? GraphLab 作為一個基于圖處理的并行計算框架,能夠高效地執(zhí)行機(jī)器學(xué)習(xí)相關(guān)的數(shù)據(jù)依賴性強(qiáng),迭代型算法,其設(shè)計具有如下特點和優(yōu)點。
- 統(tǒng)一的API 接口:對于多核處理器和分布式環(huán)境,采用統(tǒng)一的API 接口,一次編寫程序即可高效地運行在共享內(nèi)存環(huán)境或者分布式集群上。
- 高性能:優(yōu)化C++執(zhí)行引擎,在大量多線程操作和同步I/O 操作之間進(jìn)行了很好的平衡。
- 可伸縮性強(qiáng):GraphLab 能夠智能地選擇存儲和計算的節(jié)點,原因是GraphLab 對于數(shù)據(jù)的存儲與計算都使用了精心設(shè)計的優(yōu)良算法。
- 集成HDFS:GraphLab 內(nèi)置對HDFS 的支持,GraphLab 能夠直接從HDFS中讀數(shù)據(jù)或者將計算結(jié)果數(shù)據(jù)直接寫入到HDFS 中。
- 功能強(qiáng)大的機(jī)器學(xué)習(xí)類工具集:GraphLab 在自身提供的API 接口之上實現(xiàn)了大量的開箱即用的工具集。
5、比較GraphLab和scikit-learn——GraphLab Create和scikit-learn哪個更好
推薦文章:https://comparisons./graphlab-create-vs-scikit-learn
? ? ? ? 為您的公司找到完美的人工智能軟件對于提高公司的效率至關(guān)重要。在我們的平臺上,很容易評估眾多的解決方案,以確定哪一個是滿足您需求的理想軟件。在這里,您可以匹配GraphLab Create和scikit-learn,并查看它們的總分?jǐn)?shù)(分別為8.3和8.9)和用戶滿意度(分別為100%和100%)。還可以瀏覽成本、條件、計劃、功能、工具等的詳細(xì)信息,并找出哪些軟件為您的企業(yè)提供了更多的優(yōu)勢。一般來說,選擇那些讓你可以擴(kuò)展功能和定價的軟件,以補(bǔ)充你的公司的增長或缺乏它。如果你時間緊迫,或者需要我們的專家提供人工智能軟件建議,你可能想看看今年的最佳選擇:Salesforce Einstein、云機(jī)器學(xué)習(xí)引擎、Azure機(jī)器學(xué)習(xí)工作室。
? ? ? ? 當(dāng)你測試不同的人工智能軟件服務(wù)時,你不應(yīng)該只研究它們的功能列表和提供的定價方案。記住,解決方案應(yīng)該與你的需求和業(yè)務(wù)相匹配,所以他們提供的服務(wù)越靈活越好。了解GraphLab Create和scikit-learn支持哪些平臺,并確保您將獲得公司中使用的任何設(shè)備的移動支持。您還應(yīng)該了解支持哪些語言和國家,因為這可能是許多公司的關(guān)鍵因素。
graphlab庫的安裝
pip2 install --upgrade --no-cache-dir https://get./GraphLab-Create/2.1/your registered email address here/your product key here/GraphLab-Create-License.tar.gz -i https://pypi.tuna./simple
pip install GraphLab-Create
您可以直接從Github存儲庫下載GraphLab PowerGraph。如果你沒有g(shù)it的話,Github還提供了倉庫的zip下載。
git clone https://github.com/graphlab-code/graphlab.git
cd graphlab
graphlab庫的使用方法
1、基礎(chǔ)用法
import graphlab
graphlab.SFrame('test.csv')
graphlab.SFrame('file_name') #也可導(dǎo)入Graphlab格式的文件
#繪圖
graphlab.canvas.set_target('ipynb')
sales.show(view="Scatter Plot", x="sqft_living", y="price")
#切分?jǐn)?shù)據(jù)集
train_data,test_data = sales.random_split(.8,seed=0)
#載入模型
sqft_model = graphlab.linear_regression.create(train_data, target='price', features=['sqft_living'],validation_set=None)
sqft_model.predict(house2)
#或者
sentiment_model = graphlab.logistic_classifier.create(train_data,
target='sentiment',
features=['word_count'],
validation_set=test_data)
giraffe_reviews['predicted_sentiment'] = sentiment_model.predict(giraffe_reviews, output_type='probability')
#模型評估
sqft_model.evaluate(test_data)
sqft_model.get('coefficients')
sqft_model['coefficients']