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

📄 new_kdd1.java

📁 特征选择算法的java 实现,并且使用Jfreechart实现图形显示
💻 JAVA
字号:
package new_raw;

import java.sql.*;
import java.util.*;
import java.io.*;
import java.io.InputStream;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
//import org.jfree.data.*;
//import org.jfree.data.category.CategoryDataset;
//import java.io.FileNotFoundException;
//import java.io.FileOutputStream;
//import com.lowagie.text.*;
//import com.lowagie.text.pdf.*;

import java.math.*;


public class New_Kdd{
    public static Connection conn;
    public static Statement stmt;
    public static ResultSet res;
    public static int rowNumber;
    public static int columnNumber;
    public static ResultSetMetaData rsmd;
    public static ArrayList[] array,array1,array2;
    public static ArrayList clmnName;
    public static double [] R;
 public static void main(String avg[])
  {
    try
    {
      //数据库连接
      connect();
      //显示读取数据的行数
      showrow();
      //显示属性字段的列数
      showcolumn();
      //根据全体属性进行集合划分
      
      array1=div_data( );
      //根据减少一个属性后的集合进行划分
      for(int a=0;a<columnNumber;a++){
    	  array2=div_data_other(a );
    	  R[a]=array_intersect(array1,array2);
      }
     
      
      //算法计算
      
 //     R = kdd(x);
      //属性相关系数排序并可视化输出
      bubbleSort(R);
 
    }catch (Exception ex)
    {
      System.out.println("Error : " + ex.toString());
    }  
  } 

 
 
public static void connect(){
	try{
	//加载Connector/J驱动
    Class.forName("com.mysql.jdbc.Driver");
   //建立到MySQL的连接
    conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/rawdata?user=root&password=123");
   //执行SQL语句
    stmt = conn.createStatement();
    res = stmt.executeQuery("select * from rawdata5");
    rsmd = res.getMetaData();   
	}catch (Exception ex){
      System.out.println("Error : " + ex.toString());
    } 
}

public static void showrow(){
    //显示数据行数
	try{
        ResultSet resultset=stmt.executeQuery("select count(*) from rawdata5");
        resultset.next();
        rowNumber=resultset.getInt(1);
        System.out.print(rowNumber+"行\t");
	}catch (Exception ex){
          System.out.println("Error : " + ex.toString());
        } 
}

public static void showcolumn(){		//显示列数;查找并保存"varchar"字段类型的个数和列号
	try{
		 //列数
		clmnName=new ArrayList();
	     columnNumber=rsmd.getColumnCount();
		 int[] var = new int[columnNumber+1];
	     System.out.println(columnNumber+"列");
	     for(int i=1;i<columnNumber+1;i++){
	         String columnName=rsmd.getColumnName(i);
	         clmnName.add(columnName);
	         System.out.print(columnName+'\n');
	      }
	     
	}catch (Exception ex){
	System.out.println("showcolumn() Error : " + ex.toString());
}
}
public static ArrayList [] div_data( ){
	int con_rowmn=0;
	 ResultSet div_res;
	 ResultSet [] rownm_res=new ResultSet [columnNumber];
	 ArrayList [] rowmn_array=new ArrayList[columnNumber] ;
	 String [][] div_array ;
	 try{
	 String rownm_sql="select id from rawdata5"+
	 " where duration=? and protocol=? "+
"and service=? and flag=? and "+
"src_bytes=? and dst_bytes=? "+
"and land=? AND wrong_fragment=? "+
"and urgent=? and hot=? "+
"and num_failed_logins=? and logged_in=? "+
"and num_compromised=? and root_shell=? "+
"and su_attempted=? and num_root=? "+
"and num_file_creations=? and num_shells=? "+
"and num_access_files=? and num_outbound_cmds=? "+
"and is_host_login=? and is_guest_login=? and "+ 
"+and count=? and srv_count=? "+
"and serror_rate=? and srv_serror_rate=? "+
"and rerror_rate=? and srv_rerror_rate=? "+
"and same_srv_rate=? and diff_srv_rate=? "+
"and srv_diff_host_rate=? and dst_host_count=? "+
"and dst_host_srv_count=? and dst_host_same_srv_rate=? "+
"and dst_host_diff_srv_rate=? and dst_host_same_src_port_rate=? "+
"and dst_host_srv_diff_host_rate=? and dst_host_serror_rate=? "+
"and dst_host_srv_serror_rate=? and dst_host_rerror_rate=? "+
"and dst_host_srv_rerror_rate=? and status=? ";
	 System.out.println(""+rownm_sql);
	 String div_sql="select distinct duration,protocol,"+
" service, flag, "+
"src_bytes,dst_bytes, "+
" land, wrong_fragment, "+
" urgent, hot, "+
" num_failed_logins, logged_in, "+
" num_compromised, root_shell, "+
" su_attempted, num_root, "+
" num_file_creations, num_shells, "+
" num_access_files, num_outbound_cmds, "+
"is_host_login, is_guest_login, "+ 
" count,srv_count,"+
"serror_rate,srv_serror_rate, "+
" rerror_rate, srv_rerror_rate, "+
" same_srv_rate, diff_srv_rate, "+
" srv_diff_host_rate,dst_host_count, "+
" dst_host_srv_count, dst_host_same_srv_rate, "+
" dst_host_diff_srv_rate, dst_host_same_src_port_rate, "+
"dst_host_srv_diff_host_rate,dst_host_serror_rate, "+
" dst_host_srv_serror_rate, dst_host_rerror_rate, "+
" dst_host_srv_rerror_rate,status "+
"from rawdata5";
	 
	 div_res=stmt.executeQuery(div_sql) ;
	
	 int i=0;
	 
	 div_res.last();
	 con_rowmn=div_res.getRow();
	 div_array=new String[con_rowmn][columnNumber];
	 System.out.println("fuck"+con_rowmn);
	 div_res.beforeFirst();
		 while(div_res.next()){
			
		 
		 
		//for(int i=1;i<columnNumber;i++){
		
			 
			
			 System.out.println("fuckbbbbbb");
			 //div_array[i].add(
			 for(int j=0;j<con_rowmn;j++){
				 div_array[i][j]=div_res.getString(j);	 
			 }
			 
				 
			 System.out.println("fuckbbbbbb");
			 //con_rowmn=div_array[i].size();
			 
			 i++;
			 
		 }
		
		PreparedStatement psmt=conn.prepareStatement(rownm_sql) ;
		
		 for(int k=0;k<con_rowmn;k++){
		 for(int j=0;j<columnNumber;j++){
			
			 psmt.setString(j+1, div_array[j][k]);
		 }
		 
		 rownm_res[k]=psmt.executeQuery();
		 System.out.println("fuck2");
		while(rownm_res[k].next()){
			rowmn_array[k].add(rownm_res[k]);
		}
		psmt.clearParameters();
		 }
		 for(int l=0;l<con_rowmn;l++){
			 for(int kl=0;kl<rowmn_array[l].size();kl++){
				 System.out.print(rowmn_array[l].get(kl).toString());
			 }
		 }
		 
	 } catch (Exception ex){
	      System.out.println("Error2 : " + ex.toString());
	    } 
	 return rowmn_array;
}
public static ArrayList [] div_data_other(int clun_nm ){
	int con_rowmn=0;
	int clun=clun_nm;
	
	 ResultSet div_res;
	 ResultSet [] rownm_res=null;
	 ArrayList [] rowmn_array=null;
	 ArrayList [] div_array=null;
	 try{
	 String rownm_sql="select id from rawdata5 where(";
	 for(int cl=0;cl<columnNumber-2;cl++){
	 	if(cl!=clun)
	 	{	
	 	 rownm_sql=rownm_sql+clmnName.get(cl).toString()+"=? and ";
	 	 
	 	 }
	}
	if(clun==columnNumber-2){
		rownm_sql=rownm_sql+clmnName.get(columnNumber-1).toString()+"=?)";
		
	}
	 else if(clun==columnNumber-1){
		rownm_sql=rownm_sql+clmnName.get(columnNumber-2).toString()+"=?)";
		}
	
	 String div_sql="select distinct * "+
"from rawdata5";
	 div_res=stmt.executeQuery(div_sql) ;
	 
		 div_res.next();
		 for(int i=0;i<columnNumber;i++){
		
			 div_array[i]=new ArrayList();
			 div_array[i].add(div_res.getString(i));
			 con_rowmn=div_array[i].size();
		 }
		PreparedStatement psmt=conn.prepareStatement(rownm_sql) ;
		 for(int k=0;k<con_rowmn;k++){
		 for(int j=0;j<columnNumber;j++){
			 psmt.setString(j+1, div_array[j].get(k).toString());
		 }
		 rownm_res[k]=psmt.executeQuery();
		while(rownm_res[k].next()){
			rowmn_array[k].add(rownm_res[k]);
		}
		psmt.clearParameters();
		 }
		 for(int l=0;l<con_rowmn;l++){
			 for(int kl=0;kl<rowmn_array[l].size();kl++){
				 System.out.print(rowmn_array[l].get(kl).toString());
			 }
		 }
		 
	 } catch (Exception ex){
	      System.out.println("Error1 : " + ex.toString());
	    } 
	 return rowmn_array;
}
public static double array_intersect(ArrayList [] array1,ArrayList [] array2){
	int m,n;
	double tem1,tem2,R;
	tem1=0;
	tem2=1;
	R=0;
	ArrayList tem_array;
	m=array1.length;
	n=array2.length;
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			tem_array=null;
			for(int mm=0;mm<array1[i].size();mm++){
				for(int nn=0;nn<array2[j].size();nn++){
					if (array1[i].get(mm).toString().equals(array2[j].get(nn).toString()))
                    {
                        tem_array.add(array1[i].get(mm));

                    }

				}
			}
			if(tem1<(tem_array.size()/array2[j].size())){
			    tem1=tem_array.size()/array2[j].size();
			     }
		}
		if(tem2>tem1){
			tem2=tem1;
		}
	}
	R=1-tem2;
	return R;
}

