Machine learning for fun and profit

Top 5 machine learning libraries for Java

Jane Elizabeth

Companies are scrambling to find enough programmers capable of coding for ML and deep learning. Are you ready? Here are five of our top picks for machine learning libraries for Java.

The long AI winter is over. Instead of being a punchline, machine learning is one of the hottest skills in tech right now. Companies are scrambling to find enough programmers capable of coding for ML and deep learning. While no one programming language has won the dominant position, here are five of our top picks for ML libraries for Java.


It comes as no surprise that Weka is our number one pick for the best Java machine learning library. Weka 3 is a fully Java-based workbench best used for machine learning algorithms. Weka is primarily used for data mining, data analysis, and predictive modelling. It’s completely free, portable, and easy to use with its graphical interface.

“Weka’s strength lies in classification, so applications that require automatic classification of data can benefit from it, but it also supports clustering, association rule mining, time series prediction, feature selection, and anomaly detection,” said Prof. Eibe Frank, an Associate Professor of Computer Science at the University of Waikato in New Zealand.

Weka’s collection of machine learning algorithms can be applied directly to a dataset or called from your own Java code. This supports several standard data mining tasks, including data preprocessing, classification, clustering, visualization, regression, and feature selection.

SEE ALSO: Weka — An interface to a collection of machine learning algorithms in Java

Massive Online Analysis (MOA)

We’re big fans of MOA here at MOA is an open-source software used specifically for machine learning and data mining on data streams in real time. Developed in Java, it can also be easily used with Weka while scaling to more demanding problems. MOA’s collection of machine learning algorithms and tools for evaluation are useful for regression, classification, outlier detection, clustering, recommender systems, and concept drift detection. MOA can be useful for large evolving datasets and data streams as well as the data produced by the devices of the Internet of Things (IoT).

MOA is specifically designed for machine learning on data streams in real time. It aims for time- and memory-efficient processing. MOA provides a benchmark framework for running experiments in the data mining field by providing several useful features including an easily extendable framework for new algorithms, streams, and evaluation methods; storable settings for data streams (real and synthetic) for repeatable experiments; and a set of existing algorithms and measures from the literature for comparison.


Last year the JAXenter community nominated Deeplearning4j as one of the most innovative contributors to the Java ecosystem. Deeplearning4j is a commercial grade, open-source distributed deep-learning library in Java and Scala brought to us by the good people (and semi-sentient robots!) of Skymind. Its mission is to bring deep neural networks and deep reinforcement learning together for business environments.

Deeplearning4j is meant to serve as DIY tool for Java, Scala and Clojure programmers working on Hadoop, the massive distributed data storage system with enormous processing power and the ability to handle virtually limitless concurrent tasks or jobs. The deep neural networks and deep reinforcement learning are capable of pattern recognition and goal-oriented machine learning. All of this means that Deeplearning4j is super useful for identifying patterns and sentiment in speech, sound and text. Plus, it can be used for detecting anomalies in time series data like financial transactions.

SEE ALSO: Top 5 hottest IT jobs for 2017


Developed primarily by Andrew McCallum and students from UMASS and UPenn, MALLET is an open-source java machine learning toolkit for language to text. This Java-based package supports statistical natural language processing, clustering, document classification, information extraction, topic modelling, and other machine learning applications to text.

MALLET’s specialty includes sophisticated tools for document classification such as efficient routines for converting text. It supports a wide variety of algorithms (including Naïve Bayes, Decision Trees, and Maximum Entropy) and code for evaluating classfier performance. Also, MALLET includes tools for sequence tagging and topic modelling.


The Environment for Developing KDD-Applications Supported by Index Structures (ELKI for short) is an open-source data mining software for Java. ELKI’s focus is in research in algorithms, emphasizing unsupervised methods in cluster analysis, database indexes, and outlier detection. ELKI allows an independent evaluation of data mining algorithms and data management tasks by separating the two. This feature is unique among other data mining frameworks like Weta or Rapidminer. ELKI also allows arbitrary data types, file formats, or distance or similarity measures.

Designed for researchers and students, ELKI provides a large collection of highly configurable algorithm parameters. This allows fair and easy evaluation and benchmarking of algorithms. This means ELKI is particularly useful for data science; ELKI has been used to cluser sperm whale vocalizations, spaceflight operations, bike sharking redistribution, and traffic prediction. Pretty useful for any grad students out there looking to make sense of their datasets!


Do you have a favorite machine learning library for Java that we didn’t mention? Tell us in the comments and explain why it’s a travesty we forgot about it!


Jane Elizabeth
Jane Elizabeth is an assistant editor for

1 Comment
Inline Feedbacks
View all comments
4 years ago

Hi ,
You may find this site useful for Computer Vision Application implementation in java.