Recently I've discovered a bunch of useful machine learning algorithms inside the DataMelt project. Today I would like to share what I've found: This project contains a reach variety of open-source programs for machine learning implemented over the past 20 years by the Java community. It includes easy-to-use GUI-based tools (so you can design your neural network architecture using a drag-and drop editors!), as well as Java classes that can easily be embedded inside Java programs, or used together with various scripting languages, such as Jython (aka Python), Groovy and JRuby. You can mix different network network implementations inside a single script!

Let's go over some neural network implementations inside DataMelt:

Encog

Encog Workbench v3.4 by Heaton Research using the menu "Tools - -Neural Networks: Encog". This program can be run using the GUI mode as described above, or calling the Java classes directly inside the Java code, or scripting macro languages. This section of the DataMelt manual describes how to call Encog classes directly inside analysis code.

Joone

Joone Workbench, or Java Object Oriented Neural Engine" can run as "Tools-Neural Networks: Joone". The development of Joone was stopped 10 years ago (with unclear reasons), but DataMelt's default installation supports Joone out of the box. The nice thing about Joone is that one can design many neural network architectures using a visual editor. This program can be run using the GUI mode as described above, or calling the Java classes directly inside the Java code, or scripting macro languages. This section on Weka usage describes this.

Weka

Weka neural network algorithms are also included as a Java library. You can also use Weka in the GUI mode using the menu "Tools - Neural Networks: Weka". Note that Weka scans only jar files inside the directories "user", "weka" and "math". Other DataMelt Java libraries are not visible for Weka.

If you use Jython/Groovy and other scripting engines, you can call appropriate Java classes in your Java code or scripting macros.

Convolutional Neural Networks

Convolutional Neural Networks are included from several external Java libraries. They are described in this section of the manual. No GUI Workbench is available.

Bayesian Neural Networks

I've also discovered several implementations of Bayesian Neural Networks inside DataMelt API. See this section of the manual that has a description of some of them.

Where to find examples?

You can see how Java classes from all the above neural network engines can be used in actual data mining programs using DataMelt examples:

P.S. Some may think that Java is slow for neural networks, and is less optimized in terms of the execution speed. From my personal experience, the time I spend on interacting with a program to bring some meaning to my data science project significantly exceeds the time that required for the computer to run the code.The main issue is where to find programs that are easy to use, have good documentation and many examples.

J.Demarko (Ph.D.)