/* * RapidMiner * * Copyright (C) 2001-2011 by Rapid-I and the contributors * * Complete list of developers available at our web site: * * http://rapid-i.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ package com.rapidminer.gui.renderer.models; import java.util.Iterator; import com.rapidminer.datatable.AbstractDataTable; import com.rapidminer.datatable.DataTable; import com.rapidminer.datatable.DataTableRow; import com.rapidminer.gui.renderer.AbstractDataTableTableRenderer; import com.rapidminer.operator.IOContainer; import com.rapidminer.operator.learner.local.LocalPolynomialRegressionModel; import com.rapidminer.operator.learner.local.LocalPolynomialRegressionModel.RegressionData; /** * This class provides a viewer for the LocalPolynomialRegressionModel. It provides a table view on all stored examples * values. * * @author Sebastian Land */ public class LocalPolynomialRegressionModelTableRenderer extends AbstractDataTableTableRenderer { public static class LocalPolynomialRegressionModelDataTable extends AbstractDataTable { private LocalPolynomialRegressionModel model; public LocalPolynomialRegressionModelDataTable(String name, LocalPolynomialRegressionModel model) { super(name); this.model = model; } @Override public void add(DataTableRow row) { } @Override public int getColumnIndex(String name) { if (name.equals("Label")) return 0; else if (name.equals("Weight")) return 1; else { int i = 2; for (String attrName : model.getAttributeNames()) { if (attrName.equals(name)) return i; i++; } } return 0; } @Override public String getColumnName(int column) { if (column == 0) return "Label"; if (column == 1) return "Weight"; return model.getAttributeNames()[column - 2]; } @Override public double getColumnWeight(int i) { return 1; } @Override public int getNumberOfColumns() { if (model.getSamples().size() > 0) { RegressionData data = model.getSamples().get(0); return data.getExampleValues().length + 2; } else return 0; } @Override public int getNumberOfRows() { return model.getSamples().size(); } @Override public int getNumberOfSpecialColumns() { return 0; } @Override public int getNumberOfValues(int column) { return 0; } @Override public DataTableRow getRow(final int index) { return new DataTableRow() { @Override public String getId() { return index + ""; } @Override public int getNumberOfValues() { RegressionData data = model.getSamples().get(index); return data.getExampleValues().length + 2; } @Override public double getValue(int columnIndex) { RegressionData data = model.getSamples().get(index); if (columnIndex == 0) return data.getExampleLabel(); if (columnIndex == 1) return data.getExampleWeight(); return data.getExampleValues()[columnIndex - 2]; } }; } @Override public boolean isDate(int index) { return false; } @Override public boolean isDateTime(int index) { return false; } @Override public boolean isNominal(int index) { return false; } @Override public boolean isNumerical(int index) { return true; } @Override public boolean isSpecial(int column) { return false; } @Override public boolean isSupportingColumnWeights() { return false; } @Override public boolean isTime(int index) { return false; } @Override public Iterator<DataTableRow> iterator() { return new Iterator<DataTableRow>() { private int rowIndex = 0; @Override public boolean hasNext() { return rowIndex < getNumberOfRows(); } @Override public DataTableRow next() { DataTableRow row = getRow(this.rowIndex); this.rowIndex++; return row; } @Override public void remove() { } }; } @Override public String mapIndex(int column, int index) { return ""; } @Override public int mapString(int column, String value) { return 0; } @Override public DataTable sample(int newSize) { return this; } } @Override public DataTable getDataTable(Object renderable, IOContainer ioContainer, boolean isRendering) { final LocalPolynomialRegressionModel model = (LocalPolynomialRegressionModel) renderable; return new LocalPolynomialRegressionModelDataTable("Training Data", model); } @Override public boolean isAutoresize() { return false; } }