Usually, people apply machine learning (ML) methods and algorithms using one of two programming languages: Python or R. Books, courses, and tutorials about Machine Learning most often use one of these languages as well (or both).
Python is a general-purpose programming language used not only for Machine Learning but also for scientific computing, back-end Web development, desktop applications, etc. R is created primarily for statisticians. However, they have at least two common characteristics:
- They are suitable for non-programmers,
- They have comprehensive ML libraries.
- In many cases, ML algorithms are implemented in Fortran, C, C++, or Cython and called from Python or R.
Java is also used for Machine Learning, but usually by professional programmers.
- Bit operations on arrays, hash tables, sorting, random number generation, etc.,
- Linear algebra, array manipulation, optimization (the Levenberg-Marquardt method), statistics,
- Supervised learning,
- Unsupervised learning.
Supported supervised learning methods are:
- Linear, polynomial, exponential, and power regression,
- K-nearest neighbors,
- Naive Bayes,
- Support vector machines,
- Decision trees and random forest,
- Feedforward neural networks, etc.
Besides, ml.js offers several unsupervised learning methods:
- Principal component analysis,
- Cluster analysis (k-means and hierarchical clustering),
- Self-organizing maps (Kohonen networks).
TensorFlow is a very comprehensive library that still enables building and training models easily. It supports a huge variety of network layers, activation functions, optimizers, and other components. It has good performance and offers GPU support.
License: Apache 2.0.
It provides advanced options like:
- Using GPU to train networks
- Asynchronous training that can fit multiple networks in parallel
- Cross-validation that is a more sophisticated validation method
brain.js saves and loads models to/from JSON files.
ConvNetJS is another library for neural networks and deep learning. It enables training neural networks in browsers. In addition to classification and regression problems, it has the reinforcement learning module (using Q-learning) that is still experimental. ConvNetJS provides support for convolutional neural networks that excel in image recognition.
In ConvNetJS, neural networks are lists of layers. It provides the following layers:
- Input (the first) layer
- Fully connected layer
- Convolution layer
- Pooling layer
- Local contrast normalization layer
- Classifiers loss (the output) layers: softmax and svm
- Regression loss (the output) layer that uses L2
It supports several important activation functions like:
- Hyperbolic tangent
as well as the optimizers such as:
- Stochastic gradient descent
- ConvNetJS also provides a convenient way to save and load models to/from JSON files.
It also provides the possibility of GPU execution in browsers.
A very convenient feature of WebDNN is the possibility to convert and use the models pretrained with PyTorch, TensorFlow, Keras, Caffemodel or Chainer.
- Tokenization (breaking text into arrays of strings)
- Calculation of strings distances
- Matching similar strings
- Classification (naive Bayes, logistic regression, and maximum entropy)
- Sentiment analysis (currently in eight languages)
- Phonetic matching, inflectors, n-grams, etc.
Have a lot of fun exploring them!