机器学习框架调研
基础库
- 1、Numpy:
Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,特别是数组接口。很多框架都是基于此库建立的,如:tensflow - 2、SciPy:
Scipy是致力于科学计算中常见问题的各个工具箱(基于Numpy),类似于Matlab。Scipy包含了优化器、线性代数、积分、插值、快速傅立叶变换、信号和图像处理、统计等子模块。 - 3、Pandas:
pandas主要用于数据分析(基于Numpy),是一个最具有统计意味的工具包,某些方面优于R软件。它提供了各种高级的工具用于进行数据分析,它可以用一两行代码就能实现复杂的数据操作。Pandas有许多内置的方法用于分组统计、合并数据、数据筛选、以及时间序列操作。所有的这些操作都有出色的性能表现。因此,使用Pandas通常用于数据挖掘任务。 - 4、Matplotlib:
最著名的绘图系统,很多其他的绘图例如seaborn(针对pandas绘图而来)也是由其封装而成。创世人John Hunter于2012年离世。Matplotlib和R的ggplot,lattice绘图相比起来,操作起来比较复杂。
常见机器学习库
-
1,Scikits_Learn:
Scikits-learn,又称为sk-learn,是一个基于Numpy与SciPy的Python库。Sk-learn被认为是用于处理复杂数据的最优秀的机器学习库之一。它包含了大量用于实现传统机器学习和数据挖掘任务的算法,比如数据降维、分类、回归、聚类、以及模型选择等。
随着时间的发展,sk-learn不断演进。其中包括它加入了交叉验证功能,提供了使用多个衡量指标的能力。许多的训练方法都得到了一定的改进,如逻辑回归、近邻算法(KNN)等。 -
2,LightGBM:
Gradient Boosting是最好和最受欢迎的机器学习库之一,它通过使用重新定义的基本模型和决策树来帮助开发人员构建新算法。 因此,有专门的库被设计用于快速有效地实现该方法。这些库包括LightGBM, XGBoost, 和CatBoost。这些库互为竞争对手,同样使用了几乎相同的思路来解决一个共同问题。这些库都提供了高度可扩展,优化和快速的梯度增强实现,使其在机器学习开发人员中很受欢迎。 因为大多数机器学习开发人员通过使用这些算法赢得了机器学习竞赛。
常见深度学习库
-
1,tensorflow:
Tensorflow把神经网络运算抽象成运算图(Graph),一个运算图中包含了大量的张量(Tensor)运算(而张量实际上就是N维数据的集合)。神经网络运算的本质是通过张量运算来拟合输入张量与输出张量之间的映射关系。
并行运算是Tensorflow的主要优势之一。也就是说你可以通过代码设置来分配你的CPU、GPU计算资源来实现并行化的图运算。
Tensorflow使用了类似XLA(Accelerated Linear Algebra/加速线性代数)等技术对运算过程进行过优化,以保证其能够灵活地调用计算资源的同时保持高效的运算速度。
Tensorflow框架中所有的工具库都是用C或者C++来编写,但它提供了用Python来编写的接口封装。事实上,你用Python编写的神经网络模型最终会调用基于C和C++编写的Tensorflow内核来执行运算。 -
2,Keras:
Keras本质上是对Tensorflow、Theano等基础框架作进一步的封装,以提供统一的API来简化神经网络的构建与训练。如果你打算以Tensorflow作为后端基础框架,则必须遵循以下架构图:
keras提供了非常简明的机制来表达神经网络结构,也提供了许多工具用于神经网络模型的编译、数据的处理、以及网络结构的可视化等等。
再有,Keras提供了许多预处理的数据集,比如MNIST,和预训练的模型,比如VGG、Inception、 ResNet等等。 -
3,Theano:
Theano 的工作原理与 Tensorflow 相似,但要比Tensorflow 低效。因此它不适用于生产环境。 -
4,PyTorch:
PyTorch是最大的深度学习库,允许开发人员通过加速GPU执行张量计算,创建动态计算图,并自动计算梯度。 除此之外,PyTorch还提供丰富的API,用于解决与神经网络相关的应用问题。
这个深度学习库基于Torch,这是一个用C语言实现的开源机器库,以Lua语言作了封装。与Tensorflow的区别在于Tensorflow用的是“静态计算图”的概念,而PyTorch用的是“动态计算图”的概念。最直观的感受是,用PyTorch来编写的神经网络模型代码更像常见的Python代码。PyTorch是在2017年推出的,自成立以来,该库越来越受欢迎并吸引了越来越多的机器学习开发人员。 -
5,caffe
机器学习三大框架对比
https://www.cnblogs.com/fengting/p/9412266.html
深度学习的三个框架caffe、tensorflow和keras,如果只是需要使用传统的机器学习基础算法使用scikit-learning和spark MLlib则更为合适。