/** * Compare two datasets to see if they differ. * * @param data1 one set of instances * @param data2 the other set of instances * @throws Exception if the datasets differ */ protected void compareDatasets(Instances data1, Instances data2) throws Exception { if (m_CheckHeader) { if (!data2.equalHeaders(data1)) { throw new Exception("header has been modified\n" + data2.equalHeadersMsg(data1)); } } if (!(data2.numInstances() == data1.numInstances())) { throw new Exception("number of instances has changed"); } for (int i = 0; i < data2.numInstances(); i++) { Instance orig = data1.instance(i); Instance copy = data2.instance(i); for (int j = 0; j < orig.numAttributes(); j++) { if (orig.isMissing(j)) { if (!copy.isMissing(j)) { throw new Exception("instances have changed"); } } else { if (m_CompareValuesAsString) { if (!orig.toString(j).equals(copy.toString(j))) { throw new Exception("instances have changed"); } } else { if (Math.abs(orig.value(j) - copy.value(j)) > m_MaxDiffValues) { throw new Exception("instances have changed"); } } } if (Math.abs(orig.weight() - copy.weight()) > m_MaxDiffWeights) { throw new Exception("instance weights have changed"); } } } }
public String[] extractKeyphrases(String document, int phraseCount) { List<String> keyWords = new ArrayList<String>(); List<Instance> instances = null; try { myLogger.info("-- Extracting Keyphrases... "); instances = myExtractKeyphrases(document, phraseCount); } catch (Exception e) { System.err.println(e.getMessage()); e.printStackTrace(); } for (Instance anInstance : instances) { String instanceStr = anInstance.toString(); // http://www.fao.org/aos/agrovoc#c_23903,'Calliandra // calothyrsus',0.009212,0.000122,1,1,2,0.975066,1,True // myLogger.info(instanceStr); // pick whatever data you need String keyWord = instanceStr.substring(instanceStr.indexOf(",") + 1, instanceStr.indexOf(",0")); if (keyWord.startsWith("'") && keyWord.endsWith("'")) { keyWord = keyWord.substring(1, keyWord.length() - 1); } keyWords.add(keyWord); } String[] phrases = new String[keyWords.size()]; keyWords.toArray(phrases); myLogger.info("Keyphrases: " + Arrays.toString(phrases)); return phrases; }
/** Queries the user enough to make a database query to retrieve experiment results. */ protected void setInstancesFromDBaseQuery() { try { if (m_InstanceQuery == null) { m_InstanceQuery = new InstanceQuery(); } String dbaseURL = m_InstanceQuery.getDatabaseURL(); dbaseURL = (String) JOptionPane.showInputDialog( this, "Enter the database URL", "Query Database", JOptionPane.PLAIN_MESSAGE, null, null, dbaseURL); if (dbaseURL == null) { m_FromLab.setText("Cancelled"); return; } m_InstanceQuery.setDatabaseURL(dbaseURL); m_InstanceQuery.connectToDatabase(); if (!m_InstanceQuery.experimentIndexExists()) { m_FromLab.setText("No experiment index"); return; } m_FromLab.setText("Getting experiment index"); Instances index = m_InstanceQuery.retrieveInstances("SELECT * FROM " + InstanceQuery.EXP_INDEX_TABLE); if (index.numInstances() == 0) { m_FromLab.setText("No experiments available"); return; } m_FromLab.setText("Got experiment index"); DefaultListModel lm = new DefaultListModel(); for (int i = 0; i < index.numInstances(); i++) { lm.addElement(index.instance(i).toString()); } JList jl = new JList(lm); ListSelectorDialog jd = new ListSelectorDialog(null, jl); int result = jd.showDialog(); if (result != ListSelectorDialog.APPROVE_OPTION) { m_FromLab.setText("Cancelled"); return; } Instance selInst = index.instance(jl.getSelectedIndex()); Attribute tableAttr = index.attribute(InstanceQuery.EXP_RESULT_COL); String table = InstanceQuery.EXP_RESULT_PREFIX + selInst.toString(tableAttr); setInstancesFromDatabaseTable(table); } catch (Exception ex) { m_FromLab.setText("Problem reading database"); } }
public String classifyInstance(Instance wekaInstance) { String label = null; try { double labelIndex = bayesNet.classifyInstance(wekaInstance); wekaInstance.setClassValue(labelIndex); label = wekaInstance.toString(wekaInstance.classIndex()); } catch (Exception e) { System.err.println(e.getMessage()); e.printStackTrace(); System.exit(-1); } return label; }
/** * Compare two datasets to see if they differ. * * @param data1 one set of instances * @param data2 the other set of instances * @throws Exception if the datasets differ */ protected void compareDatasets(Instances data1, Instances data2) throws Exception { if (data1.numAttributes() != data2.numAttributes()) throw new Exception("number of attributes has changed"); if (!(data2.numInstances() == data1.numInstances())) throw new Exception("number of instances has changed"); for (int i = 0; i < data2.numInstances(); i++) { Instance orig = data1.instance(i); Instance copy = data2.instance(i); for (int j = 0; j < orig.numAttributes(); j++) { if (orig.isMissing(j)) { if (!copy.isMissing(j)) throw new Exception("instances have changed"); } else if (!orig.toString(j).equals(copy.toString(j))) { throw new Exception("instances have changed"); } if (orig.weight() != copy.weight()) throw new Exception("instance weights have changed"); } } }
@Override public Instances labelData(String data) throws Exception { Instances unlabeled = new Instances(new BufferedReader(new FileReader(data))); // set class attribute unlabeled.setClassIndex(unlabeled.numAttributes() - 1); // create copy Instances labeled = new Instances(unlabeled); for (int i = 0; i < unlabeled.numInstances(); i++) { Instance ui = unlabeled.instance(i); double clsLabel = this.classifier.classifyInstance(ui); labeled.instance(i).setClassValue(clsLabel); System.out.println(ui.toString() + " -> " + unlabeled.classAttribute().value((int) clsLabel)); } return labeled; }
/** Queries the user enough to make a database query to retrieve experiment results. */ protected void setInstancesFromDBaseQuery() { try { if (m_InstanceQuery == null) { m_InstanceQuery = new InstanceQuery(); } String dbaseURL = m_InstanceQuery.getDatabaseURL(); String username = m_InstanceQuery.getUsername(); String passwd = m_InstanceQuery.getPassword(); /*dbaseURL = (String) JOptionPane.showInputDialog(this, "Enter the database URL", "Query Database", JOptionPane.PLAIN_MESSAGE, null, null, dbaseURL);*/ DatabaseConnectionDialog dbd = new DatabaseConnectionDialog(null, dbaseURL, username); dbd.setVisible(true); // if (dbaseURL == null) { if (dbd.getReturnValue() == JOptionPane.CLOSED_OPTION) { m_FromLab.setText("Cancelled"); return; } dbaseURL = dbd.getURL(); username = dbd.getUsername(); passwd = dbd.getPassword(); m_InstanceQuery.setDatabaseURL(dbaseURL); m_InstanceQuery.setUsername(username); m_InstanceQuery.setPassword(passwd); m_InstanceQuery.setDebug(dbd.getDebug()); m_InstanceQuery.connectToDatabase(); if (!m_InstanceQuery.experimentIndexExists()) { System.err.println("not found"); m_FromLab.setText("No experiment index"); m_InstanceQuery.disconnectFromDatabase(); return; } System.err.println("found"); m_FromLab.setText("Getting experiment index"); Instances index = m_InstanceQuery.retrieveInstances("SELECT * FROM " + InstanceQuery.EXP_INDEX_TABLE); if (index.numInstances() == 0) { m_FromLab.setText("No experiments available"); m_InstanceQuery.disconnectFromDatabase(); return; } m_FromLab.setText("Got experiment index"); DefaultListModel lm = new DefaultListModel(); for (int i = 0; i < index.numInstances(); i++) { lm.addElement(index.instance(i).toString()); } JList jl = new JList(lm); jl.setSelectedIndex(0); int result; // display dialog only if there's not just one result! if (jl.getModel().getSize() != 1) { ListSelectorDialog jd = new ListSelectorDialog(null, jl); result = jd.showDialog(); } else { result = ListSelectorDialog.APPROVE_OPTION; } if (result != ListSelectorDialog.APPROVE_OPTION) { m_FromLab.setText("Cancelled"); m_InstanceQuery.disconnectFromDatabase(); return; } Instance selInst = index.instance(jl.getSelectedIndex()); Attribute tableAttr = index.attribute(InstanceQuery.EXP_RESULT_COL); String table = InstanceQuery.EXP_RESULT_PREFIX + selInst.toString(tableAttr); setInstancesFromDatabaseTable(table); } catch (Exception ex) { // 1. print complete stacktrace ex.printStackTrace(); // 2. print message in panel m_FromLab.setText("Problem reading database: '" + ex.getMessage() + "'"); } }