亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? decisiontreetest.java

?? 學(xué)習(xí)數(shù)據(jù)挖掘時(shí)寫的決策樹算法
?? JAVA
字號(hào):
import java.io.*;
import java.sql.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

public class DecisionTreeTest extends JFrame{
	private File file=null;
	private DataModel dataModel=new DataModel();
	
	private DefaultTableModel tableModel=new DefaultTableModel();
	private JTable table=new JTable(tableModel);
	private Canvas treeView=new TreeCanvas(dataModel);
	private JTextArea rulesView=new JTextArea();			
	
	public DecisionTreeTest(){				
		initGUI();				
	}	
	
	private void initGUI(){
		this.setBounds(0,0,1024,768);
		this.setTitle("刑法分則決策");
		Container panel=this.getContentPane();
		panel.setLayout(new BorderLayout());
		JSplitPane viewSplitPane=new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS),new JScrollPane(rulesView,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
		viewSplitPane.setDividerLocation(400);
		viewSplitPane.setLastDividerLocation(0);
		viewSplitPane.setOneTouchExpandable(true);
		JSplitPane splitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,viewSplitPane,new JScrollPane(treeView,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
		splitPane.setDividerLocation(500);
		splitPane.setLastDividerLocation(0);
		splitPane.setOneTouchExpandable(true);
		panel.add(splitPane,BorderLayout.CENTER);
		JMenuBar menuBar=new JMenuBar();
		JMenu menu=new JMenu("文件");
		JMenuItem menuItem=new JMenuItem("打開文件");
		menuItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				JFileChooser fileChooser=new JFileChooser();
				fileChooser.setCurrentDirectory(new File("./data"));//設(shè)置當(dāng)前目錄                
				fileChooser.showOpenDialog(DecisionTreeTest.this);
				file=fileChooser.getSelectedFile();
				dataModel.clear();							
				dataModel.setFile(file);					
				dataModel.loadData();								
				dataModel.generateDecisionTree();			
				DecisionTreeTest.this.rulesView.setText(dataModel.getRules());
				DecisionTreeTest.this.treeView.repaint();
				DecisionTreeTest.this.loadData();				
			}
		});
		menuBar.add(menu);
		menu.add(menuItem);
		this.setJMenuBar(menuBar);		
		this.setVisible(true);
		this.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
	}
	
	private void loadData(){
		tableModel=new DefaultTableModel();							
		try{			
			BufferedReader reader=new BufferedReader(new FileReader(dataModel.getFile()));
			String headerline=reader.readLine();
			
			StringTokenizer fieldName=new StringTokenizer(headerline,",");
			String name="";
			while(fieldName.hasMoreTokens()){
				name=fieldName.nextToken();
				tableModel.addColumn("Name:"+name);
			}			
			String recordline=reader.readLine();						
			while(recordline!=null){			
				Vector record=new Vector();
				StringTokenizer field=new StringTokenizer(recordline,",");				
				while(field.hasMoreTokens()){
					record.add(field.nextToken());					
				}
				tableModel.addRow(record);				
				recordline=reader.readLine();
			}	
		}
		catch(IOException e){
		}
		table.setModel(tableModel);		
	}
	
	public static void main(String args[]){
		DecisionTreeTest treeTest=new DecisionTreeTest();				
	}
}

class TreeCanvas extends Canvas{
	private DataModel dataModel=null;
	public TreeCanvas(DataModel dataModel){
		this.dataModel=dataModel;
	}
	public void paint(Graphics g){
		super.paint(g);		
		dataModel.paintTree(g,350,50);		
	}
}

class DataModel{
	private Vector attributes=new Vector();
	private Vector samples=new Vector();	
	private String decisionAttribute="";
	private Node decisionTree=null;
	
	private File file;
	public void clear(){
		attributes.removeAllElements();
		samples.removeAllElements();
		decisionAttribute="";
		decisionTree=null;
	}

	public void setFile(File file){
		this.file=file;
	}
	public File getFile(){
		return this.file;
	}
	public void loadData(){		
		try{				    
			BufferedReader reader=new BufferedReader(new FileReader(file));
			String headerline=reader.readLine();			
			StringTokenizer fieldName=new StringTokenizer(headerline,",");
			String name="";
			while(fieldName.hasMoreTokens()){
				name=fieldName.nextToken();
				attributes.add(name);
			}
			this.setDecisionAttribute(name);			
			String recordline=reader.readLine();						
			while(recordline!=null){				
				Vector tempRecord=new Vector();
				StringTokenizer field=new StringTokenizer(recordline,",");				
				while(field.hasMoreTokens()){
					String value=field.nextToken();
					tempRecord.add(value);
				}
				Hashtable record=new Hashtable();
				for(int i=0;i<attributes.size();i++){
					record.put(attributes.get(i),tempRecord.get(i));
				}
				samples.add(record);				
				recordline=reader.readLine();
			}			
		}
		catch(IOException e){
		}		
	}
	
