如何写python扩展包 python常用扩展包_如何写python扩展包


下载机器学习的package,安装使用

Data Science 对于机器学习算法的预测能力重度依赖。 Python对于使用机器学习的包提供了一个试验场,提供有效且有趣的各种包。机器学习库让python更加实用,本文列举十种常见机器学习包及其优缺点。

使用Python作为框架的好处是可以很容易的建立Machine Learning的模型(Ref2),而不需要过深了解背后的算法。

Python libraries使用写好的代码,直接内嵌入自己的代码,提高自己的代码的效率,同时提供自己代码的重复使用率。

但是作为一名ML模型开发者,必要了解ML模型里的算法是什么,以此预判模型会产生的结果,及如何评估。

到此为止,我们已经了解Python 框架和Python libraries的不同。接下来是Python常用的ML的包。

10 Matplotlib


如何写python扩展包 python常用扩展包_C++包扩展_02


Matplolib(Ref3)是交互式的跨平台library用于2-D绘图。

优点:

  • 高支持度对于Python,IPython shells, Python scripts, Jupyter Notebook, web application servers 和 GUI toolkits (GTK+, Tkinter, Qt, and wxPython).
  • 可以选择类似Matlab的界面
  • 面向对象的界面可以控制轴属性,字体属性,线类型等
  • 与多个图形后端及操作系统兼容
  • 经常合并到其他库中,比如pandas

缺点:

  • 两种界面像matlab和面向对象的界面,对于新手开发者来说,很容易搞混
  • Matplotlib是可视化库,不可以直接做数据分析,需要和数据分析库一起使用, 比如Pandas。

9 Natural Language Toolkit (NLTK)

NLTK(Ref4)用于在Python中开发符号和统计自然语言处理(NLP)的框架和库套件。 它是Python中NLP的标准工具。

优点:

  • Python库包含图形示例以及相关数据。
  • 有一本书和对应使用手册,初学者容易上手。
  • 提供对不同ML操作的支持,例如分类,解析和标记化功能等。
  • 充当原型和构建研究系统的平台。
  • 与几种语言兼容。

缺点:

  • 需要先了解字符串处理的基础知识,才可以使用NLTK框架。不过,有文档支撑可以协助进行此操作。
  • NLTK通过将文本拆分为句子来进行句子标记化。 这会对性能产生负面影响。

8 Pandas


如何写python扩展包 python常用扩展包_如何写python扩展包_03


Pandas(Ref5)是一个Python库,用于为Python编程语言提供高性能,易于使用的数据结构和数据分析工具。

优点:

  • 富有表现力,快速且灵活的数据结构。
  • 支持聚合,串联,迭代,重新索引和可视化操作。
  • 与其他Python库结合使用非常灵活。
  • 使用最少的命令进行直观的数据操作。
  • 支持广泛的商业和学术领域。
  • 针对性能进行了优化。

缺点:

  • 它基于matplotlib构建,这意味着新手程序员必须熟悉这两个库,才能知道哪个库最适合解决他们的问题。
  • 不太适合n维数组和统计建模。需要改用NumP,SciPy或SciKit Learn。

7 Scikit-Learn


如何写python扩展包 python常用扩展包_如何写python扩展包_04


Python库Scikit-Learn(Ref6)是建立在matplotlib,NumPy和SciPy库之上的。 该Python ML库具有用于数据分析和数据挖掘任务的多个工具。

优点:

  • 简单,易用,有效。
  • 在飞速发展中,不断得到完善。
  • 广泛的算法,包括聚类,因子分析,主成分分析等。
  • 可以从图像和文本中提取数据。
  • 可用于NLP。

缺点:

  • 该库特别适合于有监督的学习,但不适用于深度学习等无监督的学习应用程序。

6 Seaborn


如何写python扩展包 python常用扩展包_C++包扩展_05


Seaborn(Ref7)是用于在Python中制作统计图的库。 它基于matplotlib构建,并与pandas数据结构集成。

优点:

  • 图比matplotlib更有吸引力。
  • 有内置图, 而matplotlib没有。
  • 使用更少的代码来可视化图形。
  • 与Pandas的顺利集成:结合了数据可视化和分析功能!

缺点:

  • 由于Seaborn是基于matplotlib构建的,因此需要先学matplotlib才能使用Seaborn。
  • Seaborn依赖默认主题,因此可定制性不如matplotlib。

5 Numpy


如何写python扩展包 python常用扩展包_如何写python扩展包_06


NumPy(Ref8)向Python添加了多维数组和矩阵处理,以及大量的高级数学函数。 它通常用于科学计算,因此是用于机器学习的最常用的Python软件包之一。

