Urania tables and integrating Weka to Java project Bc. Peter Nosáľ 207773@mail.muni.cz Faculty of Informatics Masaryk University April 2012 Content ● Urania tables ● Importing Weka into Java project ● Obtaining data from DB using Weka ● Using data in Java project or Weka Urania tables ● Odpovedniky ● Odpovedi ● Otazky ● Sql for creation of these tables is found here: – http://urania.fi.muni.cz/dev/db.sql ● Project that is working with these tables – http://urania.fi.muni.cz/documentation/importerProject.zip Odpovedniky nameOfVariable typeOfVariable id INT(11) file_id VARCHAR(32) file_name VARCHAR(50) dr_name VARCHAR(32) passwrd VARCHAR(8) uco VARCHAR(16) datum DATETIME status TINYINT(4) Odpovedniky Otazky nameOfVariable typeOfVariable otazkaId INT UNSIGNED hashOtazky VARCHAR(32) textOtazky TEXT bodyZaSpravnouOdpoved DOUBLE bodyZaChybnouOdpoved DOUBLE bodyZaNezodpovezeni DOUBLE odpovedniky_id INT(11) Otazky Odpovedi nameOfVariable typeOfVariable answerId INT UNSIGNED studentId INT pruchod MEDIUMINT konecneUlozeni CHAR ulozeni MEDIUMINT odpoved TEXT hodnoceni VARCHAR(255) body DOUBLE celkovaSpravnost VARCHAR(4) otazky_otazkaId INT UNSIGNED Odpovedi Importing Weka into Java project 1. Download and install the newest Weka from http://sourceforge.net/projects/weka/files/weka-3-7/3.7.5/ 2.Use weka.jar or weka-src.jar 3. Modify DatabaseUtils.prop ● DatabaseUtils.prop is located in folder .\weka\experiment ● Need to change driver and database name ● Add types of attributes used in tables – More info: http://weka.wikispaces.com/Databases Importing Weka into Java project 4. Add into system Enviroment Variables in Classpath path to your database driver ● http://weka.wikispaces.com/CLASSPATH 5. Import weka.jar or weka-src.jar into your project as dependency Obtaining data from DB using Weka ● Imports for creating Instances and ARFF file – import weka.core.Instances – import weka.experiment.InstanceQuery ● InstanceQuery query = new InstanceQuery(); query.setUsername(String userName); query.setPassword(String userPassword); query.setQuery(“select * from table”); Instances data = query.retrieveInstances(); ● http://weka.wikispaces.com/Use+WEKA+in+your+Java+code Obtaining data from DB using Weka - 2 ● Once you have data – Use data in program – Create ARFF file from data ● Creating ARFF file BufferedWriter writer = new BufferedWriter(new FileWriter("name.arff")); writer.write(data.toString()); writer.flush(); writer.close(); ● Don't use unique attributes http://weka.wikispaces.com/Remove+Attributes Using data in Java project or Weka ● In Java project – import weka.gui.treevisualizer.PlaceNode2; – import weka.gui.treevisualizer.TreeVisualizer; – import weka.classifiers.trees.J48; – Create instance of J48 tree – Build classifier with selected attribute – Create a graph using TreeVisualizer – Display in Jframe ● More info: http://weka.wikispaces.com/Visualizing+a+Tree Using data in Java project or Weka ● In Weka – Open created ARFF file in Weka – Do whatever you want :-) Any questions? Thank you for your attention