⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memoryexampletable.java

📁 著名的开源仿真软件yale
💻 JAVA
字号:
/* *  YALE - Yet Another Learning Environment *  Copyright (C) 2002, 2003 *      Simon Fischer, Ralf Klinkenberg, Ingo Mierswa,  *          Katharina Morik, Oliver Ritthoff *      Artificial Intelligence Unit *      Computer Science Department *      University of Dortmund *      44221 Dortmund,  Germany *  email: yale@ls8.cs.uni-dortmund.de *  web:   http://yale.cs.uni-dortmund.de/ * *  This program is free software; you can redistribute it and/or *  modify it under the terms of the GNU General Public License as  *  published by the Free Software Foundation; either version 2 of the *  License, or (at your option) any later version.  * *  This program is distributed in the hope that it will be useful, but *  WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *  General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *  USA. */package edu.udo.cs.yale.example;import edu.udo.cs.yale.tools.LogService;import java.io.File;import java.io.IOException;import java.io.StreamTokenizer;import java.util.Iterator;import java.util.List;import java.util.LinkedList;/** This class is the core data supplier for example sets. *  Several example sets can use the same data and access the attribute values *  by reference. In this case the data is hold in the main memory during the  *  experiment. * *  @author Simon, Ingo *  @version $Id: MemoryExampleTable.java,v 2.7 2003/09/10 13:02:06 fischer Exp $ */public class MemoryExampleTable extends ExampleTable {    /** List of {@link DataRow}. */    private LinkedList dataList = null;    /** Number of columns. */    private int columns;    /** Number of clumns to add when new columns are allocated. */    private static final int INCREMENT = 10;    /** Creates a new instance of MemoryExampleTable.     *  @param attributes List of {@link Attribute} containing the attributes of the columns.     *                    None of these must be null.     *  */    public MemoryExampleTable(List attributes) {	super(attributes);	this.columns = attributes.size();    }    public MemoryExampleTable(List attributes, DataRowReader i) {	this(attributes);	readExamples(i);    }    /** Reads the examples into memory. */    public void readExamples(DataRowReader i) {	dataList = new LinkedList();	double[] minimum = new double[columns];	double[] maximum = new double[columns];	double[] average = new double[columns];	for (int n = 0; n < columns; n++) {	    minimum[n] = Double.POSITIVE_INFINITY;	    maximum[n] = Double.NEGATIVE_INFINITY;	    average[n] = 0;	}		boolean first = true;	int numberOfAttributes = getNumberOfAttributes();	while (i.hasNext()) {	    DataRow row = i.next();	    if (first && (row instanceof SparseMapDataRow)) {		setSparse(true);	    }	    first = false;	    for (int n = 0; n < numberOfAttributes; n++) {		Attribute attribute = getAttribute(n);		if (!Double.isNaN(row.get(attribute))) {		    double value = row.get(attribute);		    if (minimum[n] > value) minimum[n] = value;		    if (maximum[n] < value) maximum[n] = value;		    average[n] += value;		}	    }	    dataList.add(row);	}	for (int n = 0; n < getNumberOfAttributes(); n++) {	    average[n] /= getSize();	    Attribute attribute = getAttribute(n);	    attribute.setMinimum(minimum[n]);	    attribute.setMaximum(maximum[n]);	    attribute.setAverage(average[n]);	}    }    public DataRowReader getDataReader() {	return new ListDataRowReader(dataList.iterator());    }    public int getSize() { 	return dataList.size();     }    public int addAttribute(Attribute attribute) {	int index = super.addAttribute(attribute);	if (dataList == null) return index;	int n = getNumberOfAttributes();	if (n <= columns) return index;	int newSize = n + INCREMENT;	LogService.logMessage("Resizing example table from " + columns + " to " + 			      newSize + " columns.", LogService.STATUS);	columns = newSize;	if (dataList != null) {	    Iterator i = dataList.iterator();	    while (i.hasNext())		((DataRow)i.next()).ensureNumberOfColumns(columns);	}	return index;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -