一文读懂机器学习库graphLab

文章目录

  • 目录
    • 什么是graphlab
    • 为什么使用graphlab?
    • 如何安装graphlab?
    • graphlab的简单使用。

目录

什么是graphlab

GraphLab 是由CMU(卡内基梅隆大学)的Select 实验室在2010 年提出的一个基于图像处理模型的开源图计算框架,框架使用C++语言开发实现。该框架是面向机器学习(ML)的流处理并行计算框架,可以运行在多处理机的单机系统、集群或是亚马逊的EC2 等多种环境下。框架的设计目标是,像MapReduce一样高度抽象,可以高效执行与机器学习相关的、具有稀疏的计算依赖特性的迭代性算法,并且保证计算过程中数据的高度一致性和高效的并行计算性能。该框架最初是为处理大规模机器学习任务而开发的,但是该框架也同样适用于许多数据挖掘方面的计算任务。在并行图计算领域,该框架在性能上高出很多其他并行计算框架(例如,MapReduce、Mahout)几个数量级。GraphLab 自成立以来就是一个发展很迅速的开源项目,其用户涉及的范围也相当广泛,全球有2 000 多个企业、机构使用GraphLab。

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

  • 数据依赖性很强。运算过程中参与计算的各个机器之间经常需要交换大量的数据。
  • 流处理复杂。主要表现在整个处理过程需要反复地迭代计算,数据处理分支很多,很难实现真正的并行。

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

为什么使用graphlab?

传统的机器学习库,如sklearn只能支持件数据直接读入到内存中,而且无法并行处理。而大数据框架mapreduce或者spakl学习起来比较复杂,于是就推出了graphlab机器学习框架

在这里插入图片描述

如何安装graphlab?

参考博客

运行命令:pip install --upgrade --no-cache-dir https://get.graphlab.com/GraphLab-Create/2.1/676285306@qq.com/8862-18BC-A187-AB2E-848C-05BC-6011-A1AD/GraphLab-Create-License.tar.gz
其中上面命令行中加粗的部分是子集去官网注册时的邮箱和一个许可证,需要进行替换

如果出现安装包以来问题,请将pip降至9.01即可。

graphlab的简单使用。

参考博客

GraphLab Create 是一款机器学习的函数库,其中的SFrame也是十分强大的数据管理工具。它允许直接从硬盘中读取数据,免于将数据全部加载到内存中。这就使得对于大数据的处理成为可能.这也是相对于scikit-learn的一个最大优点,我们知道,scikit-learn是只能读取内存中的数据.
2018-4-29:GraphLab Create一款机器学习中不错的函数库,集成了Jupyter Notebook这款好用的IDE,Notebook用于机器学习/数据统计/分析/建模等领域,Jupyter Notebook也是一款开源 的WEB application, 文件格式是:.ipynb结尾….
GraphLab Create下载地址https://turi.com/

一.在使用之前,我们必须得先引入这个包

import graphlab

这里写图片描述

读取数据集

这里写图片描述

这里写图片描述

Tips:假如我们想要查看前几行,或者末尾几行数据
我们使用

sf.head ##查看前几行
sf.tail ##查看尾几行
  • 1
  • 2

操纵列数据

这里写图片描述

上面是一些基本的操作,只要选中某一列就可以进行和类似数组的操作,大家可以去尝试一下

增加一条新的列
这里写图片描述

二.Graphlab Canvas的简单使用

简单来说,Canvas是一个图形化的工具

上面我们在sf在存储了个人信息的数据集

直接使用sf.show()

这里写图片描述

会自动在另一个标签页面打开

这里写图片描述

在里面可以各种点击尝试

我们希望就在当前notebook页面展示,不希望在另一个页面去展示,怎么操作呢?这里,只是需要重定向就好

这里写图片描述

下面,我们来解决一个场景问题

我们的人员信息表中有一个问题,就是国家列中,USA和United States代表的都是同一个国家美国,但是数据的表现形式不一样,如果,不进行数据的统一的话,那么,我们在进行构建机器学习模型的时候,可能就不会那么准确了,因为机器会把这两种形式看做是两个国家来处理

解决
为了让上面的数据集能够构建机器学习的模型,需要把数据集做一些改变
我们使用apply函数来进行数据的转换操作

这里写图片描述

这里写图片描述

这里写图片描述

好的,到这里Graphlab create常用操作就介绍完了,后面,我们会介绍一些实际的场景如何进行数据的处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Head First设计模式》第七章-适配器模式、外观模式

适配器模式 适配器模式是什么,你一定不难理解,因为现实中到处都是。比如说: 如果你需要在欧洲国家使用美国制造的笔记本电脑,你可能需要使用一个交流电的适配器…… 当你不想改变现有的代码,解决接口不适配问题&#…

