Inteligencia Artificial con Java: Guía práctica para programadores (Ejemplo con Weka)
Inteligencia Artificial con Java: Guía práctica para programadores (Ejemplo con Weka)
La Inteligencia Artificial (IA) ha dejado de ser exclusiva de grandes corporaciones. Hoy, cualquier desarrollador Java puede integrar algoritmos de aprendizaje automático en sus aplicaciones, aprovechando la robustez y portabilidad del lenguaje.
En esta guía aprenderás:
- Qué es IA, Machine Learning y Deep Learning.
- Principales librerías de IA para Java.
- Cómo instalar y configurar tu entorno.
- Un ejemplo práctico de clasificación con Weka.
¿Qué es la IA y cómo se aplica en Java?
- IA (Inteligencia Artificial): sistemas que simulan funciones cognitivas humanas como aprender, razonar y resolver problemas.
- Machine Learning (ML): rama de la IA que entrena modelos a partir de datos para hacer predicciones.
- Deep Learning (DL): subrama del ML que utiliza redes neuronales profundas para resolver problemas complejos.
Principales librerías de IA para Java
| Librería | Enfoque principal | Ventajas |
|---|---|---|
| Weka | Machine Learning clásico | Fácil de usar, ideal para empezar |
| DL4J | Deep Learning | Soporta CPU/GPU, producción lista |
| Smile | ML + estadística | Muy rápido y flexible |
| Tribuo | ML moderno (Oracle) | Integración con ONNX |
| Encog | Redes neuronales y algoritmos genéticos | Ligera y sencilla |
Configuración del entorno Java + IA
- Instala Java 17 o superior
```bash
java -version
2. Instala Maven (si no lo tienes)
mvn -v
3. Crea un proyecto Maven
mvn archetype:generate -DgroupId=com.buhoos.ai \
-DartifactId=java-ai-demo \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
4. Agrega Weka a pom.xml
<dependency>
<groupId>nz.ac.waikato.cms.weka</groupId>
<artifactId>weka-stable</artifactId>
<version>3.8.6</version>
</dependency>
Ejemplo práctico: Clasificación con Weka
Usaremos el famoso dataset Iris para predecir el tipo de flor según sus características.
import org.deeplearning4j.nn.conf.MultiLayerConfiguration;
import org.deeplearning4j.nn.conf.NeuralNetConfiguration;
import org.deeplearning4j.nn.conf.layers.DenseLayer;
import org.deeplearning4j.nn.conf.layers.OutputLayer;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.optimize.listeners.ScoreIterationListener;
import org.nd4j.linalg.activations.Activation;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
import org.nd4j.linalg.dataset.DataSet;
import org.nd4j.linalg.factory.Nd4j;
import org.nd4j.linalg.learning.config.Sgd;
import org.nd4j.linalg.lossfunctions.LossFunctions;
public class XorExample {
public static void main(String[] args) {
// Datos XOR
double[][] input = {
{0, 0}, {0, 1}, {1, 0}, {1, 1}
};
double[][] output = {
{0}, {1}, {1}, {0}
};
DataSet ds = new DataSet(Nd4j.create(input), Nd4j.create(output));
// Configuración de la red
MultiLayerConfiguration config = new NeuralNetConfiguration.Builder()
.updater(new Sgd(0.1))
.list()
.layer(new DenseLayer.Builder().nIn(2).nOut(4)
.activation(Activation.SIGMOID).build())
.layer(new OutputLayer.Builder(LossFunctions.LossFunction.MSE)
.activation(Activation.SIGMOID).nIn(4).nOut(1).build())
.build();
// Crear y entrenar la red
MultiLayerNetwork model = new MultiLayerNetwork(config);
model.init();
model.setListeners(new ScoreIterationListener(100));
for (int i = 0; i < 5000; i++) {
model.fit(ds);
}
// Predicciones
System.out.println("Predicciones:");
System.out.println(model.output(Nd4j.create(new double[][]{{0, 0}})));
System.out.println(model.output(Nd4j.create(new double[][]{{0, 1}})));
System.out.println(model.output(Nd4j.create(new double[][]{{1, 0}})));
System.out.println(model.output(Nd4j.create(new double[][]{{1, 1}})));
}
}
Qué hace este código:
- Descarga el dataset Iris.
- Entrena un árbol de decisión.
- Evalúa la precisión usando validación cruzada.
Próximos pasos
En el siguiente artículo exploraremos DeepLearning4J para crear redes neuronales y resolver problemas más complejos como visión por computadora y procesamiento de texto.
¿Qué proyecto te gustaría construir con IA en Java?
Deja tu respuesta en los comentarios para inspirar próximos tutoriales.