How to use Weka Java API in ML

The Weka Java API is a potent machine-learning tool that makes it easy for programmers to incorporate Weka algorithms into Java applications. Complicated machine-learning models can be easily constructed using the Weka Java API's strong built-in data preparation, classification, regression, clustering, and visualization features. Weka includes a wide range of preprocessing methods, including normalization, discretization, and feature selection, and supports a number of file formats, including CSV, ARFF, and C4.5. Only a handful of the machine-learning methods offered by Weka include neural networks, SVMs, decision trees, and random forests.

Developers can quickly train and assess machine learning models, as well as make predictions on new data, using the Weka Java API. Developers can evaluate the effectiveness of their models with Weka's support for cross-validation and holdout assessment methods. Weka is also open-source software, which entitles users to unrestricted usage and modification. As a result, programmers can modify algorithms and tools to suit their unique requirements. We will look at a quick review of the Weka Java API in Machine Learning in this post, so you can implement it in your project.

Weka Java API in ML

Step 1: Download and install Weka

Weka must be downloaded from the official website ( before it can be installed. Unzip the package after downloading it, then add the weka.jar file to your classpath.

Step 2: Install the Data

File formats supported by Weka include CSV, ARFF, and C4.5. Use this code to load data from a CSV file −

import weka.core.Instances;
import weka.core.converters.CSVLoader;

// Load CSV file
CSVLoader loader = new CSVLoader();
loader.setSource(new File("data.csv"));
Instances data = loader.getDataSet();

Step 3: Preprocessing the Data

Normalization, discretization, and feature selection are just a few of the preprocessing methods offered by Weka. The code listed below can be employed to normalize your data −

import weka.filters.Filter;
import weka.filters.unsupervised.attribute.Normalize;

// Normalize data
Normalize normalize = new Normalize();
Instances normalizedData = Filter.useFilter(data, normalize);

Step 4: Training the Model

Decision trees, random forests, SVMs, and neural networks are just a few of the machine-learning algorithms offered by Weka. To train a decision tree using your data, use the code below −

import weka.classifiers.trees.J48;

// Train decision tree
J48 tree = new J48();

Step 5: Evaluating the Model

You can use cross-validation or holdout assessment to assess how well your model is working. To execute cross-validation, use the following code −

import weka.classifiers.Evaluation;

// Evaluate model using cross-validation
Evaluation eval = new Evaluation(normalizedData);
eval.crossValidateModel(tree, normalizedData, 10, new Random(1));

Step 6: Predictions

When you've trained your model, you can use it to predict outcomes based on fresh data. To anticipate outcomes for a brand-new instance, use the code below −

import weka.core.DenseInstance;

// Create new instance
double[] values = {1.0, 2.0, 3.0, 4.0};
DenseInstance instance = new DenseInstance(1.0, values);

// Make prediction
double prediction = tree.classifyInstance(instance);

All done! These are the fundamental procedures for using the Weka Java API for machine learning. You can adjust these procedures to meet your own needs and specifications.


In conclusion, the Weka Java API is an essential machine learning tool since it provides programmers with access to a number of built-in algorithms and tools for data preparation, classification, regression, clustering, and visualization. As Weka is designed to be user-friendly, developers of various skill levels can utilize it with ease.

Updated on: 25-Apr-2023


Kickstart Your Career

Get certified by completing the course

Get Started