Py之GraphLab:graphlab库的简介、安装、使用方法之详细攻略

graphlab库的简介


       GraphLab 是由CMU(卡内基梅隆大学)的Select 实验室在2010 年提出的一个基于图像处理模型的开源图计算框架,框架使用C++语言开发实现。该框架是面向机器学习(ML)的流处理并行计算框架,可以运行在多处理机的单机系统、集群或是亚马逊的EC2 等多种环境下。框架的设计目标是,像MapReduce一样高度抽象,可以高效执行与机器学习相关的、具有稀疏的计算依赖特性的迭代性算法,并且保证计算过程中数据的高度一致性和高效的并行计算性能。

       为了实现机器学习算法通用性的目标,CMU 的Select 实验室开发出了GraphLab。该框架最初是为处理大规模机器学习任务而开发的,但是该框架也同样适用于许多数据挖掘方面的计算任务。在并行图计算领域,该框架在性能上高出很多其他并行计算框架(例如,MapReduce、Mahout)几个数量级。GraphLab 自成立以来就是一个发展很迅速的开源项目,其用户涉及的范围也相当广泛,全球有2 000 多个企业、机构使用GraphLab。


官网介绍:https://reviews.financesonline.com/p/graphlab-create/




1、GraphLab是什么


GraphLab Create是Turi为开发者和数据科学家创建的机器学习平台。Apple子公司为用户提供算法,使他们能够用Python设计智能应用程序。

使用GraphLab Create,用户还可以访问旨在简单有效地开发应用程序的工具包。这使得他们可以将其应用程序特有的关键特性(如自动化)整合到机器学习模型中。

GraphLab Create还提供了高级的机器学习应用程序元素。这些技术包括深度学习、异常检测、文本分析、分类、模型优化等,使开发人员能够设计最先进的机器学习程序。



2、GraphLab的五大特点


可续订:GraphLab Create是免费的,可用于学术用途。那些希望安装该工具的人可以注册并获得为期一年的可续订订阅。这使用户可以继续学习AI的复杂性,尤其是AI的应用程序,而无需花很多钱购买许可证。

相同的代码:GraphLab Create使用户可以在其台式计算机或分布式系统上运行相同的代码。该平台通过Hadoop Yarn或EC2集群来实现此目的。这使用户可以在不同的系统上测试其代码的有效性,从而确保它们在一个系统中和另一个系统中都能正常工作。

灵活的API:GraphLab Create提供有关使用其API的文档。这使开发人员可以查看API使用示例,并通过深入的描述(使他们专注于机器学习任务)更深入地了解代码。

简化开发:GraphLab Create为用户提供了面向应用程序的工具包,可帮助简化开发过程。这样,机器学习模型就注入了其应用程序特有的各种功能。

进阶元素:用户可以通过GraphLab Create访问高级机器学习元素。它们的设计具有可访问性,可伸缩性和可扩展性,以鼓励开发人员和数据科学家设计适合自己特定需求的智能和创新机器学习应用程序。



3、为什么需要GraphLab


       GraphLab 的设计目标是在集群或者多处理机的单机系统上实现大规模的机器学习算法。一般的机器学习类算法有以下两个特性。


数据依赖性很强:运算过程中参与计算的各个机器之间经常需要交换大量的数据。

流处理复杂:主要表现在整个处理过程需要反复地迭代计算,数据处理分支很多,很难实现真正的并行。

       在GraphLab 出现之前,针对这些机器学习的算法,普遍的编程方法是采用MPI 和PThread 这些已有的底层开发库来完成这类计算问题。采用这种编程模型的开发应用,针对具体的应用,需要开发者实现相应的算法来完成计算过程中集群计算节点之间主机通信和数据同步等底层操作。这种开发方法的优势在于,可以针对具体的应用对代码进行深度的优化,以达到很高的性能。但是对于不同的应用,需要重写代码实现底层的数据分配、数据通信等细节,这就导致了代码重用率很低,可拓展性差,对编程人员要求高。这种编程模型显然不适合当前敏捷的互联网开发。而当前被广泛使用的MapReduce 计算框架,在并行执行多任务的时候,要求各个任务之间相互独立,任务执行期间不需要相互之间进行数据通信,所以MapReduce 不适合数据依赖性强的任务,而且MapReduce 并行计算模型也不能高效表达迭代型算法。这种计算模型在处理如日志分析、数据统计等数据独立性的任务时具有明显的优势,但是在机器学习领域,MapReduce 框架并不能很好地满足机器学习计算任务。



4、 GraphLab有什么优点


       GraphLab 作为一个基于图处理的并行计算框架,能够高效地执行机器学习相关的数据依赖性强,迭代型算法,其设计具有如下特点和优点。


统一的API 接口:对于多核处理器和分布式环境,采用统一的API 接口,一次编写程序即可高效地运行在共享内存环境或者分布式集群上。

高性能:优化C++执行引擎,在大量多线程操作和同步I/O 操作之间进行了很好的平衡。

可伸缩性强:GraphLab 能够智能地选择存储和计算的节点,原因是GraphLab 对于数据的存储与计算都使用了精心设计的优良算法。

集成HDFS:GraphLab 内置对HDFS 的支持,GraphLab 能够直接从HDFS中读数据或者将计算结果数据直接写入到HDFS 中。

功能强大的机器学习类工具集:GraphLab 在自身提供的API 接口之上实现了大量的开箱即用的工具集。


5、比较GraphLab和scikit-learn——GraphLab Create和scikit-learn哪个更好


推荐文章:https://comparisons.financesonline.com/graphlab-create-vs-scikit-learn


       为您的公司找到完美的人工智能软件对于提高公司的效率至关重要。在我们的平台上,很容易评估众多的解决方案,以确定哪一个是满足您需求的理想软件。在这里,您可以匹配GraphLab Create和scikit-learn,并查看它们的总分数(分别为8.3和8.9)和用户满意度(分别为100%和100%)。还可以浏览成本、条件、计划、功能、工具等的详细信息,并找出哪些软件为您的企业提供了更多的优势。一般来说,选择那些让你可以扩展功能和定价的软件,以补充你的公司的增长或缺乏它。如果你时间紧迫,或者需要我们的专家提供人工智能软件建议,你可能想看看今年的最佳选择:Salesforce Einstein、云机器学习引擎、Azure机器学习工作室。

       当你测试不同的人工智能软件服务时,你不应该只研究它们的功能列表和提供的定价方案。记住,解决方案应该与你的需求和业务相匹配,所以他们提供的服务越灵活越好。了解GraphLab Create和scikit-learn支持哪些平台,并确保您将获得公司中使用的任何设备的移动支持。您还应该了解支持哪些语言和国家,因为这可能是许多公司的关键因素。





graphlab库的安装


pip2 install --upgrade --no-cache-dir https://get.graphlab.com/GraphLab-Create/2.1/your registered email address here/your product key here/GraphLab-Create-License.tar.gz -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install GraphLab-Create


您可以直接从Github存储库下载GraphLab PowerGraph。如果你没有git的话,Github还提供了仓库的zip下载。


git clone https://github.com/graphlab-code/graphlab.git

cd graphlab



graphlab库的使用方法


1、基础用法


import graphlab

graphlab.SFrame('test.csv')

graphlab.SFrame('file_name')       #也可导入Graphlab格式的文件

#绘图

graphlab.canvas.set_target('ipynb')

sales.show(view="Scatter Plot", x="sqft_living", y="price")

#切分数据集

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']




上一篇:window.location或window.open如何指定target?


下一篇:scala 两个map合并,key相同时value相加