A collection of command-line tools for researchers in machine learning, data mining, and related fields. All of the functionality is also provided in a clean C++ class library. Demo apps are included to show how to use the class library.
by: Mike Gashler

Builds on 32 and 64-bit platforms, including Linux, Windows, OSX, etc.
Distributed under the LGPL license.

If you're looking for a Java web framework, you probably want Waffle.
If you're looking for waffles recipes, try here.

Documentation
Change Log
Download
Forums



Main Developers:

Mike Gashler


Eric Moyer





Contributors:
(of bug-fixes, small improvements, helpful suggestions, etc.)

  • Desire' Gashler
  • Kevin Kemp
  • Helaman Ferguson
  • Roger Pack
  • Marcelo Hashimoto
  • Jean-Pierre Moreau
  • Olaf Krzikalla
  • Ivan Yanikov
  • Greg Sharp
  • Dmitriy Krylov
  • Will Bendick



Thanks for the generous support from the Neural Networks and Machine Learning Lab at:



Thanks for the free project hosting provided by:
SourceForge.net Logo


Thanks to the GNU project for developing Linux, g++, other tools used to develop this code, and the LGPL license, which this project uses:
Gnu

Image compression by:


Some of the demo apps use:




Waffles seeks to be the world's most comprehensive collection of command-line tools for machine learning and data mining. Our native tools have minimal dependencies (no interpreter, VM, or runtime environment is necessary), and build cross-platform. If you have a useful data mining tool that meets these criteria, we want it in Waffles.



In contrast with other machine learning toolkits, the major strengths of Waffles include:

  • Waffles just works in more situations:
    • All of our supervised learners support both classification and regression.
    • All of them implicitly support multi-dimensional labels.
    • Developing learning algorithms for Waffles is easier because:
      • It automatically imputes missing values if your algorithm is not robust to missing values.
      • It automatically discretizes data if your algorithm only supports discrete values.
      • It automatically converts nominal values to categorical distributions if your algorithm only supports continuous values.
      • When necessary, Waffles algorithms automatically normalize and denormalize data to fall within the ranges expected by particular algorithms.
      • It automatically converts predicted values back to their original form, so the user can freely operate on arbitrary data with any algorithm.
  • Waffles algorithms can automatically tune their own parameters.
  • Waffles is especially rich in dimensionality reduction techniques, but also provides numerous supervised learning algorithms, collaborative filtering algorithms, data transformations, linear-algebraic operations, optimization methods, data generation tools, visualization tools, etc.
  • Waffles tools are fast because they are developed as native applications.
  • Waffles does not depend on any platform or virtual machine, so it will not limit your distribution options.
  • Waffles is distributed under the permissive LGPL license.
  • Waffles apps are script-friendly, and are designed to be used with automated processes.
  • Waffles apps are thin wrappers around functionality in a well-documented C++ class library.



Waffles might be described as "Machine Learning meets the Unix philosophy". We are trying to do for machine learning what Image Magick has done for image processing. That is, we try to keep it simple by providing a big range of functionality in the form of easy-to-use command-line tools. You are free to mix tools from other packages in with ours. You are free to mix your own custom tools with ours. You are free to write scripts that automate your experiments. You are free to use our tools in ways that we could not foresee.

What if you like GUIs because you don't like memorizing commands? No worries! Waffles contains a graphical wizard tool that will guide you through forms to generate the command that will do exactly what you want...

...but you will never get "locked-in" to this GUI, because it prints out the command that will perform the desired task. You can paste this command into a shell to do the job immediately, or you can paste it into a script that will automate your processes.

Want to know more? Take a look at our documentation.



You can reference Waffles with the following citation:

Michael S. Gashler. Waffles: A machine learning toolkit. Journal of Machine Learning Research, MLOSS 12:2383-2387, July 2011. ISSN 1532-4435.

Bibtex:
@article{gashler_waffles,
	author={Gashler, Michael S.},
	title={Waffles: A Machine Learning Toolkit},
	journal={Journal of Machine Learning Research},
	volume={MLOSS 12},
	pages={2383--2387},
	month={July},
	year={2011},
	issn={1532-4435},
	publisher={JMLR.org and Microtome Publishing},
	url={http://www.jmlr.org/papers/volume12/gashler11a/gashler11a.pdf}
}


If you need help, you are welcome to post to our forum. If you would like to suggest a particular feature, please send email to . If you want it before a certain deadline, you might consider offering to help fund my research =). If you find a bug, just send me an email. I'll switch to a bug-tracking system if enough bugs are reported. I want to hear about all bugs, even small ones, documentation errors, and little annoyances.

If Waffles is not for you, you can find lots of other great open source machine learning toolkits at MLOSS.org.