机器学习-Spark MLlib

    MLlib是一些常用的机器学习算法和库在Spark平台上的实现。MLlib是AMPLab的在研机器学习项目MLBase的底层组件。MLBase是一个机器学习平台,MLI是一个接口层,提供很多结构,MLlib是底层算法实现层。

    MLlib中包含分类与回归、聚类、协同过滤、数据降维组件以及底层的优化库。

MLlib组件图

通过这幅图读者可以对MLlib的整体组件和依赖库有一个宏观的把握。

下面对图中读者可能不太熟悉的底层组件进行简要介绍:

BLAS/LAPACK层:LAPACK是用Fortran编写的算法库,顾名思义,Linear Algebra PACKage,是为了解决通用的线性代数问题的。另外必须要提的算法包是BLAS(Basic Linear Algebra Subprograms),其实LAPACK底层是使用了BLAS库的。不少计算机厂商都提供了针对不同处理器进行了优化的BLAS/LAPACK算法包。

Netlib-java(官网为:https://github.com/fommil/netlib-java/)是一个对底层BLAS, LAPACK封装的Java接口层。

Breeze(官网为:https://github.com/scalanlp/breeze)是一个Scala写的数值处理库,提供向量,矩阵运算等API。

库依赖:

MLlib底层使用到了Scala书写的线性代数库Breeze,Breeze底层依赖netlib-java库。netlib-java底层依赖原生的Fortranroutines。所以,当用户使用时需要在节点上预先安装gfortranruntime library 

(下载地址:https://github.com/mikiobraun/jblas/wiki/Missing-Libraries)。由于许可证(license)问题,官方的MLlib依赖集中没有引入netlib-java原生库的依赖。如果运行时环境没有可用原生库,用户将会看到警告信息。如果程序中需要使用netlib-java的库,用户需要在项目中引入com.github.fommil.netlib:all:1.1.2的依赖或者参照指南

(网址为:https://github.com/fommil/netlib-java/blob/master/README.md#machine-optimised-system-libraries)build用户自己的项目。如果用户需要使用python接口,则需要1.4或者更高版本的NumPy。

(注意:MLlib源码中注释有Experimental/DeveloperApi的API在未来的发布版本中可能会进行调整和改变,官方会在不同版本发布时提供迁移指南。)


最新版本的MLlib算法与功能支持:

友情推荐:ABC技术研习社

为技术人打造的专属A(AI),B(Big Data),C(Cloud)技术公众号和技术交流社群。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值