Package org.integratedmodelling.riskwiz.learning.data

Examples of org.integratedmodelling.riskwiz.learning.data.Instances


        public ArffReader(Reader reader, Instances template, int lines, int capacity) throws IOException {
            m_Lines = lines;
            m_Tokenizer = new StreamTokenizer(reader);
            initTokenizer();

            m_Data = new Instances(template, capacity);
            initBuffers();
        }
View Full Code Here


                        try {
                            ArffReader arff = new ArffReader(
                                    new StringReader(m_Tokenizer.sval),
                                    m_Data.attribute(m_IndicesBuffer[numValues]).relation(),
                                    0);
                            Instances data = arff.getData();

                            m_ValueBuffer[numValues] = m_Data.attribute(m_IndicesBuffer[numValues]).addRelation(
                                    data);
                        } catch (Exception e) {
                            throw new IOException(
View Full Code Here

                    case Attribute.RELATIONAL:
                        try {
                            ArffReader arff = new ArffReader(
                                    new StringReader(m_Tokenizer.sval),
                                    m_Data.attribute(i).relation(), 0);
                            Instances data = arff.getData();

                            instance[i] = m_Data.attribute(i).addRelation(data);
                        } catch (Exception e) {
                            throw new IOException(
                                    e.toString() + " of line " + getLineNo());
View Full Code Here

            // Check if any attributes have been declared.
            if (attributes.size() == 0) {
                errorMessage("no attributes declared");
            }
     
            m_Data = new Instances(relationName, attributes, capacity);
        }
View Full Code Here

                                            + "@end " + attributeName);
                        }
                    } while (true);
         
                    // Make relation and restore original set of attributes
                    Instances relation = new Instances(attributeName, attributes,
                            0);

                    attributes = atts;
                    attributes.addElement(
                            new Attribute(attributeName, relation,
View Full Code Here

         * Returns the header format
         *
         * @return      the header format
         */
        public Instances getStructure() {
            return new Instances(m_Data, 0);
        }
View Full Code Here

                    throw new IOException(
                            "Cannot mix getting instances in both incremental and batch modes");
                }
                setRetrieval(NONE)
                m_datasetPseudoInc = getDataSet();
                m_structure = new Instances(m_datasetPseudoInc, 0);
                setRetrieval(NONE);
                return m_structure;
            }
            if (m_structure == null) {
                if (m_checkForTable) {
                    if (!m_DataBaseConnection.tableExists(endOfQuery(true))) {
                        throw new IOException(
                                "Table does not exist according to metadata from JDBC driver. "
                                        + "If you are convinced the table exists, set 'checkForTable' "
                                        + "to 'False' in your DatabaseUtils.props file and try again.");
                    }
                }
                // finds out which SQL statement to use for the DBMS to limit the number of resulting rows to one
                int choice = 0;
                boolean rightChoice = false;

                while (!rightChoice) {
                    try {
                        if (m_DataBaseConnection.execute(
                                limitQuery(m_query, 0, choice))
                                        == false) {
                            throw new IOException("Query didn't produce results");
                        }
                        m_choice = choice;
                        rightChoice = true;
                    } catch (SQLException ex) {
                        choice++;
                        if (choice == 3) {
                            System.out.println(
                                    "Incremental loading not supported for that DBMS. Pseudoincremental mode is used if you use incremental loading.\nAll rows are loaded into memory once and retrieved incrementally from memory instead of from the database.");
                            m_pseudoIncremental = true;
                            break pseudo;
                        }
                    }
                }
                String end = endOfQuery(false);
                ResultSet rs = m_DataBaseConnection.getResultSet();
                ResultSetMetaData md = rs.getMetaData();

                rs.close();
                int numAttributes = md.getColumnCount();
                int[] attributeTypes = new int[numAttributes];

                m_nominalIndexes = new Hashtable[numAttributes];
                m_nominalStrings = new FastVector[numAttributes];
                for (int i = 1; i <= numAttributes; i++) {
                    switch (m_DataBaseConnection.translateDBColumnType(
                            md.getColumnTypeName(i))) {
                    case DatabaseUtils.STRING:
                        // System.err.println("String --> nominal");
                        ResultSet rs1;
                        String columnName = md.getColumnName(i);

                        if (m_DataBaseConnection.getUpperCase()) {
                            columnName = columnName.toUpperCase();
                        }
                        m_nominalIndexes[i - 1] = new Hashtable();
                        m_nominalStrings[i - 1] = new FastVector();
                        String query = "SELECT COUNT(DISTINCT( " + columnName
                                + " )) FROM " + end;

                        if (m_DataBaseConnection.execute(query) == true) {
                            rs1 = m_DataBaseConnection.getResultSet();
                            rs1.next();
                            int count = rs1.getInt(1);

                            rs1.close();
                            if (count > m_nominalToStringLimit
                                    || m_DataBaseConnection.execute(
                                            "SELECT DISTINCT ( " + columnName
                                            + " ) FROM " + end)
                                                    == false) {
                                attributeTypes[i - 1] = Attribute.STRING;
                                break;
                            }
                            rs1 = m_DataBaseConnection.getResultSet();
                        } else {
                            // System.err.println("Count for nominal values cannot be calculated. Attribute "+columnName+" treated as String.");
                            attributeTypes[i - 1] = Attribute.STRING;
                            break;
                        }
                        attributeTypes[i - 1] = Attribute.NOMINAL;
                        stringToNominal(rs1, i);
                        rs1.close();
                        break;

                    case DatabaseUtils.TEXT:
                        // System.err.println("boolean --> string");
                        columnName = md.getColumnName(i);
                        if (m_DataBaseConnection.getUpperCase()) {
                            columnName = columnName.toUpperCase();
                        }
                        m_nominalIndexes[i - 1] = new Hashtable();
                        m_nominalStrings[i - 1] = new FastVector();
                        query = "SELECT COUNT(DISTINCT( " + columnName
                                + " )) FROM " + end;
                        if (m_DataBaseConnection.execute(query) == true) {
                            rs1 = m_DataBaseConnection.getResultSet();
                            stringToNominal(rs1, i);
                            rs1.close();
                        }
                        attributeTypes[i - 1] = Attribute.STRING;
                        break;

                    case DatabaseUtils.BOOL:
                        // System.err.println("boolean --> nominal");
                        attributeTypes[i - 1] = Attribute.NOMINAL;
                        m_nominalIndexes[i - 1] = new Hashtable();
                        m_nominalIndexes[i - 1].put("false", new Double(0));
                        m_nominalIndexes[i - 1].put("true", new Double(1));
                        m_nominalStrings[i - 1] = new FastVector();
                        m_nominalStrings[i - 1].addElement("false");
                        m_nominalStrings[i - 1].addElement("true");
                        break;

                    case DatabaseUtils.DOUBLE:
                        // System.err.println("BigDecimal --> numeric");
                        attributeTypes[i - 1] = Attribute.NUMERIC;
                        break;

                    case DatabaseUtils.BYTE:
                        // System.err.println("byte --> numeric");
                        attributeTypes[i - 1] = Attribute.NUMERIC;
                        break;

                    case DatabaseUtils.SHORT:
                        // System.err.println("short --> numeric");
                        attributeTypes[i - 1] = Attribute.NUMERIC;
                        break;

                    case DatabaseUtils.INTEGER:
                        // System.err.println("int --> numeric");
                        attributeTypes[i - 1] = Attribute.NUMERIC;
                        break;

                    case DatabaseUtils.LONG:
                        // System.err.println("long --> numeric");
                        attributeTypes[i - 1] = Attribute.NUMERIC;
                        break;

                    case DatabaseUtils.FLOAT:
                        // System.err.println("float --> numeric");
                        attributeTypes[i - 1] = Attribute.NUMERIC;
                        break;

                    case DatabaseUtils.DATE:
                        attributeTypes[i - 1] = Attribute.DATE;
                        break;

                    default:
                        // System.err.println("Unknown column type");
                        attributeTypes[i - 1] = Attribute.STRING;
                    }
                }
                FastVector attribInfo = new FastVector();

                for (int i = 0; i < numAttributes; i++) {

                    /* Fix for databases that uppercase column names */
                    // String attribName = attributeCaseFix(md.getColumnName(i + 1));
                    String attribName = md.getColumnName(i + 1);

                    switch (attributeTypes[i]) {
                    case Attribute.NOMINAL:
                        attribInfo.addElement(
                                new Attribute(attribName, m_nominalStrings[i]));
                        break;

                    case Attribute.NUMERIC:
                        attribInfo.addElement(new Attribute(attribName));
                        break;

                    case Attribute.STRING:
                        Attribute att = new Attribute(attribName,
                                (FastVector) null);

                        for (int n = 0; n < m_nominalStrings[i].size(); n++) {
                            att.addStringValue(
                                    (String) m_nominalStrings[i].elementAt(n));
                        }
                        attribInfo.addElement(att);
                        break;

                    case Attribute.DATE:
                        attribInfo.addElement(
                                new Attribute(attribName, (String) null));
                        break;

                    default:
                        throw new IOException("Unknown attribute type");
                    }
                }
                m_structure = new Instances(endOfQuery(true), attribInfo, 0);
                // get rid of m_idColumn
                if (m_DataBaseConnection.getUpperCase()) {
                    m_idColumn = m_idColumn.toUpperCase();
                }
                // System.out.println(m_structure.attribute(0).name().equals(idColumn));
                if (m_structure.attribute(0).name().equals(m_idColumn)) {
                    m_oldStructure = new Instances(m_structure, 0);
                    m_oldStructure.deleteAttributeAt(0);
                    // System.out.println(m_structure);
                } else {
                    m_oldStructure = new Instances(m_structure, 0);
                }
            } else {
                if (m_oldStructure == null) {
                    m_oldStructure = new Instances(m_structure, 0);
                }
            }
            m_DataBaseConnection.disconnectFromDatabase();
        } catch (Exception ex) {
            ex.printStackTrace();
View Full Code Here

                    "Cannot mix getting Instances in both incremental and batch modes");
        }
        setRetrieval(BATCH);
        connectToDatabase();
   
        Instances result = null;

        try {
            if (m_DataBaseConnection.execute(m_query) == false) {
                throw new Exception("Query didn't produce results");
            }
            ResultSet rs = m_DataBaseConnection.getResultSet();
            ResultSetMetaData md = rs.getMetaData();
            // Determine structure of the instances
            int numAttributes = md.getColumnCount();
            int[] attributeTypes = new int[numAttributes];

            m_nominalIndexes = new Hashtable[numAttributes];
            m_nominalStrings = new FastVector[numAttributes];
            for (int i = 1; i <= numAttributes; i++) {
                switch (m_DataBaseConnection.translateDBColumnType(
                        md.getColumnTypeName(i))) {
 
                case DatabaseUtils.STRING:
                    ResultSet rs1;
                    String columnName = md.getColumnName(i);

                    if (m_DataBaseConnection.getUpperCase()) {
                        columnName = columnName.toUpperCase();
                    }
                    String end = endOfQuery(false);

                    m_nominalIndexes[i - 1] = new Hashtable();
                    m_nominalStrings[i - 1] = new FastVector();
                    if (m_DataBaseConnection.execute(
                            "SELECT DISTINCT ( " + columnName + " ) FROM " + end)
                                    == false) {
                        throw new Exception("Nominal values cannot be retrieved");
                    }
                    rs1 = m_DataBaseConnection.getResultSet();
                    attributeTypes[i - 1] = Attribute.NOMINAL;
                    stringToNominal(rs1, i);
                    rs1.close()
                    break;

                case DatabaseUtils.TEXT:
                    columnName = md.getColumnName(i);
                    if (m_DataBaseConnection.getUpperCase()) {
                        columnName = columnName.toUpperCase();
                    }
                    end = endOfQuery(false);
                    m_nominalIndexes[i - 1] = new Hashtable();
                    m_nominalStrings[i - 1] = new FastVector();
                    if (m_DataBaseConnection.execute(
                            "SELECT DISTINCT ( " + columnName + " ) FROM " + end)
                                    == false) {
                        throw new Exception("Nominal values cannot be retrieved");
                    }
                    rs1 = m_DataBaseConnection.getResultSet();
                    attributeTypes[i - 1] = Attribute.STRING;
                    stringToNominal(rs1, i);
                    rs1.close()
                    break;

                case DatabaseUtils.BOOL:
                    // System.err.println("boolean --> nominal");
                    attributeTypes[i - 1] = Attribute.NOMINAL;
                    m_nominalIndexes[i - 1] = new Hashtable();
                    m_nominalIndexes[i - 1].put("false", new Double(0));
                    m_nominalIndexes[i - 1].put("true", new Double(1));
                    m_nominalStrings[i - 1] = new FastVector();
                    m_nominalStrings[i - 1].addElement("false");
                    m_nominalStrings[i - 1].addElement("true");
                    break;

                case DatabaseUtils.DOUBLE:
                    // System.err.println("BigDecimal --> numeric");
                    attributeTypes[i - 1] = Attribute.NUMERIC;
                    break;

                case DatabaseUtils.BYTE:
                    // System.err.println("byte --> numeric");
                    attributeTypes[i - 1] = Attribute.NUMERIC;
                    break;

                case DatabaseUtils.SHORT:
                    // System.err.println("short --> numeric");
                    attributeTypes[i - 1] = Attribute.NUMERIC;
                    break;

                case DatabaseUtils.INTEGER:
                    // System.err.println("int --> numeric");
                    attributeTypes[i - 1] = Attribute.NUMERIC;
                    break;

                case DatabaseUtils.LONG:
                    // System.err.println("long --> numeric");
                    attributeTypes[i - 1] = Attribute.NUMERIC;
                    break;

                case DatabaseUtils.FLOAT:
                    // System.err.println("float --> numeric");
                    attributeTypes[i - 1] = Attribute.NUMERIC;
                    break;

                case DatabaseUtils.DATE:
                    attributeTypes[i - 1] = Attribute.DATE;
                    break;

                default:
                    // System.err.println("Unknown column type");
                    attributeTypes[i - 1] = Attribute.STRING;
                }
            }

            // Step through the tuples
            // System.err.println("Creating instances...");
            FastVector instances = new FastVector();

            while (rs.next()) {
                double[] vals = new double[numAttributes];

                for (int i = 1; i <= numAttributes; i++) {
                    switch (m_DataBaseConnection.translateDBColumnType(
                            md.getColumnTypeName(i))) {
                    case DatabaseUtils.STRING:
                        String str = rs.getString(i);
   
                        if (rs.wasNull()) {
                            vals[i - 1] = Instance.missingValue();
                        } else {
                            Double index = (Double) m_nominalIndexes[i - 1].get(
                                    str);

                            if (index == null) {
                                index = new Double(
                                        m_structure.attribute(i - 1).addStringValue(
                                                str));
                            }
                            vals[i - 1] = index.doubleValue();
                        }
                        break;

                    case DatabaseUtils.TEXT:
                        str = rs.getString(i);

                        if (rs.wasNull()) {
                            vals[i - 1] = Instance.missingValue();
                        } else {
                            Double index = (Double) m_nominalIndexes[i - 1].get(
                                    str);

                            if (index == null) {
                                index = new Double(
                                        m_structure.attribute(i - 1).addStringValue(
                                                str));
                            }
                            vals[i - 1] = index.doubleValue();
                        }
                        break;

                    case DatabaseUtils.BOOL:
                        boolean boo = rs.getBoolean(i);

                        if (rs.wasNull()) {
                            vals[i - 1] = Instance.missingValue();
                        } else {
                            vals[i - 1] = (boo ? 1.0 : 0.0);
                        }
                        break;

                    case DatabaseUtils.DOUBLE:
                        double dd = rs.getDouble(i);

                        if (rs.wasNull()) {
                            vals[i - 1] = Instance.missingValue();
                        } else {
                            vals[i - 1] = dd;
                        }
                        break;

                    case DatabaseUtils.BYTE:
                        byte by = rs.getByte(i);

                        if (rs.wasNull()) {
                            vals[i - 1] = Instance.missingValue();
                        } else {
                            vals[i - 1] = by;
                        }
                        break;

                    case DatabaseUtils.SHORT:
                        short sh = rs.getByte(i);

                        if (rs.wasNull()) {
                            vals[i - 1] = Instance.missingValue();
                        } else {
                            vals[i - 1] = sh;
                        }
                        break;

                    case DatabaseUtils.INTEGER:
                        int in = rs.getInt(i);

                        if (rs.wasNull()) {
                            vals[i - 1] = Instance.missingValue();
                        } else {
                            vals[i - 1] = in;
                        }
                        break;

                    case DatabaseUtils.LONG:
                        long lo = rs.getLong(i);

                        if (rs.wasNull()) {
                            vals[i - 1] = Instance.missingValue();
                        } else {
                            vals[i - 1] = lo;
                        }
                        break;

                    case DatabaseUtils.FLOAT:
                        float fl = rs.getFloat(i);

                        if (rs.wasNull()) {
                            vals[i - 1] = Instance.missingValue();
                        } else {
                            vals[i - 1] = fl;
                        }
                        break;

                    case DatabaseUtils.DATE:
                        Date date = rs.getDate(i);

                        if (rs.wasNull()) {
                            vals[i - 1] = Instance.missingValue();
                        } else {
                            // TODO: Do a value check here.
                            vals[i - 1] = date.getTime();
                        }
                        break;

                    default:
                        vals[i - 1] = Instance.missingValue();
                    }
                }
                Instance newInst;

                newInst = new Instance(1.0, vals);
                instances.addElement(newInst);
            }  
   
            // Create the header and add the instances to the dataset
            // System.err.println("Creating header...");
            FastVector attribInfo = new FastVector();

            for (int i = 0; i < numAttributes; i++) {

                /* Fix for databases that uppercase column names */
                // String attribName = attributeCaseFix(md.getColumnName(i + 1));
                String attribName = md.getColumnName(i + 1);

                switch (attributeTypes[i]) {
                case Attribute.NOMINAL:
                    attribInfo.addElement(
                            new Attribute(attribName, m_nominalStrings[i]));
                    break;

                case Attribute.NUMERIC:
                    attribInfo.addElement(new Attribute(attribName));
                    break;

                case Attribute.STRING:
                    Attribute att = new Attribute(attribName, (FastVector) null);

                    attribInfo.addElement(att);
                    for (int n = 0; n < m_nominalStrings[i].size(); n++) {
                        att.addStringValue(
                                (String) m_nominalStrings[i].elementAt(n));
                    }
                    break;

                case Attribute.DATE:
                    attribInfo.addElement(
                            new Attribute(attribName, (String) null));
                    break;

                default:
                    throw new IOException("Unknown attribute type");
                }
            }
            result = new Instances(endOfQuery(true), attribInfo,
                    instances.size());
            for (int i = 0; i < instances.size(); i++) {
                result.add((Instance) instances.elementAt(i));
            }
            rs.close();
            m_DataBaseConnection.disconnectFromDatabase();
            // get rid of m_idColumn
            if (m_DataBaseConnection.getUpperCase()) {
                m_idColumn = m_idColumn.toUpperCase();
            }
            if (result.attribute(0).name().equals(m_idColumn)) {
                result.deleteAttributeAt(0);
            }
            m_structure = new Instances(result, 0);
        } catch (Exception ex) {
            printException(ex);
            StringBuffer text = new StringBuffer();

            if (m_query.equals("Select * from Results0")) {
View Full Code Here

            atf.setOptions(options);
            atf.setSource(atf.getUrl(), atf.getUser(), atf.getPassword());
            if (!atf.m_inc) {
                System.out.println(atf.getDataSet());
            } else {
                Instances structure = atf.getStructure();

                System.out.println(structure);
                Instance temp;

                do {
View Full Code Here

                        "Unable to determine structure as arff (Reason: "
                                + ex.toString() + ").");
            }
        }

        return new Instances(m_structure, 0);
    }
View Full Code Here

TOP

Related Classes of org.integratedmodelling.riskwiz.learning.data.Instances

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.