In the previous post we have seen a brief introduction to machine learning. In this post we will see trending programming languages for implementing machine learning algorithms. Scientific community is increasing in a very rapid pace. There is a lot of competition going on among the top companies, and the competition is good. Competition makes to things get better and grow quicker.
Programming languages I have used:
1. MATLAB/ Octave
The order is not specifying the priority, but in weighted familiarity that I have been using.
MATLAB provides a lot of toolboxes, which consist a lot of algorithms in specific field. For instance, signal processing toolbox contains fft, ifft, convolution, correlation just to name a few. The other toolboxes I use mostly are computer vision, statistics & machine learning. The algorithms are pretty straight forward, also comes along with beautiful examples, from where we can understand the concept and usage so vividly. Along with that I prefer to use symbolic mathematics feature that comes with MuPad, which is an interactive note book where you can do the math and visualize the functions you created with rich graphics. I will keep it to cover in detail with examples in upcoming posts.
In the Statistics & Machine Learning toolbox everything you need to get started is available and well structured. You can have a look at here.
Python, the programming language for everything, and for everyone. It’s free, and comes with most of the current operating systems on your machines. You can check by typing python in your terminal. Otherwise, you can install the version of your choice by downloading from the official website: python.org. Python provides large number of packages, just like toolbox in MATLAB. You can install the packages on the go with pip command in your terminal. With that said, I’ve spend a lot of time on choosing different python versions(2.7 & 3.4), on installing packages( like numpy, scipy…) but I found that’s very hard and time consuming, when you spend most of your time on installing only, where is the time for you to do experimenting, testing, debugging and come up with a great solution for a problem. So, I have searched for the best ways, where I can spent most of my time on engineering but not on just installing and I found Anaconda Python. A complete package for scientific computing. Where you’ll get all required packages to get started, yes you don’t need to install the basis requirements, but only specifics for your need and that is more easy than you think. This is very important to mention, do you ever tired of installing opencv, unless you’re an expert, or very lucky you will face issues installing it properly, to avoid that and to get start, anaconda provides packages of opencv, it takes very less time than the actual building of opencv. I separate one type of project from other using virtual environments, if you don’t know them don’t worry, you can use the anaconda python as it is.
My favorite packages for computer vision and machine learning are:
Scikit-learn, numpy, matplotlib, pandas, opencv, scikit-image, PILLOW to name from the top of the list.
Scikit-learn gives you cutting edge implementation of machine learning algorithms with lucid examples and great documentation. OpenCV is my favourite library for all computer vision problems, such as image segmentation, stitching, feature detection and matching and a lot. Numpy is for all my mathematics, very powerful. Matplotlib is for 2D and 3D plotting. Pandas to read and write data files, PILLOW and scikit-image are other easy to use Image Processing libraries.
I couldn’t resist to mention here, the deep learning libraries are implementing state of the art algorithms and allowing us to use, test and build up on top of them by making open source, for example tensorflow from Google, pytorch from Facebook, universe, gym from OpenAI to name a few on top of the list. All of them are written in python. My favorite deep learning libraries are keras, tflearn. Both use tensorflow as backend, and provide abstract level programming.
R-is a statistical analysis programming language, I found a lot of people using it. However I’m not much into but tested a bit. I found that if you have some experience with matlab like programming, you can easily get along with R. R also provides a vast range of libraries, including machine learning and deep learning ( as of our interest concerned).
On the whole you can choose any one or you can also choose the combinations as I do. Python has a very big community around the globe, so finding solutions, getting help is quite easy and very quick. Also, there are yearly conferences around the world such as pydata, pyconf, etc. On the other hand MATLAB is a proprietary software, and they are making the life easy for everyone, they provide webinars, tutorials, great documentation. It also has a big community where you can look for help. As I told I’m not much into R, I can only say that it’s really good, and clean. I found help from YouTube, and other websites.
I would love to see your favorites in the comment section below and feel free to ask any questions.