NominalTo Numeric

Jorge
Jorge New Altair Community Member
edited November 5 in Community Q&A
Hi,

I'm trying to do in Java the same that I do in the interface.
But...I don't know how to create and apply the NominalToNumeric preprocessing.

I've a exampleSet and I want to convert it in another exampleSet modified.

Can anyone help me?

Thanks in advance,
Jorge
Tagged:

Answers

  • land
    land New Altair Community Member
    Hi Jorge,
    • use the static method Operator operator = OperatorService.createOperator(..)
    • set the parameters using operator.setParameter(..)
    • create an IOContainer with the exampleSet
    • use the apply method to apply the operator onto the IOContainer
    Greetings,
      Sebastian
  • Jorge
    Jorge New Altair Community Member
    Hi Sebastian,

    but the problem is that...

    When I execute this line of my code...

    Operator n2n = OperatorService.createOperator(NominalToNumeric.class);

    The result is that...

    Exception in thread "main" java.lang.NullPointerException
    at com.rapidminer.operator.OperatorCreationException.createMessage(OperatorCreationException.java:69)
    at com.rapidminer.operator.OperatorCreationException.<init>(OperatorCreationException.java:53)
    at com.rapidminer.tools.OperatorService.createOperator(OperatorService.java:567)
    at ProcessCreator.main(ProcessCreator.java:45)

    Where's the problem?

    Greetings,
    Jorge
  • land
    land New Altair Community Member
    Hi,
    did you call RapidMiner.init(..) before?

    Greetings,
      Sebastian
  • Jorge
    Jorge New Altair Community Member
    Yes,

    All works ok except that step


    That's my code:

    RapidMiner.init();

    Process process = new Process();

    try {
    Operator inputOperator = OperatorService.createOperator(ArffExampleSource.class);
    inputOperator.setParameter("data_file","C:\\provincias.arff");
    process.getRootOperator().addOperator(inputOperator);
    IOContainer container;
    try {
    container = inputOperator.apply(new IOContainer());
    ExampleSet exampleSet = container.get(ExampleSet.class);


    System.out.println("///////////////////////////////////////");
    System.out.println("NOW TO NUMERIC");
    System.out.println("///////////////////////////////////////");

    Operator n2n = OperatorService.createOperator(NominalToNumeric.class);

    ...
    ...
    ...(THE REST OF THE CODE)

    Greetings,
    Jorge
  • land
    land New Altair Community Member
    Hi,
    could you please post the log message of the rapid miner initialization?

    Greetings,
      Sebastian
  • Jorge
    Jorge New Altair Community Member
    Hi,
    Here you have it...

    G Dec 16, 2008 2:11:13 PM: rapidminer.home is 'C:\eclipse_gan\Workspace\yale'.
    G Dec 16, 2008 2:11:13 PM: ----------------------------------------------------
    G Dec 16, 2008 2:11:13 PM: Initialization Settings
    G Dec 16, 2008 2:11:13 PM: ----------------------------------------------------
    G Dec 16, 2008 2:11:13 PM: Default system encoding for IO: windows-1252
    G Dec 16, 2008 2:11:13 PM: Load core operators...
    G Dec 16, 2008 2:11:13 PM: Load Weka operators: true
    G Dec 16, 2008 2:11:13 PM: Load JDBC drivers from lib directory: true
    G Dec 16, 2008 2:11:13 PM: Load JDBC drivers from classpath: false
    G Dec 16, 2008 2:11:13 PM: Load plugins: true
    G Dec 16, 2008 2:11:13 PM: Load plugins from 'C:\eclipse_gan\Workspace\yale\lib\plugins'
    G Dec 16, 2008 2:11:13 PM: ----------------------------------------------------
    G Dec 16, 2008 2:11:13 PM: Read rcfile 'C:\eclipse_gan\Workspace\yale\etc\rapidminerrc'.
    G Dec 16, 2008 2:11:13 PM: Trying rcfile 'C:\eclipse_gan\Workspace\yale\etc\rapidminerrc.Windows XP'...skipped
    G Dec 16, 2008 2:11:13 PM: Trying rcfile 'C:\Documents and Settings\jorge.palacio\.rapidminer\4_3_0_rapidminerrc'...skipped
    G Dec 16, 2008 2:11:13 PM: Read rcfile 'C:\Documents and Settings\jorge.palacio\.rapidminer\4_3_0_rapidminerrc.Windows XP'.
    G Dec 16, 2008 2:11:13 PM: Trying rcfile 'C:\eclipse_gan\Workspace\Reputacion\rapidminerrc'...skipped
    G Dec 16, 2008 2:11:13 PM: Trying rcfile 'C:\eclipse_gan\Workspace\Reputacion\rapidminerrc.Windows XP'...skipped
    G Dec 16, 2008 2:11:13 PM: Trying rapidminer.rcfile. Property not specified...skipped
    G Dec 16, 2008 2:11:13 PM: Loading operators from 'operators.xml'.
    G Dec 16, 2008 2:11:19 PM: Loading JDBC driver information from 'etc:jdbc_properties.xml'.
    ///////////////////////////////////////
    NOW TO NUMERIC
    ///////////////////////////////////////
    Exception in thread "main" java.lang.NullPointerException
    at com.rapidminer.operator.OperatorCreationException.createMessage(OperatorCreationException.java:69)
    at com.rapidminer.operator.OperatorCreationException.<init>(OperatorCreationException.java:53)
    at com.rapidminer.tools.OperatorService.createOperator(OperatorService.java:567)
    at ProcessCreator.main(ProcessCreator.java:53)
    Greetings,
    Jorge
  • land
    land New Altair Community Member
    Hi Jorge,
    thank you for this detailed informations. It now was easy to track down the bug occuring only while trying to construct renamed operators. Because of the renaming there is more than one descriptions available. We will remove the bug, but this will last more than a minute.
    So I will give you a hint, how to prevent this.
    In the ressources directory is a file named operators.xml. Delete the following token:
      <operator 
        name        = "Nominal2Numeric"   
        class      = "com.rapidminer.operator.preprocessing.filter.NominalToNumeric"
        description = "Maps all values to real values (usually simply using the internal indices)."
        deprecation = "Please use the operator 'Nominal2Numerical' instead"
        group      = "Preprocessing.Attributes.Filter.Converter"/>
    After saving and probably performing Ant target "Copy-Ressources" your problem should be solved, since the second description isn't present any more.

    Greetings,
      Sebastian
  • Jorge
    Jorge New Altair Community Member
    Hi Sebastian,

    I deleted that token and the error persists...

    I tried to redefine the path of the operators.xml and I configured another time the project in eclipse, but the problem doesn't want to go out xD

    Another idea?

    Thanks for your time,
    Jorge
  • land
    land New Altair Community Member
    Hi,
    probably you deleted it in the wrong version. This is always a little bit confusing: There is one version in <eclipseProjectDir>/ressources and one in <eclipseProjectDir>/<buildDir>/ressources. You have to edit the first one and then perform the Ant Target "Copy-Ressources"
    Another way around would be to create the Operator using its name, not its class name.

    Greetings,
      Sebastian
  • Jorge
    Jorge New Altair Community Member
    Thanks for all Sebastian,

    The problem was in the "Copy-Resources" target  ;)

    It works perfectly now  ;D

    Greetings,
    Jorge