📄 memoryexampletable.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 + -