	public void setDecisionAttribute(String attribute){
		this.decisionAttribute=attribute;
	}	
	
	public void generateDecisionTree(){
		if(decisionTree==null) decisionTree=new Node();
		decisionTree.setDecisionAttribute(this.decisionAttribute);
		decisionTree.initattributeSet(attributes);
		decisionTree.generateDecisionTree(samples,attributes);
	}
	
	public String getRules(){
		decisionTree.generateRules();
		return decisionTree.getRules();
	}
	
	public void paintTree(Graphics g,int x,int y){
		if(decisionTree!=null)decisionTree.paintNode(g,x,y);
	}
}

class Node{
	private static double PI=3.1415926;
	private static int LEVEL_HIGHT=50;
	
	private String testAttribute="";	
	private Hashtable attributeValues=new Hashtable();
	private Hashtable childNodes=new Hashtable();
	private String decisionAttribute="";
	private static Vector rules=new Vector();
	private static Stack ruleStack=new Stack();
	private static Vector attributeSet=new Vector();
	
	public void setDecisionAttribute(String attribute){
		this.decisionAttribute=attribute;
	}
	public String getTestAttribute(){
		return this.testAttribute;
	}
	public String getDecisionAttribute(){
		return this.decisionAttribute;
	}
	public String selectTestAttribute(Vector sample,Vector attribute){
		if (!attribute.isEmpty())return (String)attribute.firstElement();	
		else return "";
	}
	public void initattributeSet(Vector attribute){
		for(int i=0;i<attribute.size();i++){
			attributeSet.add(attribute.get(i));
		}		
		attributeSet.remove(this.decisionAttribute);					
	}
	public void generateDecisionTree(Vector sample,Vector attribute){		
        //if Samples 都在同一類then結(jié)束遞歸調(diào)用,返回
		Vector tempSampleClass=new Vector();
		Iterator iter=sample.iterator();
		while(iter.hasNext()){
			Hashtable record=(Hashtable)iter.next();						
			String decisionAttributeValue=(String)record.get(this.decisionAttribute);
			if(!tempSampleClass.contains(decisionAttributeValue))
				tempSampleClass.add(decisionAttributeValue);
		}
		if(tempSampleClass.size()==1){		
			this.testAttribute=decisionAttribute;
			Hashtable record=(Hashtable)sample.get(0);			
			String testAttributeValue="";			
			testAttributeValue=(String)record.get(decisionAttribute);			
			this.attributeValues.put(testAttributeValue,new Vector());			
			return;//都在同一類then結(jié)束遞歸調(diào)用,返回			
		}				
		//選擇attibute中具有最高信息的屬性為testAttribute
		this.testAttribute=selectTestAttribute(sample,attribute);		
		//生成新的屬性集
		String tempAttribute="";
		Vector newAttribute=new Vector();
		if(!this.attributeSet.isEmpty())
		tempAttribute=(String)this.attributeSet.remove(attributeSet.indexOf(this.testAttribute));						
		for(int i=0;i<attributeSet.size();i++) newAttribute.add(attributeSet.get(i));		
		//根據(jù)testAttribute將樣本進(jìn)行劃分
	    iter=sample.iterator();
		while(iter.hasNext()){
			Hashtable record=(Hashtable)iter.next();
			String testAttributeValue=(String)record.get(this.testAttribute);
			if(attributeValues.containsKey(testAttributeValue)){
				((Vector)attributeValues.get(testAttributeValue)).add(record);					
			}
			else{
				Vector newRecordSet=new Vector();
				newRecordSet.add(record);
				attributeValues.put(testAttributeValue,newRecordSet);
			}
		}		
		//根據(jù)得到的每一個(gè)劃分為其建立對(duì)應(yīng)結(jié)點(diǎn),并遞歸地建立其子決策樹
		iter=attributeValues.keySet().iterator();
		while(iter.hasNext()){			
			//構(gòu)造新結(jié)點(diǎn)
			Node childNode=new Node();
			childNode.setDecisionAttribute(this.decisionAttribute);
			//生成新的樣本集
			String testAttributeValue=(String)iter.next();				
			Vector newSample=new Vector();				
			Vector v=(Vector)attributeValues.get(testAttributeValue);
			for(int i=0;i<v.size();i++) newSample.add(v.get(i));
			childNode.generateDecisionTree(newSample,newAttribute);			
			childNodes.put(testAttributeValue,childNode);				
		}		
		this.attributeSet.add(tempAttribute);					
	}
		
