All Downloads are FREE. Search and download functionalities are using the official Maven repository.

weka.classifiers.trees.M5P Maven / Gradle / Ivy

Go to download

The Waikato Environment for Knowledge Analysis (WEKA), a machine learning workbench. This version represents the developer version, the "bleeding edge" of development, you could say. New functionality gets added to this version.

There is a newer version: 3.9.6
Show newest version
/*
 *   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 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 General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see .
 */

/*
 *    M5P.java
 *    Copyright (C) 2001-2012 University of Waikato, Hamilton, New Zealand
 *
 */

package weka.classifiers.trees;

import java.util.Enumeration;
import java.util.Vector;

import weka.classifiers.trees.m5.M5Base;
import weka.classifiers.trees.m5.Rule;
import weka.core.Drawable;
import weka.core.Option;
import weka.core.RevisionUtils;
import weka.core.Utils;

/**
 *  M5Base. Implements base routines for generating M5
 * Model trees and rules
* The original algorithm M5 was invented by R. Quinlan and Yong Wang made * improvements.
*
* For more information see:
*
* Ross J. Quinlan: Learning with Continuous Classes. In: 5th Australian Joint * Conference on Artificial Intelligence, Singapore, 343-348, 1992.
*
* Y. Wang, I. H. Witten: Induction of model trees for predicting continuous * classes. In: Poster papers of the 9th European Conference on Machine * Learning, 1997. *

* * * BibTeX: * *

 * @inproceedings{Quinlan1992,
 *    address = {Singapore},
 *    author = {Ross J. Quinlan},
 *    booktitle = {5th Australian Joint Conference on Artificial Intelligence},
 *    pages = {343-348},
 *    publisher = {World Scientific},
 *    title = {Learning with Continuous Classes},
 *    year = {1992}
 * }
 * 
 * @inproceedings{Wang1997,
 *    author = {Y. Wang and I. H. Witten},
 *    booktitle = {Poster papers of the 9th European Conference on Machine Learning},
 *    publisher = {Springer},
 *    title = {Induction of model trees for predicting continuous classes},
 *    year = {1997}
 * }
 * 
*

* * * Valid options are: *

* *

 * -N
 *  Use unpruned tree/rules
 * 
* *
 * -U
 *  Use unsmoothed predictions
 * 
* *
 * -R
 *  Build regression tree/rule rather than a model tree/rule
 * 
* *
 * -M <minimum number of instances>
 *  Set minimum number of instances per leaf
 *  (default 4)
 * 
* *
 * -L
 *  Save instances at the nodes in
 *  the tree (for visualization purposes)
 * 
* * * * @author Mark Hall * @version $Revision: 14508 $ */ public class M5P extends M5Base implements Drawable { /** for serialization */ static final long serialVersionUID = -6118439039768244417L; /** * returns information about the classifier * * @return a description suitable for displaying in the explorer/experimenter * gui */ public String globalInfo() { return "Implements the M5' model tree algorithm. " + "The original M5 algorithm was developed by R. Quinlan. Yong Wang " + "made improvements leading to M5'.\n\n" + "For more information see:\n\n" + getTechnicalInformation().toString(); } /** * Creates a new M5P instance. */ public M5P() { super(); setGenerateRules(false); } /** * Returns the type of graph this classifier represents. * * @return Drawable.TREE */ @Override public int graphType() { return Drawable.TREE; } /** * Return a dot style String describing the tree. * * @return a String value * @throws Exception if an error occurs */ @Override public String graph() throws Exception { StringBuffer text = new StringBuffer(); text.append("digraph M5Tree {\n"); Rule temp = m_ruleSet.get(0); temp.topOfTree().graph(text); text.append("}\n"); return text.toString(); } /** * Returns the tip text for this property * * @return tip text for this property suitable for displaying in the * explorer/experimenter gui */ public String saveInstancesTipText() { return "Whether to save instance data at each node in the tree for " + "visualization purposes."; } /** * Set whether to save instance data at each node in the tree for * visualization purposes * * @param save a boolean value */ public void setSaveInstances(boolean save) { m_saveInstances = save; } /** * Get whether instance data is being save. * * @return a boolean value */ public boolean getSaveInstances() { return m_saveInstances; } /** * Returns an enumeration describing the available options * * @return an enumeration of all the available options */ @Override public Enumeration




© 2015 - 2024 Weber Informatics LLC | Privacy Policy