/** * Returns the Date format pattern in case this attribute is of type DATE, * otherwise an empty string. * * @return the date format pattern * @see java.text.SimpleDateFormat */ public final String getDateFormat() { if (isDate()) { return ((DateAttributeInfo)m_AttributeInfo).m_DateFormat.toPattern(); } else { return ""; } }
/** * Returns the Date format pattern in case this attribute is of type DATE, * otherwise an empty string. * * @return the date format pattern * @see java.text.SimpleDateFormat */ public final String getDateFormat() { if (isDate()) { return ((DateAttributeInfo)m_AttributeInfo).m_DateFormat.toPattern(); } else { return ""; } }
/** * Determines the corresponding Obvious class for a Weka instances. * @param att * @return */ private Class<?> checkClass(Attribute att) { if (att.isDate()) { return Date.class; } else if (att.isNumeric()) { return Number.class; } else if (att.isNominal() || att.isString()) { return String.class; } return String.class; }
/** * Determines the corresponding Obvious class for a Weka instances. * @param att * @return */ private Class<?> checkClass(Attribute att) { if (att.isDate()) { return Date.class; } else if (att.isNumeric()) { return Number.class; } else if (att.isNominal() || att.isString()) { return String.class; } return String.class; }
@Override public void set(int rowId, int col, Object val) { if (!isValueValid(rowId, col)) { return; } Attribute att = instances.attribute(col); if (att.isNumeric()) { instances.instance(rowId).setValue(att, Double.parseDouble( val.toString())); return; } else if (att.isString() || att.isNominal()) { instances.instance(rowId).setValue(att, val.toString()); return; } else if (att.isDate()) { try { instances.instance(rowId).setValue(att, att.parseDate(val.toString())); } catch (ParseException e) { e.printStackTrace(); } return; } }
/** * Sets the format of the input instances. * * @param instanceInfo an Instances object containing the input instance * structure (any instances contained in the object are ignored - * only the structure is required). * @return true if the outputFormat may be collected immediately * @throws Exception if the input format can't be set successfully */ @Override public boolean setInputFormat(Instances instanceInfo) throws Exception { super.setInputFormat(instanceInfo); m_AttIndex.setUpper(instanceInfo.numAttributes() - 1); if (!instanceInfo.attribute(m_AttIndex.getIndex()).isDate()) { throw new UnsupportedAttributeTypeException("Chosen attribute not date."); } setOutputFormat(); return true; }
/** * Sets the format of the input instances. * * @param instanceInfo an Instances object containing the input instance * structure (any instances contained in the object are ignored - * only the structure is required). * @return true if the outputFormat may be collected immediately * @throws Exception if the input format can't be set successfully */ @Override public boolean setInputFormat(Instances instanceInfo) throws Exception { super.setInputFormat(instanceInfo); m_AttIndex.setUpper(instanceInfo.numAttributes() - 1); if (!instanceInfo.attribute(m_AttIndex.getIndex()).isDate()) { throw new UnsupportedAttributeTypeException("Chosen attribute not date."); } setOutputFormat(); return true; }
@Override public int addRow(Tuple tuple) { Schema tupleSchema = tuple.getSchema(); for (int i = 0; i < tupleSchema.getColumnCount(); i++) { if (!tupleSchema.getColumnName(i).equals(schema.getColumnName(i)) || !tupleSchema.getColumnType(i).equals(schema.getColumnType(i))) { return -1; } } Instance inst = new Instance(schema.getColumnCount()); for (int i = 0; i < tuple.getSchema().getColumnCount(); i++) { Attribute att = instances.attribute(i); if (att.isNumeric()) { inst.setValue(att, Double.parseDouble(tuple.get(i).toString())); } else if (att.isString() || att.isNominal()) { inst.setValue(att, tuple.getString(i)); } else if (att.isDate()) { try { inst.setValue(att, att.parseDate(tuple.getDate(i).toString())); } catch (ParseException e) { e.printStackTrace(); } } } instances.add(inst); return getRowCount(); }
@Override public Object getValue(int rowId, int col) { if (!isValueValid(rowId, col)) { return null; } Attribute att = instances.attribute(col); if (att.isNumeric()) { return instances.attributeToDoubleArray(col)[rowId]; } else if (att.isNominal() || att.isString()) { return instances.instance(rowId).stringValue(col); } else if (att.isDate()) { double dateValue = instances.attributeToDoubleArray(col)[rowId]; return att.formatDate(dateValue); } return null; }
/** * tests the filter in conjunction with the FilteredClassifier */ public void testFilteredClassifier() { try { Instances data = getFilteredClassifierData(); for (int i = 0; i < data.numAttributes(); i++) { if (data.classIndex() == i) continue; if (data.attribute(i).isDate()) { ((ChangeDateFormat) m_FilteredClassifier.getFilter()).setAttributeIndex( "" + (i + 1)); break; } } } catch (Exception e) { fail("Problem setting up test for FilteredClassifier: " + e.toString()); } super.testFilteredClassifier(); }
/** * tests the filter in conjunction with the FilteredClassifier */ public void testFilteredClassifier() { try { Instances data = getFilteredClassifierData(); for (int i = 0; i < data.numAttributes(); i++) { if (data.classIndex() == i) continue; if (data.attribute(i).isDate()) { ((ChangeDateFormat) m_FilteredClassifier.getFilter()).setAttributeIndex( "" + (i + 1)); break; } } } catch (Exception e) { fail("Problem setting up test for FilteredClassifier: " + e.toString()); } super.testFilteredClassifier(); }
/** Need to remove attributes that are not nominal/numeric */ protected void setUp() throws Exception { super.setUp(); // remove attributes that are not nominal/numeric int i = 0; while (i < m_Instances.numAttributes()) { if ( ( !m_Instances.attribute(i).isNominal() && !m_Instances.attribute(i).isNumeric() ) || m_Instances.attribute(i).isDate() ) m_Instances.deleteAttributeAt(i); else i++; } }
/** Need to remove attributes that are not nominal/numeric */ protected void setUp() throws Exception { super.setUp(); // remove attributes that are not nominal/numeric int i = 0; while (i < m_Instances.numAttributes()) { if ( ( !m_Instances.attribute(i).isNominal() && !m_Instances.attribute(i).isNumeric() ) || m_Instances.attribute(i).isDate() ) m_Instances.deleteAttributeAt(i); else i++; } }
@Override public void add(Instance instance) { double[] values = instance.toDoubleArray(); Object[] obvValues = new Object[table.getSchema().getColumnCount()]; for (int i = 0; i < table.getSchema().getColumnCount(); i++) { Attribute att = instance.attribute(i); Class<?> c = table.getSchema().getColumnType(i); if(att.isString() && ObviousWekaUtils.isString(c)) { obvValues[i] = instance.attribute(i).value(i); } else if (att.isNumeric() && ObviousWekaUtils.isNumeric(c)) { obvValues[i] = instance.value(att); } else if (att.isDate() && ObviousWekaUtils.isDate(c)) { obvValues[i] = new Date((long) values[i]); } else { obvValues[i] = null; } } Tuple tuple = new TupleImpl(table.getSchema(), obvValues); m_Instances.addElement(new ObviousWekaInstance(tuple, this)); table.addRow(tuple); }
/** Need to remove non-nominal/numeric attributes, set class index */ protected void setUp() throws Exception { super.setUp(); // remove attributes that are not nominal/numeric int i = 0; while (i < m_Instances.numAttributes()) { if ( ( !m_Instances.attribute(i).isNominal() && !m_Instances.attribute(i).isNumeric() ) || m_Instances.attribute(i).isDate() ) m_Instances.deleteAttributeAt(i); else i++; } // class index m_Instances.setClassIndex(0); }
/** Need to remove non-nominal/numeric attributes, set class index */ protected void setUp() throws Exception { super.setUp(); // remove attributes that are not nominal/numeric int i = 0; while (i < m_Instances.numAttributes()) { if ( ( !m_Instances.attribute(i).isNominal() && !m_Instances.attribute(i).isNumeric() ) || m_Instances.attribute(i).isDate() ) m_Instances.deleteAttributeAt(i); else i++; } // class index m_Instances.setClassIndex(1); }
/** Need to remove non-nominal/numeric attributes, set class index */ protected void setUp() throws Exception { super.setUp(); // remove attributes that are not nominal/numeric int i = 0; while (i < m_Instances.numAttributes()) { if ( ( !m_Instances.attribute(i).isNominal() && !m_Instances.attribute(i).isNumeric() ) || m_Instances.attribute(i).isDate() ) m_Instances.deleteAttributeAt(i); else i++; } // class index m_Instances.setClassIndex(0); }
/** Need to remove non-nominal/numeric attributes, set class index */ protected void setUp() throws Exception { super.setUp(); // remove attributes that are not nominal/numeric int i = 0; while (i < m_Instances.numAttributes()) { if ( ( !m_Instances.attribute(i).isNominal() && !m_Instances.attribute(i).isNumeric() ) || m_Instances.attribute(i).isDate() ) m_Instances.deleteAttributeAt(i); else i++; } // class index m_Instances.setClassIndex(1); }
public void testTypical() { Instances result = useFilter(); // Number of attributes and instances shouldn't change assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertEquals(m_Instances.numInstances(), result.numInstances()); assertTrue(!m_Instances.relationName().equals(result.relationName())); for (int i = 0; i < m_Instances.numAttributes(); i++) { Attribute inatt = m_Instances.attribute(i); Attribute outatt = result.attribute(i); if (!inatt.isString() && !inatt.isDate()) { assertTrue("Attribute names should be changed", !inatt.name().equals(outatt.name())); if (inatt.isNominal()) { assertEquals("Number of nominal values shouldn't change", inatt.numValues(), outatt.numValues()); for (int j = 0; j < inatt.numValues(); j++) { assertTrue("Nominal labels should be changed", !inatt.value(j).equals(outatt.value(j))); } } } } }
public void testTypical() { Instances result = useFilter(); // Number of attributes and instances shouldn't change assertEquals(m_Instances.numAttributes(), result.numAttributes()); assertEquals(m_Instances.numInstances(), result.numInstances()); assertTrue(!m_Instances.relationName().equals(result.relationName())); for (int i = 0; i < m_Instances.numAttributes(); i++) { Attribute inatt = m_Instances.attribute(i); Attribute outatt = result.attribute(i); if (!inatt.isString() && !inatt.isDate()) { assertTrue("Attribute names should be changed", !inatt.name().equals(outatt.name())); if (inatt.isNominal()) { assertEquals("Number of nominal values shouldn't change", inatt.numValues(), outatt.numValues()); for (int j = 0; j < inatt.numValues(); j++) { assertTrue("Nominal labels should be changed", !inatt.value(j).equals(outatt.value(j))); } } } } }