	public void generateRules(){		
		if(this.testAttribute.equals(this.decisionAttribute)){			
			String decisionValue="";
			Iterator iter=this.attributeValues.keySet().iterator();			
			if(iter.hasNext()) decisionValue=(String)iter.next();
			String newRule="IF ";
			for(int i=0;i<ruleStack.size()-1;i++){
				newRule+=(String)ruleStack.get(i)+" AND ";				
			}
			if(ruleStack.size()>=1)newRule+=ruleStack.get(ruleStack.size()-1);
			newRule+=" THEN "+this.decisionAttribute+":"+decisionValue;
			rules.add(newRule);
			return;
		}
		else{			
			Iterator iter=childNodes.keySet().iterator();			
			while(iter.hasNext()){				
				String testAttributeValue=(String)iter.next();				
				Node childNode=(Node)childNodes.get(testAttributeValue);				
				ruleStack.push(this.testAttribute+":"+testAttributeValue);				
				childNode.generateRules();
				ruleStack.pop();
			}
		}
	}
	
	public String getRules(){
		String decisions="\nRules:\n";
		for(int i=0;i<rules.size();i++){
			decisions=decisions+(String)rules.get(i)+";\n";
		}
		return decisions;
	}
	
	public void paintNode(Graphics g,int x,int y){
		g.setFont(new Font("黑體",Font.BOLD,18));
		g.setColor(Color.DARK_GRAY);
		g.fillOval(x+5,y+5,30,30);
		g.setColor(Color.YELLOW);
		g.fillOval(x,y,30,30);
		g.setColor(Color.BLACK);
		g.drawOval(x,y,30,30);		
		g.setColor(Color.RED);
		g.drawString(this.testAttribute,x,y);
		if(this.testAttribute.equals(this.decisionAttribute)){			
			String decisionValue="";
			Iterator iter=this.attributeValues.keySet().iterator();			
			if(iter.hasNext()) decisionValue=(String)iter.next();
			g.setColor(Color.BLUE);			
			g.drawString(decisionValue,x,y+LEVEL_HIGHT/2);
			return;
		}
		else{
			int childNum=this.childNodes.size();
			double perArc=PI*(120.0/180)/(childNum-1);
			double arc=PI*(30.0/180);		
			int newX=0,newY=0;				
			Iterator iter=this.childNodes.keySet().iterator();
			while(iter.hasNext()){
				String testAttributeValue=(String)iter.next();
				newX=x-(int)(LEVEL_HIGHT/Math.tan(arc));
				newY=y+(int)LEVEL_HIGHT;
				arc+=perArc;			
				g.setColor(Color.GREEN);				
				g.drawLine(x+15,y+15,newX+15,newY+15);
				g.setColor(Color.BLACK);
				g.drawString(testAttributeValue,(newX+x)/2,(newY+y)/2);
				Node childNode=(Node)this.childNodes.get(testAttributeValue);
				childNode.paintNode(g,newX,newY);
			}
		}		
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线精品一区二区| av色综合久久天堂av综合| 国产亚洲成av人在线观看导航| 97超碰欧美中文字幕| 日韩电影在线观看网站| 国产精品久久久久久久岛一牛影视| 欧美人与z0zoxxxx视频| av午夜一区麻豆| 免费欧美日韩国产三级电影| 亚洲人精品一区| 国产欧美一区二区三区沐欲| 欧美丰满一区二区免费视频 | 国产精品麻豆久久久| 日韩一区二区高清| 在线精品视频一区二区| 国产精品资源在线看| 男男视频亚洲欧美| 一区二区高清在线| 中文字幕在线不卡国产视频| 欧美精品一区二区三区蜜臀| 欧美精品三级日韩久久| 在线观看免费亚洲| 92国产精品观看| 国产成人精品一区二区三区四区 | 亚洲自拍偷拍欧美| 国产精品免费视频观看| 精品精品欲导航| 88在线观看91蜜桃国自产| 色先锋资源久久综合| www.66久久| 成人久久18免费网站麻豆 | 欧美日韩国产中文| 色网综合在线观看| 91猫先生在线| 91麻豆精东视频| 91香蕉视频污在线| 99国内精品久久| 99久久国产综合精品女不卡| av一二三不卡影片| av高清不卡在线| 97se亚洲国产综合自在线观| 99国产麻豆精品| 91日韩精品一区| 一本一道综合狠狠老| 99re这里只有精品视频首页| 99久久99久久综合| 91视频免费播放| 色综合久久综合中文综合网| 色婷婷激情一区二区三区| 91视视频在线直接观看在线看网页在线看| 丰满少妇在线播放bd日韩电影| 国产激情精品久久久第一区二区 | 日韩女优av电影在线观看| 日韩欧美一区中文| 精品电影一区二区三区| 国产三级精品三级| 国产精品久久久一本精品| 亚洲免费视频成人| 亚洲一区在线免费观看| 五月激情综合婷婷| 久久99久久精品| 国产精选一区二区三区| 国产91高潮流白浆在线麻豆| av资源站一区| 欧美日本一区二区三区四区| 日韩欧美视频在线| 国产欧美一区二区精品忘忧草| 日韩伦理电影网| 亚洲高清免费一级二级三级| 久久成人免费电影| 成人性生交大片免费看视频在线| 91丨porny丨在线| 91精品国产乱码| 日本一区二区三区视频视频| 亚洲一区二区三区不卡国产欧美| 青青青伊人色综合久久| 国产成人午夜精品5599| 日本韩国一区二区| 欧美一级艳片视频免费观看| 国产亚洲精品7777| 亚洲网友自拍偷拍| 国产精品自拍毛片| 欧洲精品一区二区三区在线观看| 日韩欧美国产综合在线一区二区三区| 成人手机电影网| 99国产精品国产精品久久| 欧美日韩一卡二卡三卡 | 成人国产一区二区三区精品| 欧美日韩一本到| 日本一区二区三区在线不卡 | 老司机精品视频在线| 99国产欧美久久久精品| 欧美一区二区三区系列电影| 国产精品视频你懂的| 欧美aⅴ一区二区三区视频| 99国产精品国产精品毛片| 日韩欧美国产系列| 亚洲老司机在线| 国产成人精品综合在线观看 | 亚洲天堂2016| 麻豆91免费观看| 一本久久精品一区二区| 久久先锋影音av鲁色资源网| 亚洲综合成人网| 不卡影院免费观看| 精品国产一区二区三区久久久蜜月| 一区二区三区高清不卡| 国产精品亚洲成人| 欧美一级精品在线| 亚洲国产精品影院| 成人福利电影精品一区二区在线观看| 日韩欧美一区二区在线视频| 亚洲午夜激情av| 91一区二区在线| 久久精品亚洲国产奇米99| 日韩成人一区二区三区在线观看| 99久久精品免费看国产免费软件| 久久久亚洲精品石原莉奈| 视频一区国产视频| 日本久久一区二区三区| 国产精品妹子av| 国产自产视频一区二区三区| 日韩欧美国产三级电影视频| 婷婷六月综合网| 欧美日韩综合在线免费观看| 综合av第一页| 97久久精品人人做人人爽50路| 国产喷白浆一区二区三区| 国产在线精品免费av| 7777精品伊人久久久大香线蕉超级流畅| 亚洲综合精品自拍| 在线亚洲人成电影网站色www| 中文字幕中文字幕在线一区| 成人avav影音| 国产精品久久久久影院色老大| 风间由美性色一区二区三区| 欧美国产日韩亚洲一区| 国产大陆精品国产| 国产午夜亚洲精品午夜鲁丝片| 国产精品99久久久久久久女警| 久久综合九色综合97婷婷女人| 国产主播一区二区三区| 欧美tickling网站挠脚心| 精品亚洲欧美一区| 欧美精品一区二区三区高清aⅴ| 久久国产乱子精品免费女| 日韩欧美国产wwwww| 精品无码三级在线观看视频| 久久嫩草精品久久久久| 国产一区美女在线| 中文字幕av一区二区三区免费看 | 欧美精品一区二区精品网| 精品中文字幕一区二区小辣椒| 日韩一级成人av| 狠狠色丁香婷综合久久| 国产亚洲精品久| 色综合激情久久| 五月综合激情网| 2017欧美狠狠色| 成人黄色小视频| 亚洲福中文字幕伊人影院| 777xxx欧美| 国产69精品久久99不卡| 亚洲精品一二三区| 欧美美女喷水视频| 国产一区三区三区| 亚洲人成伊人成综合网小说| 在线不卡一区二区| 国产精品一区二区在线观看网站| 中文字幕欧美一| 91精品国产色综合久久不卡蜜臀| 国产剧情一区二区| 亚洲综合久久久久| www欧美成人18+| 一本大道综合伊人精品热热| 美女视频一区在线观看| 国产精品视频观看| 欧美精品乱码久久久久久按摩| 国产剧情在线观看一区二区| 亚洲综合免费观看高清完整版在线| 欧美成人性福生活免费看| 97精品久久久午夜一区二区三区| 首页综合国产亚洲丝袜| 国产精品区一区二区三| 欧美精品国产精品| 国产成+人+日韩+欧美+亚洲| 久久午夜老司机| 国产亚洲视频系列| 91丝袜国产在线播放| 日韩中文字幕不卡| 欧美国产成人在线| 欧美精品高清视频| 成人亚洲精品久久久久软件| 亚洲一区在线观看免费| 欧美韩国一区二区| 91精品国产综合久久蜜臀 | 欧洲精品一区二区| 国产宾馆实践打屁股91| 亚洲欧美日韩中文字幕一区二区三区 | 欧美狂野另类xxxxoooo|