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

📄 statistics.java

📁 一个数据挖掘软件ALPHAMINERR的整个过程的JAVA版源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
          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 + -