📄 statistics.java
字号:
counters[i] = swapLong;
swapDouble = values[j];
values[j] = values[i];
values[i] = swapDouble;
}
}
public boolean makeSimpleStat() throws MiningException {
if(miningInputStream==null) return false;
if( univariateTarget == null ) return false;
if(rootGroup==null)
{
if(grouping==null)
rootGroup = new AllGroup(null);
else rootGroup = makeGroups();
}
miningInputStream.reset();
double statValue;
//MiningDataSpecification metaData = miningInputStream.getMetaData();
int statType;
if(univariateTarget instanceof CategoricalAttribute)
statType = Statistics.CATEGORICAL;
else
statType = Statistics.NUMERIC;
rootGroup.initSimpleStat();
while(miningInputStream.next())
{
System.out.print(".");
MiningVector vec = miningInputStream.read();
statValue = vec.getValue(univariateTarget);
if(!rootGroup.processVector(vec,statValue,statType)) return false;
}
rootGroup.computeSimpleStat();
return true;
}
public boolean makeAdvancedStat() throws MiningException {
if(miningInputStream==null) return false;
if(!makeSimpleStat()) return false;
miningInputStream.reset();
double statValue;
//MiningDataSpecification metaData = miningInputStream.getMetaData();
int statType;
if(univariateTarget instanceof CategoricalAttribute)
statType = Statistics.CATEGORICAL;
else
statType = Statistics.NUMERIC;
rootGroup.initAdvancedStat();
while(miningInputStream.next())
{
MiningVector vec = miningInputStream.read();
statValue = vec.getValue(univariateTarget);
if(!rootGroup.advancedProcessVector(vec,statValue,statType)) return false;
}
rootGroup.computeAdvancedStat();
return true;
}
public boolean makeMultiStat() throws MiningException {
if(miningInputStream==null) return false;
if(firstMultiAttr==-1||secondMultiAttr==-1) return false;
//MiningDataSpecification metaData = miningInputStream.getMetaData();
int attrType0, attrType1;
MiningAttribute attribute = (MiningAttribute)metaData.getMiningAttribute(firstMultiAttr);
if(attribute instanceof CategoricalAttribute) attrType0 = Statistics.CATEGORICAL;
else attrType0 = Statistics.NUMERIC;
attribute = (MiningAttribute)metaData.getMiningAttribute(secondMultiAttr);
if(attribute instanceof CategoricalAttribute) attrType1 = Statistics.CATEGORICAL;
else attrType1 = Statistics.NUMERIC;
if(attrType0 != attrType1) return false;
if(rootGroup==null)
{
if(grouping==null)
rootGroup = new AllGroup(null);
else rootGroup = makeGroups();
}
if(attrType0 == Statistics.CATEGORICAL)
{
// first pass to find means
miningInputStream.reset();
double x,y;
rootGroup.initMultiStatNum();
while(miningInputStream.next())
{
MiningVector vec = miningInputStream.read();
x = vec.getValue(firstMultiAttr);
y = vec.getValue(secondMultiAttr);
if(!rootGroup.multiProcessVectorNum(vec,x,y)) return false;
}
rootGroup.computeMultiNum();
// second pass to find correlation
miningInputStream.reset();
while(miningInputStream.next())
{
MiningVector vec = miningInputStream.read();
x = vec.getValue(firstMultiAttr);
y = vec.getValue(secondMultiAttr);
if(!rootGroup.multiProcessVectorNum2(vec,x,y)) return false;
}
rootGroup.computeMultiNum();
}
else
{
miningInputStream.reset();
double x,y;
while(miningInputStream.next())
{
MiningVector vec = miningInputStream.read();
x = vec.getValue(firstMultiAttr);
y = vec.getValue(secondMultiAttr);
if(!rootGroup.multiProcessVectorCat(vec,x,y)) return false;
}
}
return true;
}
private static void printTabs(int num) {
for(int i=0;i<num;i++) System.out.print("\t");
}
private static void printStat(MiningDataSpecification metaData, Group info, int level) {
int attrNum = info.getGroupAttribute();
if(attrNum!=-1)
{
if(info instanceof CategoricalGroup)
{
CategoricalGroup categ = (CategoricalGroup)info;
CategoricalAttribute attribute = (CategoricalAttribute)metaData.getMiningAttribute(attrNum);
double value = categ.getValue();
printTabs(level);
System.out.println("Categorical group: "+attribute.getName()+" with value: "+value+" ("+attribute.getCategory(value)+")");
}
else if(info instanceof NumericGroup)
{
NumericGroup numeric = (NumericGroup)info;
NumericAttribute attribute = (NumericAttribute)metaData.getMiningAttribute(attrNum);
double low = numeric.getLow();
double high = numeric.getHigh();
printTabs(level);
System.out.println("Numeric group: "+attribute.getName()+" ("+low+" .. "+high+")");
}
else
{
TimeGroup time = (TimeGroup)info;
NumericAttribute attribute = (NumericAttribute)metaData.getMiningAttribute(attrNum);
int unit = time.getGroupUnit();
int value = time.getGroupValue();
printTabs(level);
System.out.print("Time group: "+attribute.getName()+" with unit ");
switch(unit)
{
case Calendar.SECOND: System.out.print("'Seconds'"); break;
case Calendar.MINUTE: System.out.print("'Minute'"); break;
case Calendar.HOUR_OF_DAY: System.out.print("'Hour'"); break;
case Calendar.DAY_OF_MONTH: System.out.print("'Day'"); break;
case Calendar.WEEK_OF_MONTH: System.out.print("'Week'"); break;
case Calendar.MONTH: System.out.print("'Month'"); break;
case Calendar.YEAR: System.out.print("'Year'"); break;
default: System.out.print("'Unknown!!!' = "+unit);
}
System.out.println(" = "+value);
}
}
else
{
printTabs(level);
if(info.getParent()==null) System.out.println("Root");
else System.out.println("Other");
}
printTabs(level); System.out.println("Contains "+info.getCount()+" vectors");
if(!info.isLeaf())
{
printTabs(level+1); System.out.println(info.getChildCount()+" subgroups");
for(int i=0;i<info.getChildCount();i++)
printStat(metaData,(Group)(info.getChildAt(i)),level+1);
}
else
{
long count = info.getCount();
if(count!=0)
{
printTabs(level); System.out.println("Univariate:");
printTabs(level+1); System.out.println("Count: "+info.getCount());
printTabs(level+1); System.out.println("Min: "+info.getMin());
printTabs(level+1); System.out.println("Max: "+info.getMax());
printTabs(level+1); System.out.println("Range: "+info.getRange());
printTabs(level+1); System.out.println("Sum: "+info.getSum());
printTabs(level+1); System.out.println("Mean: "+info.getMean());
printTabs(level+1); System.out.println("Quartile 25: "+info.getQuart25());
printTabs(level+1); System.out.println("Quartile 50: "+info.getQuart50());
printTabs(level+1); System.out.println("Quartile 75: "+info.getQuart75());
printTabs(level+1); System.out.println("Interquartile range: "+info.getQuartRange());
printTabs(level+1); System.out.println("Variance: "+info.getVariance());
printTabs(level+1); System.out.println("Standart: "+info.getStandart());
printTabs(level+1); System.out.println("Skewness: "+info.getSkewness());
printTabs(level+1); System.out.println("Variation coefficient: "+info.getVarCoeff());
printTabs(level); System.out.println("Multivariate:");
printTabs(level+1); System.out.println("Correlation: "+info.getCorrelation());
java.util.Enumeration em = info.getContingencyTable();
java.util.Vector vec;
if(em!=null)
{
vec = new java.util.Vector();
while(em.hasMoreElements())
vec.add(em.nextElement());
printTabs(level+1); System.out.println("Contingency table contains "+vec.size()+" elements");
for(int i=0;i<vec.size();i++)
{
printTabs(level+2);
ContingencyEntry entry = (ContingencyEntry)vec.get(i);
System.out.println(entry.toString());
}
} else {
printTabs(level+1);
System.out.println("Contingency table is empty");
}
System.out.println();
}
else
{
printTabs(level+1); System.out.println("Empty group");
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -