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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? partition.java

?? clustering data for the different techniques of data mining
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:

  /** @return true if for the specified <code>fitnessMeasure</code>
   * we need to compute weights */
  private boolean needsWeights(int fitnessMeasure)
  {
    return (fitnessMeasure == Global.FM_COS
	    || fitnessMeasure == Global.FM_NORM_W
	    || fitnessMeasure == Global.FM_WE);
  }

  /** if the argument is negative return 0, otherwise return the
   * argument */
  private double filterNegative(double value)
  {
    if (value < 0.0)
      return 0.0;
    else
      return value;
  }


  /** computes the fitness of this Partition with respect to its
   * intersection to <code>NPART</code> partitions in <code>c</code>,
   * available in <code>intersectMap</code>, according to the entropy
   * measure and distance measure */
  public void computeFitness(Hashtable[] intersectMap,
			     Partition[] c, int NPART,
			     int entropyMeasure, int fitnessMeasure,
			     double[] wTargetCondOnDB, 
			     double[] wDBCondOnTarget,
			     double[] weight)
  {
    if (Global.DEBUG == 1)
      if (needsWeights(fitnessMeasure) && 
	  (weight == null || wTargetCondOnDB == null 
	   || wDBCondOnTarget == null))
	{
	  System.err.println("ERROR! Partition.computeFitness() invalid weight");
	  System.exit(1);
	}

    // average entropy of the NPART partitions
    double averageEntropy = 0.0;
    if (fitnessMeasure == Global.FM_ALTERNATE_HAVG)
      {
	// compute average entropy of attribute partitions
	for(int i = 0; i < NPART; i++)
	  averageEntropy += c[i].entropy(entropyMeasure);
	averageEntropy /= NPART;
      }

    // stores in intersectMap[i]: 
    // <class of our partition, <class of c[i], intersection count >>
    // intersectMap[i] is a map for intersections between
    // partitions c[i] and our partition
    // intersectMap[i]->first corresponds to each distinct 
    // value in our partition (C_s)
    // intersectMap[i]->second corresponds to a map with 
    // intersections between c[i][t] and v[s] (B_t x C_s)
    // intersectMap[i] = <C_s, <B_t, B_t x C_s >>

    // c[i]={B_t}, this={C_s}
    // stores in entropyCondThem[i] H(this|c[i])
    double[] entropyCondThem = null; // conditioned by c partitions
    // stores in entropyCondUs[i] H(c[i]|this)
    double[] entropyCondUs = null; // conditioned by our partition
    // stores in entropyIntersect H(this^c[i])
    double[] entropyIntersect = null;

    // memory allocation and initialization
    if (needsEntropyConditionedByThem(fitnessMeasure))
      {
	entropyCondThem = new double[NPART];
	for (int i = 0; i < NPART; i++)
	  entropyCondThem[i] = 0.0; 
      }

    if (needsEntropyConditionedByUs(fitnessMeasure))
      {
	entropyCondUs = new double[NPART];
	for (int i = 0; i < NPART; i++)
	  entropyCondUs[i] = 0.0;
      }
    
    if (needsEntropyOfIntersection(fitnessMeasure))
      {
	entropyIntersect = new double[NPART];
	for (int i = 0; i < NPART; i++)
	  entropyIntersect[i] = 0.0;
      }
    
    // clear old class_fitness maps
    classFitness.clear();
    Hashtable blockFitness = new Hashtable();

    // intersectMap[i] = <C_s, <B_t, B_t x C_s >>      
    // compute entropyCondThem, entropyCondUs
    for (int i = 0; i < NPART; i++)
      {
	// key: C_s, value: <B_t, B_t x C_s >
	for (Enumeration keys = intersectMap[i].keys(); 
	     keys.hasMoreElements(); )
	  {
	    Integer currClass = (Integer)keys.nextElement(); // |C_s|
	    Hashtable intersections = 
	      (Hashtable)intersectMap[i].get(currClass);
	  
	    int ourClassSize = getClassCard(currClass.intValue()); // |C_s|

	    if (Global.DEBUG == 1)
	      if (ourClassSize == 0)
		{
		  System.err.println("ERROR! Partition.computeFitness(): |C_s| = 0 for C_s = " + currClass);
		  print();
		  printClassCardinalities();
		  System.exit(1);
		}
	    
	    double sumCondThem = 0.0;
	    double sumCondUs = 0.0;
	    double sumIntersect = 0.0;

	    // key2: B_t, value2: |Bt x C_s|
	    for (Enumeration keys2 = intersections.keys(); 
		 keys2.hasMoreElements();)
	      {
		Integer currClass2 = (Integer)keys2.nextElement();
		int count = ((Integer)intersections.get(currClass2)).intValue(); // |B_t x C_s|

		if (Global.DEBUG == 1)
		  if (count == 0)
		    {
		      System.err.println("ERROR! Partition.computeFitness(): |B_t x C_s| = 0");
		      System.exit(1);
		    }
	      
		int hisClassSize = c[i].getClassCard(currClass2.intValue()); // |B_t|

		if (Global.DEBUG == 1)
		  if (hisClassSize == 0)
		    {
		      System.err.println("ERROR! Partition.computeFitness(): |B_t| = 0");
		      System.exit(1);
		    }

		if (needsEntropyConditionedByThem(fitnessMeasure))
		  sumCondThem += hisClassSize 
		    * ImpurityMeasure.impurityMeasure(entropyMeasure,
						      (double)count 
						      /(double)hisClassSize);

		if (needsEntropyConditionedByUs(fitnessMeasure))
		  sumCondUs += (double)ourClassSize 
		    * ImpurityMeasure.impurityMeasure(entropyMeasure,
						      (double)count 
						      /(double)ourClassSize);

		if (needsEntropyOfIntersection(fitnessMeasure))
		  sumIntersect += 
		    ImpurityMeasure.impurityMeasure(entropyMeasure,
						    (double)count 
						    /(double)size);

		// compute for classFitness a map 
		// that contains for each our class 
		// <class number, fitness of the class>
		switch(classFitnessType)
		  {
		  case CF_PROD:
		    // <Cs, |Cs| * sum_t |Bt ^ Cs|/|Cs|>
		    if (classFitness.containsKey(currClass) == false)
		      classFitness.put(currClass, 
				       new Double(ourClassSize * ImpurityMeasure.impurityMeasure(entropyMeasure,(double)count /(double)ourClassSize)));
		    else
		      {
			double oldValue = 
			  ((Double)classFitness.get(currClass)).doubleValue();
			classFitness.put(currClass, new Double(oldValue + ourClassSize * ImpurityMeasure.impurityMeasure(entropyMeasure, (double)count /(double)ourClassSize)));
		      }
		    break;

		  case CF_DIV:
		    // <Cs, 1/|Cs| * sum_t |Bt ^ Cs|/|Cs|>
		    if (classFitness.containsKey(currClass) == false)
		      classFitness.put(currClass, new Double((1.0/ourClassSize) * ImpurityMeasure.impurityMeasure(entropyMeasure, (double)count /(double)ourClassSize)));
		    else
		      {
			double oldValue = 
			  ((Double)classFitness.get(currClass)).doubleValue();
			classFitness.put(currClass, new Double(oldValue + (1.0/ourClassSize) * ImpurityMeasure.impurityMeasure(entropyMeasure, (double)count /(double)ourClassSize)));
		      }
		    break;

		  case CF_POW:
		    // <Cs, pow(2, sum_t |Bt ^ Cs|/|Cs|) / |Cs|>
		    // here we are computing pow(2, sum_t |Bt ^ Cs|/|Cs|)
		    // |Cs|/... is adjusted later
		    if (classFitness.containsKey(currClass) == false)
		      classFitness.put(currClass, new Double(Math.pow(2, ImpurityMeasure.impurityMeasure(entropyMeasure, (double)count / (double)ourClassSize))));
		    else
		      {
			double oldValue = 
			  ((Double)classFitness.get(currClass)).doubleValue();
			classFitness.put(currClass, new Double(oldValue * Math.pow(2, ImpurityMeasure.impurityMeasure(entropyMeasure, (double)count / (double)ourClassSize))));
		      }
		    break;

		    // if classFitness_type is 0
		    // use CF_SYM_DIFF
		  case 0:
		  case CF_SYM_DIFF:
		    // <Cs, <i, min (|Cs| + |Bt| - 2|Bt ^ Cs|)/(|Cs| + |Bt|)> >
		    {
		      double val =
			(double)(ourClassSize + hisClassSize - 2 * count)
			/ (double)(ourClassSize + hisClassSize);
		    
		      if (blockFitness.containsKey(currClass) == false)
			// if we see this block for first time
			{
			  Hashtable bf = new Hashtable();
			  bf.put(new Integer(i), new Double(val));
			  blockFitness.put(currClass, bf);
			}
		      else if (((Hashtable)blockFitness.get(currClass)).containsKey(new Integer(i)) == false)
			// if we see partition i for the first time
			{
			  ((Hashtable)blockFitness.get(currClass)).put(new Integer(i), new Double(val));
			}
		      else if (val < ((Double)((Hashtable)blockFitness.get(currClass)).get(new Integer(i))).doubleValue())
			{
			  ((Hashtable)blockFitness.get(currClass)).put(new Integer(i), new Double(val));
			}
		    }
		    break;
		    
		  default:
		    System.err.println("ERROR! Partition.computeFitness(): unknown class fitness measure");
		    System.exit(1);
		  }
	      } // end itr2 loop

	    if (needsEntropyConditionedByThem(fitnessMeasure))
	      entropyCondThem[i] += sumCondThem;
	    if (needsEntropyConditionedByUs(fitnessMeasure))
	      entropyCondUs[i] += sumCondUs;
	    if (needsEntropyOfIntersection(fitnessMeasure))
	      entropyIntersect[i] += sumIntersect;
	  } // end itr loop

	// scaling
	if (needsEntropyConditionedByThem(fitnessMeasure))
	  entropyCondThem[i] /= (double)size;
	if (needsEntropyConditionedByUs(fitnessMeasure))
	  entropyCondUs[i] /= (double)size;
      } // end i loop

    // for fitness class measure CF_POW and CF_SYM_DIFF we need 
    // to make some adjustments to the class fitness
    // we do the adjustment when we have everything computed
    switch(classFitnessType)
      {
      case CF_POW:
	for (int classNo = 1; classNo <= getNoClasses(); classNo++) 
	  {
	    Integer classNoInt = new Integer(classNo);
	    double oldFitness = 
	      ((Double)classFitness.get(classNoInt)).doubleValue();
	    
	    classFitness.put(classNoInt, 
			     new Double(oldFitness / getClassCard(classNo)));
	  }
	break;
	    
      case 0:
      case CF_SYM_DIFF:
	// <Cs, <j, min (|Cs| + |Bt| - 2|Bt ^ Cs|)/(|Cs| + |Bt|)> >
	for (Enumeration keys = blockFitness.keys(); 
	     keys.hasMoreElements(); )
	  {
	    double avg = 0.0;
	    Integer key1 = (Integer)keys.nextElement();
	    Hashtable value1 = 
	      (Hashtable)blockFitness.get(key1);
	    for(Enumeration values2 = value1.elements(); 
		values2.hasMoreElements(); )
	      avg += ((Double)values2.nextElement()).doubleValue();
	  
	    classFitness.put(key1, new Double(avg /(double)NPART));
	  }
	break;
      }

    cfIsValid = true;

    if (Global.ULTRA_VERBOSE == 1)
      printClassFitness();

    double sumEntropyCondUs  = 0.0;
    double sumEntropyCondThem = 0.0;
    double sumSquareEntropies = 0.0;
  
    // for these fitness measures we need to cumulate first
    // the two conditional entropies
    if (fitnessMeasure == Global.FM_NORM_W
	|| fitnessMeasure == Global.FM_ALTERNATE
	|| fitnessMeasure == Global.FM_MOD)
      {
	for (int i = 0; i < NPART; i++)
	  {
	    sumEntropyCondUs += entropyCondUs[i];
	    sumEntropyCondThem += entropyCondThem[i];
	  }
      }
    
    if (fitnessMeasure == Global.FM_MOD)
      fitness = Math.abs(sumEntropyCondUs + sumEntropyCondThem)
	+ Math.abs(sumEntropyCondUs - sumEntropyCondThem);
    else if (fitnessMeasure == Global.FM_ALTERNATE)
      {
	if (sumEntropyCondUs >= sumEntropyCondThem)
	  // minimization of PA_P
	  fitness = sumEntropyCondUs;
	else
	  // minimization of P_PA
	  fitness = sumEntropyCondThem;
      }
    else
      {
	fitness = 0.0;
	for (int i = 0; i < NPART; i++)
	  switch(fitnessMeasure)
	    {
	    case Global.FM_PA_P:
	      fitness += entropyCondUs[i];
	      break;

	    case Global.FM_P_PA:
	      fitness += entropyCondThem[i];
	      break;

	    case Global.FM_BOTH:
	      fitness += entropyCondThem[i] + entropyCondUs[i];
	      break;

	    case Global.FM_BOTH_SCALED:
	      fitness += 
		entropyCondUs[i]/(1 + c[i].entropy(entropyMeasure))
		+ entropyCondThem[i]/(1 + entropy(entropyMeasure));
	      break;

	    case Global.FM_Q:
	      fitness += 
		filterNegative(entropy(entropyMeasure) - entropyCondThem[i])
		/ (1 + c[i].entropy(entropyMeasure));
	      break;

	    case Global.FM_L:
	      fitness += 
		filterNegative(entropy(entropyMeasure) - entropyCondThem[i])
		/ (1 + entropyIntersect[i]);
	      break;

	    case Global.FM_QR:
	      fitness += 
		filterNegative(c[i].entropy(entropyMeasure) - entropyCondUs[i])
		/ (1 + entropy(entropyMeasure));
	      break;

	    case Global.FM_LR:
	      fitness += 
		filterNegative(c[i].entropy(entropyMeasure) - entropyCondUs[i])
		/ (1 + entropyIntersect[i]);
	      break;

	    case Global.FM_Q_QR:
	      fitness += 
		filterNegative(entropy(entropyMeasure) - entropyCondThem[i])
		/ (1 + c[i].entropy(entropyMeasure))
		+ filterNegative(c[i].entropy(entropyMeasure) - entropyCondUs[i])
		/ (1 + entropy(entropyMeasure));
	      break;

	    case Global.FM_ALTERNATE_HAVG:
	      if (entropy(entropyMeasure) <= averageEntropy)
		// minimization of PA_P
		fitness += entropyCondUs[i];
	      else
		// minimization of P_PA
		fitness += entropyCondThem[i];
	      break;

	    case Global.FM_COS:
	      fitness += weight[i] * 
		(entropyCondThem[i] + entropyCondUs[i]);
	      sumSquareEntropies += 
		Math.pow(entropyCondThem[i] + entropyCondUs[i], 2); 
	      break;
	
	    case Global.FM_NORM_W:
	      fitness += Math.abs(entropyCondThem[i] + entropyCondUs[i] 
			      - weight[i] 
			      * (sumEntropyCondUs + sumEntropyCondThem));
	      break;

	    case Global.FM_WE:
	      fitness += 
		Math.abs(wTargetCondOnDB[i] - entropyCondUs[i]) + 
		Math.abs(wDBCondOnTarget[i] - entropyCondThem[i]);
	      break;
	    
	    case Global.FM_TEST:
	      fitness += (entropyCondThem[i] + entropyCondUs[i])
		* weight[i];
	      break;
	    }
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丝袜自拍制服另类| 91麻豆精东视频| 亚洲成人777| 亚洲国产精品麻豆| 天天影视涩香欲综合网| 午夜精品一区二区三区电影天堂| 一区二区三区日韩欧美| 亚洲制服丝袜一区| 天堂在线亚洲视频| 久久精品二区亚洲w码| 国产酒店精品激情| 成av人片一区二区| 一本色道**综合亚洲精品蜜桃冫| 欧美综合一区二区| 欧美一区二区三区成人| 26uuu精品一区二区在线观看| 国产日韩成人精品| 亚洲欧美日韩国产综合| 亚洲成av人在线观看| 美女网站一区二区| 国产suv精品一区二区三区| 色综合咪咪久久| 正在播放一区二区| 国产精品久线在线观看| 亚洲精品视频在线观看免费| 午夜久久电影网| 国产精品一区二区久激情瑜伽| 99久久久免费精品国产一区二区| 91偷拍与自偷拍精品| 欧美日韩黄视频| 久久久不卡网国产精品二区| 亚洲免费视频中文字幕| 久久电影网电视剧免费观看| caoporn国产一区二区| 欧美福利一区二区| 中文无字幕一区二区三区| 亚洲精品视频免费看| 另类欧美日韩国产在线| 99久久久精品免费观看国产蜜| 777午夜精品免费视频| 国产精品免费看片| 日本不卡中文字幕| 99re热这里只有精品视频| 欧美一级理论片| 亚洲女子a中天字幕| 经典一区二区三区| 欧美日韩成人一区二区| 亚洲视频一二区| 国产伦精一区二区三区| 在线观看91精品国产麻豆| 亚洲桃色在线一区| 国产一区二区三区免费在线观看| 9191精品国产综合久久久久久| 国产精品久久久久精k8| 国内外成人在线| 欧美一区二区在线看| 一区二区三区不卡在线观看 | 欧美性videosxxxxx| 国产日韩欧美精品电影三级在线| 奇米色777欧美一区二区| 在线视频欧美精品| 亚洲色图第一区| 91精品国产综合久久福利 | 日韩在线a电影| 色综合久久88色综合天天| 欧美激情资源网| 国产精品1区二区.| 91精品国产色综合久久不卡电影| 亚洲一区二区三区免费视频| 91丝袜呻吟高潮美腿白嫩在线观看| 国产人久久人人人人爽| 精品亚洲成av人在线观看| 欧美一区二区国产| 日韩不卡在线观看日韩不卡视频| 欧美日韩www| 性久久久久久久| 欧美高清视频一二三区 | 日韩精品最新网址| 日韩综合小视频| 欧美一区二区视频网站| 五月天视频一区| 欧美一区二区三区婷婷月色| 奇米精品一区二区三区在线观看| 日韩三级精品电影久久久| 久久成人精品无人区| 26uuu另类欧美亚洲曰本| 成人一区二区三区在线观看| 国产精品伦理在线| 色狠狠色噜噜噜综合网| 亚洲成人综合视频| 欧美一区日韩一区| 精品亚洲国内自在自线福利| 久久久精品免费网站| 不卡欧美aaaaa| 午夜精品久久久久影视| 欧美va亚洲va国产综合| 欧美日韩一区二区三区四区五区| 五月天视频一区| 久久久久久免费网| 日本大香伊一区二区三区| 奇米在线7777在线精品| 国产精品久久久久久户外露出| 在线视频一区二区三| 麻豆91小视频| 亚洲精品视频在线看| 日韩欧美三级在线| 一本到高清视频免费精品| 精品一区免费av| 亚洲精品视频在线观看免费| 精品日产卡一卡二卡麻豆| 91麻豆swag| 国模大尺度一区二区三区| 一区二区三区国产精品| 久久久午夜电影| 欧美狂野另类xxxxoooo| www.爱久久.com| 久久福利资源站| 亚洲成人黄色影院| 国产精品欧美综合在线| 精品少妇一区二区三区视频免付费| 一区二区三区四区在线播放| 日本成人在线视频网站| 精品视频在线视频| 美女看a上一区| 亚洲综合一区二区精品导航| 久久精品一区二区| 精品成人一区二区三区| 亚洲第一狼人社区| 亚洲欧美一区二区三区久本道91| 自拍av一区二区三区| 亚洲午夜影视影院在线观看| 五月综合激情日本mⅴ| 日本不卡一区二区三区高清视频| 日韩精品乱码免费| 国产一二三精品| 一本久道久久综合中文字幕| 欧美日韩卡一卡二| 精品久久久久香蕉网| 国产精品天美传媒沈樵| 亚洲自拍与偷拍| 免费xxxx性欧美18vr| 国产99久久久国产精品潘金| 色婷婷av一区二区三区大白胸| 91激情五月电影| 欧美一区二区三区影视| 国产精品免费av| 午夜精品久久久久久久久久| 国产精品77777竹菊影视小说| 91久久国产最好的精华液| 91精品在线观看入口| 日本一区二区三区免费乱视频 | 一本色道久久综合精品竹菊| 91精品午夜视频| 国产精品第五页| 日韩高清一区二区| heyzo一本久久综合| 欧美一二三区在线观看| 亚洲欧美一区二区三区久本道91| 蜜桃视频在线观看一区| 99久久国产综合精品色伊| 欧美片在线播放| 国产精品美女久久久久久久久久久| 午夜精品成人在线视频| 国产99久久久国产精品免费看| 7777精品久久久大香线蕉| 国产精品美女久久久久久| 免费xxxx性欧美18vr| 成人av动漫网站| 精品国产一区二区三区久久久蜜月| 一区二区三区小说| av一区二区不卡| 久久网站最新地址| 日本少妇一区二区| 欧美性大战久久久久久久| 国产精品天天摸av网| 国产在线看一区| 欧美一区二区三区不卡| 亚洲午夜羞羞片| 91欧美激情一区二区三区成人| 国产日本亚洲高清| 国产激情一区二区三区桃花岛亚洲| 欧美亚洲高清一区| 亚洲欧美视频在线观看视频| 成人免费视频一区| 国产亚洲精品7777| 极品美女销魂一区二区三区| 欧美一区午夜精品| 日本中文字幕一区| 欧美日韩国产一二三| 亚洲精品国产高清久久伦理二区| 成人黄色网址在线观看| 欧美国产激情二区三区| 国产乱码一区二区三区| 精品国产一区二区精华| 国精产品一区一区三区mba桃花| 日韩手机在线导航| 美腿丝袜亚洲综合| 欧美成人在线直播| 国产麻豆视频精品| 国产欧美日韩亚州综合|