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

📄 equalfreqdiscretiser.java

📁 用于multivariate时间序列分类
💻 JAVA
字号:
/**  * What this class does goes here  *  *   * @author Waleed Kadous  * @version $Id: EqualFreqDiscretiser.java,v 1.1.1.1 2002/06/28 07:36:16 waleed Exp $  */package tclass.learnalg;   import tclass.*; import tclass.util.*; import tclass.datatype.*; public class EqualFreqDiscretiser implements DiscretiserI {    int numBins;     boolean singular = false;     Binner myBinner;     static String d2str(float[] data){	StringBuffer retval = new StringBuffer(data.length*12); 	retval.append("[ "); 	for(int i=0; i < data.length; i++){	    retval.append(data[i] + " "); 	   	}	retval.append("]"); 	return retval.toString();     }        static int findMinIndex(int minPos, float[] vals){	int retval=0;	float minVal = vals[minPos];  	for(int i=minPos; i< vals.length; i++){	    if(vals[i] <= minVal){		minVal = vals[i]; 		retval = i; 	    }	}	return retval;     }        public int size(){	return numBins;     }        static void swap(int a, int b, float[] vals){	float tmp; 	tmp = vals[a]; 	vals[a] = vals[b];	vals[b] = tmp;     }    static void ssort(float[] vals){	for(int i=0; i < vals.length; i++){	    int correctOne = findMinIndex(i, vals); 	    swap(i, correctOne, vals); 	}	// Debug.dp(Debug.EMERGENCY, "Sorted = " + d2str(vals));     }    public void makeDiscretisation(ClassStreamAttValVecI data, int				   numBins, int attNum){	StreamAttValVecI streams = data.getStreamAttValVec(); 	DataTypeI dt = streams.getDescription().elAt(attNum).getDataType(); 	Debug.myassert(dt.getName().equals("continuous"), "WARNING!! Attempt to discretise non-continuous value"); 	this.numBins = numBins; 	int numStreams = streams.size(); 	float[] vals = new float[numStreams]; 		float min = Float.MAX_VALUE; 	float max = -Float.MAX_VALUE; 	for(int i=0; i < numStreams; i++){	    vals[i]=streams.elAt(i).getAtt(attNum); 	    if(vals[i] < min){		min = vals[i]; 	    }	    if(vals[i] > max && vals[i] != Float.MAX_VALUE){		max = vals[i]; 	    }	}		ssort(vals);		AttDescVecI advi = streams.getDescription(); 	// And now make a binner for ourselves. 		Debug.myassert(max!=min, "WARNING!!! max = min for " +		     advi.elAt(attNum)); 	if(max == min) singular = true; 	if(!singular){	    myBinner = new Binner(numBins); 	    for(int i=1; i < numBins; i++){		// A little cleaner to do things this way. Get rid of those 		// horrible empty bins. 		float breakpt = vals[i*numStreams/numBins]; 		myBinner.setBound(i-1, breakpt);	    }	    		    Debug.dp(Debug.EVERYTHING, "For " + advi.elAt(attNum) + " range is : " + min + " to " + max + " " + myBinner.toString()); 	}    }        public Discrete getDiscType(){	Discrete retval = new Discrete(); 	String classes = ""; 		if(!singular){	    for(int i=0; i<numBins; i++){		classes += "bin"+i+" "; 	    }	    try {				retval.setParam("values", classes); 	    }	    catch(Exception e){		//Naughty! Naughty!! 	    }	    return retval; 	}	else {	     try {		 Debug.dp(Debug.EVERYTHING, "Setting class to singular"); 		 retval.setParam("values", "singular"); 	    }	    catch(Exception e){		//Naughty! Naughty!! 	    }	    return retval; 	}	    }        public int discretise(float val){	if(!singular){	    return myBinner.findBin(val); 	}	else {	    return 0; 	}    }    }

⌨️ 快捷键说明

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