
Gabriel Knez
16 January 2019, 12 min read

What's inside
Python is one of the most popular languages among data scientists and web developers today thanks to a large number of libraries that do just about anything, including machine learning.
If you're launching a data science project that takes advantage of machine learning and plan to use Python, (check out the benefits of Python here) there are plenty of libraries that fulfill different use-cases, skills, and needs for customization. Machine learning algorithms are complicated, so writing them yourself can be challenging. Fortunately, the members of the Python community have done this hard work to enable other developers to save time and focus on the application at hand.
Here are 24 of the very best Python machine learning libraries.
Data processing & visualization
NumPy
1.Github stars: 9,283
Contributors: 718
What it's all about: NumPy (Numerical Python) provides a lot of useful features for performing operations on n-arrays and matrices in Python. You'll get vectorization of mathematical operations on the NumPy array type that boosts its performance and speeds up the execution.
For… scientific computing.
SciPy
2.Github stars: 5,326
Contributors: 678
What it's all about: SciPy is a Python library – don't confuse it with SciPy Stack! It includes modules for linear algebra, integration, optimization, and statistics. Its main functionality is built upon NumPy, so expect its arrays to make use of NumPy. Developers appreciate SciPy because it offers efficient numerical routines like numerical integration, optimization, and many others through its specific submodules – and all their functions are well documented to make your work with the library easier.
For... scientific programming, including mathematics, science, and engineering (linear algebra, calculus, ordinary differential equation solving).
Pandas
3.Github stars: 17,775
Contributors: 1,361
What it's all about: Pandas is designed to do work with “labeled” and “relational” data intuitively. The library is made of two main data structures: “Series” ( one-dimensional) and “Data Frames” (two-dimensional). Pandas allows to easily delete and add columns from DataFrame, convert data structures to DataFrame objects, handle missing data, and more.
For... data wrangling, easy data manipulation, aggregation, and visualization.
Matplotlib
4.Github stars: 8,546
Contributors: 783
What it's all about: A standard machine learning library created for generating simple and powerful visualizations easily. A piece of quality software that makes Python a significant competitor to scientific tools like MatLab or Mathematica. Note that the library is a low-level one, which means that you may need to write more code than usual to achieve an advanced level of visualizations. In general, Matplotlib requires more effort than other, high-level tools, but it's all definitely worth it. Also, popular plotting libraries are designed to work together with Matplotlib. Want to see the library in action? Check out this step-by-step guide to data visualization in Python.
For... creating two-dimensional diagrams and graphs (histograms, scatterplots, non-Cartesian coordinates graphs.
Seaborn
5.Github stars: 5,635
Contributors: 87
What it's all about: Based on Matplotlib, this handy library is one of Python machine learning tools for the visualization of statistical models. We're talking heat maps and the like, visualizations that summarize data and depict the overall distributions. Developers get to use a rich gallery of visualizations including some complex types like time series, jointplots, and violin diagrams.
For... creating data visualizations.
Bokeh
6.Github stars: 8,846
Contributors: 338
What it's all about: Another of the many Python tools for visualization. This one is about interactive visualizations and fully independent of Matplotlib. Interactivity is the core of this library and visualizations are presented via modern browsers similar to Data-Driven Documents (d3.js). Bokeh provides a versatile set of graphs, styling, and interaction abilities like linking plots, adding JavaScript widgets, and defining callbacks, and more.
For... creating interactive and scalable visualizations in a browser with the help of JavaScript widgets.
Plotly
7.Github stars: 4,447
Contributors: 64
What it's all about: Plotly is a web-based tool for building visualizations and exposing APIs to programming languages like Python. You can find plenty of impressive, out-of-box graphics on the Plot.ly website. In general, the library is adapted to work in interactive web applications. The library is being constantly expanded with new graphics and features that support multiple linked views, animation, and crosstalk integration.
For... generating visualizations such as contour graphics, ternary plots, and 3D charts.
pydot
8.Github stars: 282
Contributors: 15
What it's all about: Pydot is a library that helps developers generate oriented and non-oriented graphs. It works as an interface to Graphviz which is written in pure Python. With this library, developers can show the structure of graphs – and these are often essential when you're building algorithms based on neural networks and decision trees.
For... creating complex oriented and non-oriented graphs.
Machine Learning + Deep Learning
SciKit-Learn
9.Github stars: 32,876
Contributors: 1,220
What it's all about: Scikits are a group of extra packages in the SciPy Stack that were designed for specific functionalities like image processing. When it comes to machine learning facilitation, Scikit-learn holds the reign. The package is built on the top of SciPy and uses its math operations to expose a concise interface to common machine learning algorithms. The library offers great code, quality documentation, intuitive use, and high performance. An industry standard for Python machine learning projects.
For... handling standard machine learning and data mining tasks like clustering, regression, dimensionality reduction, classification, and model selection.
XGBoost
10.Github stars: 16,641
Contributors: 335
What it's all about: This optimized distributed gradient boosting library is efficient, flexible and portable. It helps developers implement machine learning algorithms under the Gradient Boosting framework. XGBoost offers parallel tree boosting that solves many data science problems quickly. Developers can run the same code runs on major distributed environments such as Hadoop, SGE, and MPI too.
For... implementing machine learning algorithms under Gradient Boosting.
LightGBM
11.Github stars: 7,618
Contributors: 106
What it's all about: Another useful gradient boosting framework that uses decision tree-based learning algorithms. It's fast, distributed, and offers high performance. Developers use it for faster training speed, higher efficiency, lower memory usage, better accuracy. It also supports parallel and GPU learning. LightGBM can achieve a linear speed-up when you use multiple machines for training in specific settings. You'll find it under the umbrella of the DMTK (http://github.com/microsoft/dmtk) project from Microsoft.
For... ranking, classification, and many other machine learning tasks.
CatBoost
12.Github stars: 3,596
Contributors: 90
What it's all about: This fast, scalable, and high-performance gradient boosting on decision trees library comes in handy for Python developers, but also R, Java, and C++. Compared to other GBDT libraries, CatBoost stands out thanks to its quality. It's also considered as best in class for inference speed. The library supports both numerical and categorical features, as well as fast GPU and multi-GPU support for training. On top of that, it also includes data visualization tools.
For... ranking, classification, regression, and other machine learning tasks
Eli5
13.Github stars: 1,151
Contributors: 7
What it's all about: This library comes in handy when you get unclear predictions from machine learning models that you'd like to clarify. Developers use it for visualization and debugging machine learning models. You can track the work of an algorithm step by step to see where it's not working properly. Moreover, the library supports scikit-learn, XGBoost, LightGBM, lightning, and sklearn-crfsuite libraries.
For... debugging machine learning models.
PyBrain (inactive)
14.Github stars: 2,641
Contributors: 32
What it's all about: PyBrain is short for Python-Based Reinforcement Learning, Artificial Intelligence, and Neural Network Library. Currently inactive, this is a modular machine learning library for Python. The idea is to offer flexible, easy-to-use and powerful algorithms for machine learning tasks and various predefined environments to test and compare algorithms. It's useful for entry-level students but it also offers algorithms for state-of-the-art research.
For... creating machine learning tasks easily.
Keras
15.Github stars: 37,474
Contributors: 758
What it's all about: This open-source library for building neural networks is straightforward and offers a high-level of extensibility. The library uses other packages, Theano or TensorFlow, as its backends. Microsoft also integrated CNTK (Microsoft’s Cognitive Toolkit) as another backend. Keras gives you a minimalistic approach to design and allows fast and easy experimentation through compact systems.
For... building neural networks quickly, but also serious modeling.
Dist-Keras
16.Github stars: 551
Contributors: 5
What it's all about: Dist-Keras (Distributed Keras) is a distributed deep learning framework built on top of Keras and Apache Spark. It focuses on state-of-the-art distributed optimization algorithms. Developers can implement new distributed optimizers easily and focus on their research. The library supports several distributed methods like training of ensembles and models using data parallel methods.
For... building distributed optimization algorithms.
Theano
17.Github stars: 8,653
Contributors: 333
What it's all about: This machine learning library allows defining, optimizing, and evaluating mathematical expressions involving multi-dimensional arrays. These are often a point of frustration for developers using other libraries. Theano is tightly integrated with NumPy. It's easy to set up the library thanks to the transparent use of the GPU. It also includes excellent documentation and a lot of tutorials.
For... getting neural networks and deep learning models up and running quickly.
TensorFlow
18.Github stars: 118,737
Contributors: 1,766
What it's all about: This popular Python framework for deep and machine learning was developed at Google Brain. It helps developers to work with artificial neural networks that handle multiple data sets. The different layer-helpers on top of regular TensorFlow (tflearn, tf-slim, skflow) make it even more valuable. The library is constantly expanding and often adds new releases – for example, fixes in potential security vulnerabilities or improved TensorFlow and GPU integration.
For... deep and machine learning tasks like object identification, speech recognition, and more.
PyTorch
19.Github stars: 23,909
Contributors: 866
What it's all about: PyTorch is a framework that allows performing tensor computations with GPU acceleration. Developers also use it to create dynamic computational graphs and calculate gradients automatically. It's based on Torch, an open-source deep learning library implemented in C with a wrapper in Lua. The library provides a rich Python API for solving applications related to neural networks (introduced only in 2017).
For... data scientists looking to perform deep learning tasks easily.
Caffe
20.Github stars: 26,844
Contributors: 270
What it's all about: Developed by Berkeley AI Research (BAIR)/The Berkeley Vision and Learning Center (BVLC) and community contributors, Caffe is a library that supports machine learning in vision applications. Developers use it to create deep neural networks that are able to identify objects in images or recognize a visual style. Those who are training on images can take advantage of the seamless integration with GPU training. Used mostly in research, the library can help in training models for production use too.
For... neural networks/deep learning for vision applications.
Fuel
21.Github stars: 778
Contributors: 32
What it's all about: This useful library provides machine learning models with the data they need to learn. It includes interfaces to common datasets (MNIST, CIFAR-10 for images, Google's One Billion Words for text). You can iterate over your data in many different ways – for example, in minibatches with shuffled/sequential examples. The library also offers a pipeline of preprocessors that allow editing data on-the-fly (adding noise, extracting n-grams from sentences or patches from images).
For... handling data for machine learning models.
StatsModels
22.Github stars: 3,557
Contributors: 164
What it's all about: StatsModels is a Python library that allows carrying out data exploration through the use of different statistical models estimation methods and performing statistical assertions and analysis. The library includes descriptive and result statistics via linear regression models, robust linear models, discrete choice models, generalized linear models, time series analysis models, and more. You can also benefit from its plotting functions that were designed specifically for statistical analysis and high performance in working with large data sets.
For... data exploration.
Scraping
Scrapy
23.Github stars: 31,028
Contributors: 299
What it's all about: This is one of handiest Python machine learning libraries of all! It helps to create crawling programs (spider bots) that retrieve structured data from the web (like contact info or URLs). It's a full-fledged framework used by developers for gathering data from APIs. It follows Don’t Repeat Yourself in its interface design , inspiring users to write general, universal code that can be reusable in building and scaling large crawlers.
For... scraping data for Python machine learning models.
A little bit of everything
Pattern
24.Github stars: 6,719
Contributors: 19
What it's all about: This full suite library provides ML algorithms, as well as tools for collecting and analyzing data. The data mining features help to collect data from Google, Twitter, and Wikipedia. It includes a web crawler and HTML DOM parser. You can use it to collect and train on data in one place.
For... Natural Language Processing (NLP) algorithms, clustering, and classification.
Read this too: 6 best Python Natural Language Processing (NLP) libraries
Take advantage of Python machine learning libraries
Naturally, this is just the tip of the iceberg. There are many more Python machine learning libraries that prove useful depending on the task at hand.
But these libraries are essential for building high-performance machine learning models in Python. They come in handy for.!.! data scientists and software engineers looking to develop projects that require machine or deep learning.
Do you have another useful library in mind? Please let us know what we've missed in the comments section – we plan to update this list regularly to include the battle-tested tools we use in our data science projects.