优点:

  • 直观,互动性强。
  • 提供傅里叶变换,随机数功能和其他工具来集成计算语言,例如C / C ++和Fortran。
  • 多功能性–其他ML库(例如scikit-learn和TensorFlow)使用NumPy数组作为输入; 像Pandas这样的数据处理程序包在后台使用NumPy。
  • 具有出色的开源社区支持/贡献。
  • 简化复杂的数学实现。

缺点:

过大-如果可以使用Python列表,不要使用Numpy。

4 Keras


如何写python扩展包 python常用扩展包_C++包扩展_07


Keras(Ref9)是非常流行的Python ML,它提供了可以在TensorFlow,CNTK或Theano之上运行的高级神经网络API。

优点:

  • 非常适合进行实验和快速制作原型。
  • 可用性强。
  • 对于神经网络容易使用。
  • 非常适合在建模和可视化中使用。

缺点:

  • 慢,因为它需要先创建计算图才能执行操作。

3 Scipy


如何写python扩展包 python常用扩展包_C++包扩展_08


SciPy(Ref10)是一个非常流行的ML库,具有用于优化,线性代数,积分和统计的不同模块。

优点:

  • 非常适合图像处理。
  • 提供简单的数学运算处理。
  • 提供有效的数值例程,包括数值积分和优化。
  • 支持信号处理。

缺点:

  • 有一个堆栈stack和一个库library都命名为SciPy。 该库是堆栈的一部分。 对于初学者可能会感到困惑。

2 Pythorch


如何写python扩展包 python常用扩展包_如何写python扩展包_09


PyTorch(Ref11)是基于Torch的流行的Python ML库,它是用C实现并包装在Lua中的ML库。它最初是由Facebook开发的,但现在已被Twitter,Salesforce和许多其他主要组织和企业所使用。

优点:

  • 包含支持计算机视觉,NLP,深度学习和许多其他ML程序的工具和库。
  • 开发人员可以使用GPU加速在Tensor上执行计算。
  • 帮助创建计算图。
  • 建模过程简单透明。
  • 默认的“按运行定义”模式更像传统编程。
  • 使用常见的调试工具,例如pdb,ipdb或PyCharm调试器。
  • 使用许多易于组合的预训练模型和模块化零件。

缺点:

  • 由于PyTorch相对较新,因此可以找到的在线资源相对较少。尽管直观,但这使从头开始学习变得更加困难。
  • 与可扩展性更高的Google TensorFlow相比,PyTorch尚未被广泛认为可以投入生产。

1 TensorFlow


如何写python扩展包 python常用扩展包_如何写python扩展包_10


TensorFlow (Ref12)最初由Google开发,是一个使用数据流图进行高性能数值计算的开源库。

实际上,它实际上是一个用于创建和运行涉及Tensor(Ref13)计算的框架。 TensorFlow的主要应用是在神经网络中,尤其是在广泛使用的深度学习中。 这使其成为用于机器学习的最重要的Python软件包之一。

优点:

  • 支持强化学习和其他算法。
  • 提供计算图抽象。
  • 提供了一个非常大的社区。
  • 提供TensorBoard (Ref14),这是用于直接在浏览器中可视化ML模型的工具。
  • 生产准备就绪。
  • 可以部署在多个CPU和GPU上。

缺点:

  • 与其他使用CPU / GPU的框架相比,运行速度明显慢。
  • 与PyTorch相比,比较难上手。
  • 计算图可能很慢。
  • 不提供商业支持。
  • 不可工具化。

总结来说,

本文分析了

  1. 框架和库之间的区别
  2. 十大常用机器学习包的优缺点

接下来,可以尝试做好准备来探索和试验未来编程最有趣的驱动因素之一的机器学习。

引用及参考文献:

Ref1: https://www.activestate.com/blog/top-10-python-machine-learning-packages/

Ref2 Machine Learning:https://www.edureka.co/blog/machine-learning-classifier/

Ref3 Matplotlib:https://www.activestate.com/blog/plotting-data-in-python-matplotlib-vs-plotly/

Ref4 NLTK: https://www.nltk.org/

Ref5 Pandas: https://www.activestate.com/blog/how-to-clean-machine-learning-datasets-using-pandas/

Ref6 Scikit-learn: https://scikit-learn.org/stable/

Ref7 Seborn:https://seaborn.pydata.org/)

Ref8 Numpy:https://numpy.org/

Ref 9 Keras:https://keras.io/

Ref 10 Scipy:https://www.scipy.org/

Ref 11 Bytorch:https://pytorch.org/

Ref 12 Tensor Flow: https://www.activestate.com/blog/neural-network-showdown-tensorflow-vs-pytorch/

Ref 13 Tensor: https://www.kdnuggets.com/2018/05/wtf-tensor.html

Ref 14 Tensor Board: https://www.tensorflow.org/tensorboard