📄 featurefilter.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.operator;import edu.udo.cs.yale.example.ExampleSet;import edu.udo.cs.yale.example.Attribute;import edu.udo.cs.yale.tools.LogService;/** * This is an abstract superclass for feature filters. These operators * take an <code>ExampleSet</code> as input and switch off all features that * fulfill a condition. Subclasses must implement the condition in the method * <code>switchOffFeature()</code>, which returns a boolean. * @version $Id: FeatureFilter.java,v 2.3 2003/07/03 16:01:30 fischer Exp $ */public abstract class FeatureFilter extends Operator{ private static final Class[] INPUT_CLASSES = { ExampleSet.class }; private static final Class[] OUTPUT_CLASSES = { ExampleSet.class }; /** * Must be implemented by subclasses. When operators extending this class * are applied, they loop through the set of features and switch off all features * for which this method returns TRUE, while keeping the status of the other * features. * * @param theFeature Feature to check. * @return TRUE if this feature should <b>not</b> be active in the output example * set of this operator. FALSE otherwise. */ public abstract boolean switchOffFeature(Attribute theFeature) throws OperatorException; /** * Applies filtering of features by looping through all features and checking * <code>switchOffFeature()</code>. If TRUE is returned, the feature is * switched off, ie it won't be used by the following operators in the chain. * If FALSE is returned by <code>switchOffFeature()</code>, the feature will * keep its previous status. * * @return An array of IOObjects, with the output example set as the only member. */ public IOObject[] apply() throws OperatorException { ExampleSet eSet = (ExampleSet)((ExampleSet)getInput(ExampleSet.class)).clone(); LogService.logMessage("FeatureFilter: found " + eSet.getNumberOfAttributes() + " features.", LogService.STATUS); // loop through the features: int i = 0; while (i < eSet.getNumberOfAttributes()) { Attribute attribute = eSet.getAttribute(i); if (switchOffFeature(attribute)) { eSet.removeAttribute(attribute); } else { i++; } } LogService.logMessage("FeatureFilter: " + eSet.getNumberOfAttributes() + " features left after filtering.", LogService.STATUS); return new IOObject[] { eSet }; // this is a clone! } public Class[] getInputClasses() { return INPUT_CLASSES; } public Class[] getOutputClasses() { return OUTPUT_CLASSES; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -