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

📄 test.java

📁 数据挖掘算法的实现
💻 JAVA
字号:
import java.util.LinkedList;
import java.util.Date;

public class Test 
{
	//float [][]matrix = new float[16][16];
	private static double matrix[][] = {{1},
			                {0,1},
			                {0,0,1},
			                {0,0,0.4,1},
			                {0,0.8,0,0,1},
			                {0.5,0,0.2,0.2,0,1},
			                {0,0.8,0,0,0.4,0,1},
			                {0.4,0.2,0.2,0.5,0,0.8,0,1},
			                {0,0.4,0,0.8,0.4,0.2,0.4,0,1},
			                {0,0,0.2,0.2,0,0,0.2,0,0.2,1},
			                {0,0.5,0.2,0.2,0,0,0.8,0,0.4,0.2,1},
			                {0,0,0.2,0.8,0,0,0,0,0.4,0.8,0,1},
			                {0.8,0,0.2,0.4,0,0.4,0,0.4,0,0,0,0,1},
			                {0,0.8,0,0.2,0.4,0,0.8,0,0.2,0.2,0.6,0,0,1},
			                {0,0,0.4,0.8,0,0.2,0,0,0.2,0,0,0.2,0.2,0,1},
			                {0.6,0,0,0.2,0.2,0.8,0,0.4,0,0,0,0,0.4,0.2,0.4,1}};
	public static double GetNamedValue(int mun)//取第m小的数据
    {
   	 //System.out.println("开始取小数据");
		//int [][] a =new int [26000][26000];
   	    double temp = 100 ;
        double []array = new double[16*16];
        array[0] = matrix[0][0];
   	    int count = 1;   //一维数据计数
        for(int i = 0;i < 16;i++)
        {
       	 for(int j = 0;j <= i;j++)
       	 {
       		 if(!contain(array,count,matrix[i][j]))
       		 {
       			 array[count] = matrix[i][j];
       			 count++;
       		 }
       	 }
        }
        for(int i = 0;i < count;i++)
        {
       	 for(int j = i+1;j < count;j++)
       		 if(array[j] < array[i])
       		 {
       			 double t = array[i];
       			 array[i] = array[j];
       			 array[j] = t;
       		 }
        }
        //System.out.println("count="+count);
        //for(int i = 0;i < mun;i++)
       	// System.out.print(array[i]+" ");
        temp = array[mun];
   	 //System.out.println("safsdf小数据完毕ssfsf"); 
   	 return temp;
    }
    public static boolean contain(double a[],int m,double n)
    {
   	 boolean flag = false;
   	 for(int i = 0;i < m;i++)
   	 {
   		 if(a[i] == n)
   		 {
   			 flag = true;
   			 //return flag;
   			 break;
   		 }
   	 }   	 
   	 return flag;
    }
    public static void Clustering()
    {
   	 LinkedList []list = new LinkedList[16];
   	 int n = 0;   //记录list的数目
   	 double bigvlaue = GetNamedValue(4);
   	 boolean flag = true;   //是否创建list
   	  for(int i = 0;i < 16;i++)
   	 {
   		  System.out.println("n="+n);
   	    	 if(i == 0)
   	    	 {
       	    	 list[n] = new LinkedList();
       	    	 //list[n].add(new Integer(i));
    		        for(int j = i;j < 16;j++)
   		        {
   		    	   if(matrix[j][i] >= bigvlaue)
   		    	    {
   		    		 list[n].add(new Integer(j));
   		    	    }
   		        } 
    		        n++;
    		        continue;
   	    	 }
   	    	 else
   	    	 {   	    
   		     for(int m = 0;m < n;m++)
   		      {
   			    if(list[m].contains(new Integer(i)))
   			     {
   			    	flag = false;   
   			    	break;
   			     } 
   			    flag = true;
   		      }
                  if(flag)              	   
                  {
   		    	 System.out.println("I am here!");
   		    	 list[n] = new LinkedList();
   		    	 //list[n].add(new Integer(i));
   		    	 
   		        for(int j = i;j < 16;j++)
   		        {
   		    	   if(matrix[j][i] >= bigvlaue)
   		    	    {
   		    		 list[n].add(new Integer(j));
   		    	    }
   		        }    		        
  		    	     n++;
  		    	     UnitTwoLink(list,n);
                  }
   	    	 }
   	 }
   	  //UnitTwoLink(list,n);
   	 for(int j = 0;j < n;j++)
   	 {
   		 //if(!list[j].isEmpty())
   		 System.out.println(list[j]);
   	 }
   	 //System.out.println("Clustering ok");
    }
    public static void UnitTwoLink(LinkedList list[],int n)
    {
    	//int flag = 0;
    	for(int i = 0;i < n-1;i++)
    	{
    		for(int j = 0;j < list[i].size();j++)
    		{
    		  Object object = list[i].get(j);
              if(list[n-1].contains(object))
                {
            	  list[i].addAll(list[n-1]);
            	  //list[n-1].removeAll(list[n-1]);
            	  list[n-1].clear();
            	  n--;
            	  for(int a = 0;a < list[i].size()-1;a++)  //合并相同数据
            	  {
            		  for(int b = a+1;b < list[i].size();b++)
            		  {
            			  if(list[i].get(a).equals(list[i].get(b)))
            				  list[i].remove(b);
            		  }
            	  }
            	  return ;
                }
    		  }   		
    		}
    }
  	public static void main(String [] args) 
	{
  		Date date = new Date();
  		long startTime = date.getTime();
  		
  		System.out.println(startTime);
        double dd = GetNamedValue(4);
        System.out.println("xiao"+dd+"shu");
        Clustering();

        Date newDate = new Date();
        long endTime = newDate.getTime();
        System.out.println(endTime);
        System.out.println(endTime - startTime+"s");
        
        
  	 }
	}

⌨️ 快捷键说明

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