viernes, 12 de julio de 2013

Apuntes: Cómo ejecutar un proceso completo con la API de RapidMiner

¿Qué es RapidMiner?

RapidMiner (anteriormente, YALE, Yet Another Learning Environment) es un programa informático para el análisis y minería de datos. Permite el desarrollo de procesos de análisis de datos mediante el encadenamiento de operadores a través de un entorno gráfico. Se usa en investigación educación, capacitación, creación rápida de prototipos y en aplicaciones empresariales. En una encuesta realizada por KDnuggets, un periódico de minería de datos, RapidMiner ocupó el segundo lugar en herramientas de analítica y de minería de datos utilizadas para proyectos reales en 20091 y fue el primero en 2010.2
La versión inicial fue desarrollada por el departamento de inteligencia artificial de la Universidad de Dortmund en 2001. Se distribuye bajo licencia AGPL y está hospedado en SourceForge desde el 2004. (Fuente)

Ahora a la acción:

Cómo crear un proceso completo con la API de Java?

import com.rapidminer.RapidMiner;
import com.rapidminer.example.Attribute;
import com.rapidminer.example.ExampleReader;
import com.rapidminer.example.ExampleSet;
import com.rapidminer.operator.IOContainer;
import com.rapidminer.operator.Model;
import com.rapidminer.operator.ModelApplier;
import com.rapidminer.operator.Operator;
import com.rapidminer.operator.OperatorCreationException;
import com.rapidminer.operator.OperatorException;
import com.rapidminer.operator.io.ExampleSource;
import com.rapidminer.operator.learner.Learner;
import com.rapidminer.tools.OperatorService;
import com.rapidminer.Process;
import java.io.File;

public class SingleOperator {

    private static Process process1;
    private static String trainPath = "/your_user/train_path/";
    private static String testPath = "/your_user/test_path/";

    public static void main(String[] args) {
        try {
            RapidMiner.init();

            // create process
            process1 = new Process(new File("/your_user/file_path/file.rmp"));

            // learn
            Operator exampleSource = OperatorService.createOperator(ExampleSource.class);

            exampleSource.setParameter("attributes",
                    trainPath + "/training_data.xml");
            IOContainer container = exampleSource.apply(new IOContainer());
            ExampleSet exampleSet = container.get(ExampleSet.class);

            // here the string based creation must be used since the J48 operator
            // do not have an own class (derived from the Weka library).
            Learner learner = (Learner) OperatorService.createOperator("J48");
            Model model = learner.learn(exampleSet);

            // loading the test set (plus adding the model to result container)
            Operator testSource =
                    OperatorService.createOperator(ExampleSource.class);
            testSource.setParameter("attributes", testPath + "/test_data.xml");
            container = testSource.apply(new IOContainer());
            container = container.append(model);

            // applying the model
            Operator modelApp = OperatorService.createOperator(ModelApplier.class);
            container = modelApp.apply(container);

            // print results
            ExampleSet resultSet = container.get(ExampleSet.class);
            Attribute predictedLabel = (Attribute) resultSet.getAttributes().getPredictedLabel();
            for (ExampleReader reader = resultSet.getExampleReader(); reader.hasNext();) {
                System.out.println(reader.next().getValueAsString(predictedLabel));
            }
        } catch (OperatorCreationException e) {
            System.err.println("Cannot create operator:" + e.getMessage());
        } catch (OperatorException e) {
            System.err.println("Cannot create model: " + e.getMessage());
        } catch (Exception e) {
            System.err.println("Cannot initialize RapidMiner:" + e.getMessage());
        }
    }
}


miércoles, 25 de abril de 2012

CLO: Cached Languaje Object Oriented

La idea de este manual es probar un nuevo método llamado "CLO" (Cached Languaje Object Oriented):

Debes instalar los siguiente Software requeridos sobre GNU/Linux:

1. Memcached (Puedes seguir los pasos desde Acá).
2. Java JDK6+

La idea es mejorar los tiempos de respuesta en tus búsqueda desde tu aplicación Java a tu Base de Datos. Quitando trabajo a Jboss, Tomcat, o cualquier otro framework-bd que consuma tooooooda la RAM del Server y le saque real provecho a los recursos de la máquina (Optimización de Recursos).

3. Baja este jar para tu proyecto en eclipse (En el caso de utilizar ese IDE).

Y a probar....

Pronto más Info de resultados! ;)




domingo, 15 de abril de 2012

Tutorial: Cómo descargar Información desde un archivo ".torrent"

¿Qué es un archivo torrent?
Eso, nada más que un archivo que contiene información sobre lo que vas a descargar (al menos eso es suficiente entender para comenzar a utilizar este tipo de archivos, lo demás es entender más sobre P2P).

Este pequeño tutorial explica paso a paso como poder descargar películas, videos, música, libros, softwares, juegos, imágenes, etc. Todo lo que se te ocurra compartir!

1. Comenzamos descargando uno de los programas más útiles para estos torrent: uTorrent (Descárgalo desde acá: http://www.utorrent.com

2. Si ocupas Linux puedes usar "Cliente Bitorrent Transmission" (ya viene instalado en el sistema muchas veces).

3. Luego puedes entrar a una de mis url's favoritas para buscar algo que quiera descargar: www.torrentz.com > Esta URL busca páginas en la cual está el archivo .torrent de lo que estás buscando.

4. En caso de películas, les recomiendo primero buscar en www.subdivx.com el título de la película que quieran ver, la versión y luego bajar esa misma versión desde torrentz.com.

5. Otro tips para los cinéfilos es usar VLC: http://www.videolan.org (uno de los mejores reproductores de video multiplataforma Windows/Mac/Linux/Android/FreeBSD/Solaris... y más).

Bueno eso. Varios siempre me preguntaban "cómo lo hago para bajar cosas". Aquí está la respuesta. Son millones y millones de usuarios que utilizan el P2P mediante torrent. Son algunas de las cosas que quieren limitar de Internet, pero está dificil, la Web funciona ya con estas tecnologías, aunque las traten de aniquilar, siempre aparecerán otras nuevas... compartir no tiene límites!

Saludos a tod@s!!