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

📄 c45.java

📁 Fast implementation of C4/5 in Java
💻 JAVA
字号:
/** * @(#)C45.java        1.5.0 09/01/18 */package ml.classifier.dt;import ml.dataset.DataSet;import ml.dataset.UCIDataSet;import ml.util.TreeView;import ml.util.Stopwatch;import ml.util.HtmlTreeView;import ml.util.PlainTreeView;/** * The main class of Fast C4.5. * * @author Ping He * @author Xiaohua Xu */public class C45 {	/**	 * The c45 decision tree	 */	private DecisionTree tree;	/**	 * Build a decision tree with the specified data set files.	 * @param dataSetName the base name of the .names, .data and .test files	 */	public C45(String dataSetName){		DataSet dataSet = new UCIDataSet(dataSetName);		this.tree = new DecisionTree(dataSet);	}	/**	 * Get the decision tree.	 */	public DecisionTree getDecisionTree(){		return this.tree;	}	/**	 * Build a decision tree with the specified .names and .data files, prune it and print it in	 * the specified manner. 	 */	public static void main(String[] args) {		C45 c45 = null;		String dataSetName;		String output = "plain";		int repeat = 0;		TreeView view = null;		String buildTime = "";			// Illegal input		if (args.length == 0) {		    usage();			return;		}		// Ask for help		if (args.length == 1) {			if (args[0].equalsIgnoreCase("-h") || args[0].equalsIgnoreCase("-help")){				usage();				return;			}		}			    dataSetName = args[0];	    // Interpret the options		for (int i = 1; i < args.length-1; i += 2) {			if (args[i].equals("-output") || args[i].equals("-o")) {				output = args[i+1];				continue;			}						if (args[i].equals("-repeat") || args[i].equals("-r")) {				repeat = Integer.parseInt(args[i+1]);				continue;			}		}		Stopwatch.start();		for(int i = 0; i < Math.max(1, repeat); i ++) {			c45 = new C45(dataSetName);		}		Stopwatch.stop();				// Compute the averaged tree building time		if (repeat > 0) {		    buildTime = "build time : " + Stopwatch.runtime()/repeat + "ms";        }      		DecisionTree tree = c45.getDecisionTree();		                if (!output.equals("plain") && !output.equals("html")) {        	System.out.println("Waring:Unsupported Output!");        	output = "plain";        }                if(output.equals("plain")) {        	view = plainView(tree, buildTime);        }                if(output.equals("html")) {        	view = htmlView(tree, buildTime);        }        		System.out.println(view); 	}	private static TreeView plainView(DecisionTree tree, String buildTime){		TreeView v1 = new PlainTreeView(tree);		v1.insert("Tree Before Pruning");		v1.append("tree size : " + tree.size());		v1.append("train error : " + tree.getTrainError());		v1.append(buildTime+TreeView.CR);				tree.prune();				TreeView v2 = new PlainTreeView(tree);		v2.insert("Tree After Pruning");		v2.append("tree size : " + tree.size());		v2.append("train error : " + tree.getTrainError());				return v1.union(v2);	} 	private static TreeView htmlView(DecisionTree tree, String buildTime) {		TreeView v1 = new HtmlTreeView(tree);		v1.insert("<h2>Tree Before Pruning</h2>");		v1.append("<p>tree size : "+tree.size()+"<br>");		v1.append("train error : "+tree.getTrainError()+"<br>");		v1.append(buildTime+"</p>").append(TreeView.CR);				tree.prune();				TreeView v2 = new HtmlTreeView(tree);		v2.insert("<h2>Tree After Pruning</h2>");		v2.append("<p>tree size : "+tree.size()+"<br>");		v2.append("train error : "+tree.getTrainError()+"</p>");				return v1.union(v2);	}		 	private static void usage(String... messages) { 	    System.out.println("Usage: java " + C45.class + " dataSetName [-output plain | html -repeat times]"); 	    for (String line : messages) { 	    	System.out.println(line); 	    }	}}

⌨️ 快捷键说明

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