《Head First设计模式》第八章笔记-模板方法模式

模板方法模式 之前所学习的模式都是围绕着封装进行,如对象创建、方法调用、复杂接口的封装等,这次的模板方法模式将深入封装算法块,好让子类可以在任何时候都将自己挂接进运算里。 模板方法定义:模板方法模式在一个方法中定义一…

机器学习基础-吴恩达-coursera-(第一周学习笔记)----Introduction and Linear Regression

课程网址:https://www.coursera.org/learn/machine-learning Week 1 —— Introduction and Linear Regression 目录 Week 1 Introduction and Linear Regression目录一 介绍1-1 机器学习概念及应用1-2 机器学习分类 二 单变量的线性回归2-1 假设函数hypothesis2…

常见8种机器学习算法总结

简介 机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM&a…

redis——数据结构(字典、链表、字符串)

1 字符串 redis并未使用传统的c语言字符串表示,它自己构建了一种简单的动态字符串抽象类型。 在redis里,c语言字符串只会作为字符串字面量出现,用在无需修改的地方。 当需要一个可以被修改的字符串时,redis就会使用自己实现的S…

Hotspot虚拟机的对象

创建 Step1:类加载检查 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 Step2:分…

redis——数据结构(整数集合,压缩列表)

4、整数集合 整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构, 可以保存 int16_t 、 int32_t 、 int64_t 的整数值, 并且保证集合中不会出现重复元素。 实现较为简单: typedef struct intset {// 编码方…

机器学习知识总结系列- 知识图谱(0-0)

文章目录目录机器学习知识图谱目录 本系列的文章只是根据个人的习惯进行总结,可能结构与一些书籍上不太一样,开始的内容比较简单,会随着后续的深入,不断丰富和更新图谱,同时也期待有相同兴趣的朋友一起给我留言一起丰富…

跳表介绍和实现

想慢慢的给大家自然的引入跳表。 想想,我们 1)在有序数列里搜索一个数 2)或者把一个数插入到正确的位置 都怎么做? 很简单吧 对于第一个操作,我们可以一个一个比较,在数组中我们可以二分,这…

机器学习知识总结系列- 基本概念(1-0)

文章目录目录1. 机器学习的定义2. 机器学习的分类2.1根据是否在人类监督下进行训练监督学习非监督学习半监督学习强化学习2.2根据是否可以动态渐进的学习在线学习批量学习2.3根据是否在训练数据过程中进行模式识别实例学习基于模型的学习3. 机器学习中的一些常见名词4. 机器学习…

剑指offer(刷题21-30)--c++,Python版本

文章目录目录第 21题:解题思路:代码实现:cpython第22 题:解题思路:代码实现:cpython第23 题:解题思路:代码实现:cpython第24 题:解题思路:代码实现…

剑指offer(刷题41-50)--c++,Python版本

文章目录目录第41题:解题思路:代码实现:cpython第42题:解题思路:代码实现:cpython第43题:解题思路:代码实现:cpython第44题:解题思路:代码实现&am…

redis——持久化

因为redis是内存数据库,他把数据都存在内存里,所以要想办法实现持久化功能。 RDB RDB持久化可以手动执行,也可以配置定期执行,可以把某个时间的数据状态保存到RDB文件中,反之,我们可以用RDB文件还原数据库…

剑指offer(刷题51-60)--c++,Python版本

文章目录目录第51题:解题思路:代码实现:cpython第52题:解题思路:代码实现:cpython第53题:解题思路:代码实现:cpython第54题:解题思路:代码实现&am…

2017第一届河北省大学生程序设计竞赛题解

超级密码 小明今年9岁了,最近迷上了设计密码!今天,他又设计了一套他认为很复杂的密码,并且称之为“超级密码”. 说实话,这套所谓的“超级密码”其实并不难:对于一个给定的字符串,你只要提取其中…

大数的四则运算(加法、减法、乘法、除法)

大数的四则运算(加法、减法、乘法、除法) 前言: 在计算机中数字表示的范围是有限制的,比如我们熟知的 int、float、double 等数据类型所能表示的范围都是有限的,如果我们要对位数达到几十位、几百位、上千位的大整数进…

随机过程1

随机过程1概述1.参考书目2.主要内容3.概率论--基本概念回顾3.1对“不确定性”的认识3.2 应对“不确定性”应该怎么做3.3随机变量(Random Variable)3.4分布函数(Distribution Function)3.5概率密度(Density)…

数组基操三连(4)

题目一 给定一个长度为N的整型数组arr,其中有N个互不相等的自然数1~N 请实现arr的排序 但是不要把下标0~N-1位置上的数值通过直接赋值的方式替换成1~N。 要求:时间复杂度为O(N),额外空间复杂度为O(1)。 思路:从左向右检查&…