static void bubbleSort(double []R){ 
	 //冒泡法排序
	 double t;
	 int mid;
	 int R_index[]=new int[R.length];
	 for(int i=0;i<R.length;i++){
		 R_index[i]=i+1;
	 }
	 for(int i=0;i<R.length;i++) 
	 { 
	 for(int j=0;j<R.length-i-1;j++) 
     //升序排列用大于,降序排列用小于,此处为降序排列。 
	 if(R[j]<R[j+1]){
	     t=R[j];R[j]=R[j+1];R[j+1]=t;
	     mid=R_index[j];
	     R_index[j]=R_index[j+1];
	     R_index[j+1]=mid;
	     } 
	 }
	 for(int i=0;i<R.length;i++) {
		 
	 System.out.println(R[i]+"\t"+R_index[i]);
	 }
	 //柱状图显示
	 /*chart(R,R_index);*/
	 } 

/*public static void chart (double R[],int R_index[]){
	
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    int M = R.length;
    	for(int i = 0;i<M;i++)
			 {String s = String.valueOf(R_index[i]);
			  dataset.setValue(R[i],"第"+s+"属性","第"+s+"属性");
			 }
	JFreeChart chart =  ChartFactory.createBarChart3D("属性x(i)和输出变量y之间的依赖度表", "属性X[i]","依赖度R[i]",dataset,PlotOrientation.HORIZONTAL,true,false,false);
	ChartFrame BarFrame = new ChartFrame("属性x(i)和输出变量y之间的依赖度表",chart);
	BarFrame.pack();
	BarFrame.setVisible(true);
	}*/
}

⌨️ 快捷键说明

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