2013-07-24 3 views
-1

나는 Oracle 데이터베이스로 작업하고 있으며 다음 코드를 java에 구현했습니다 (SQL 가져온 라이브러리 사용). 여기에는 평균 학생 그룹이 있으며, 평균은 평균에서 표준 편차보다 1 표준 편차보다 큽니다 ("1"이있는 새 열을 삽입 함). 그럼 난 기준을 충족하고 새 테이블에 추가 학생수 수 :K 평균 알고리즘 구현하기 JDBC

try{ 
     Statement stOne, stTwo, stThree, stFour; 
     String SelectAverage = "SELECT MEAN FROM STUDENTS"; 
      ResultSet rsOne = stOne.executeQuery(SelectAverage); 

    String TotalAverage = "SELECT Avg(MEAN) AS averages FROM STUDENTS"; 
      ResultSet rsTwo = stTwo.executeQuery(TotalAverage);  

      String student_stan_dev = "SELECT STDEV(MEAN) AS standardDeviation FROM STUDENTS"; 
      ResultSet rsThree = stThree.executeQuery(student_stan_dev); 

      int onesdMean = 1; 


      //Loop Duration_Sec column 
      while(rsOne.next()){ 

      //Convert values into float values 
      float allAvgs = rsOne.getFloat("MEAN"); 
      float totalAvg = rsTwo.getFloat("averages"); 
      float StDev = rsThree.getFloat("standardDeviation"); 

      float theSD = allAvgs - (onesdMean * StDev); 
      } 

     String flaggedStudents = "ALTER TABLE STUDENTS ADD FlaggedStudents INT"; 
     ResultSet rsFour = stFour.executeUpdate(flaggedStudents); 

      if(allAvgs >= theSD){ 
       String FlagHint = "INSERT INTO STUDENTS.FlaggedStudents VALUES('1')"; 
       st.executeUpdate(FlagHint); 
      } 

     String countInstances = "SELECT STUDENTS.NAME, STUDENTS.FlaggedStudents" + 
       "COUNT(*)OVER(PARTITION BY STUDENTS) AS cnt FROM STUDENTS"; 
      st.executeQuery(countInstances); 


     st.executeUpdate("CREATE TABLE IF NOT EXISTS StudentCount" + 
     "(NAME INT , cnt INT)"); 

     String insertVals = String.format("INSERT INTO StudentCount" + 
       "(NAME , cnt INT") + 
       " VALUES ('%s','%s')"); 

     st.execute(insertVals); 

내 질문은 제가 구현하려는이며,이 기준 및 별도을 충족 학생들을 클러스터링, 대신 알고리즘을 케이 - 의미 이 기준에 미치지 못하는 사람들. k-means 알고리즘의 소스 코드를 보았습니다. 그러나 java/SQL로 구현 된 데이터베이스로 어떻게 할 것입니까? 이 정보를 클러스터 배열에 추가하면됩니까? 어떤 도움을 주시면 감사하겠습니다.

답변

0

속성이 하나 뿐인 경우 k- 수단과 다른 알고리즘을 선택하십시오.

클러스터링 알고리즘은 실제로 다차원 데이터에만 유용합니다.

1 차원 데이터의 경우 커널 밀도 추정을 사용하여 로컬 최소값을 찾아서 데이터를 분할합니다. 이것은 훨씬 의미있는 나누기를 만듭니다. 동시에 1 차원 데이터를 정렬 할 수 있습니다 (정렬은 SQL 데이터베이스가 매우 잘 수행합니다). 이로 인해 여러 차원보다 문제가 훨씬 쉽게 처리됩니다.

진지하게. 1 차원 데이터는 고전 통계의 주요 영역입니다. 그들은 이런 종류의 데이터를위한 훌륭한 도구를 가지고 있으므로 사용하십시오!

계산을 가속화하는 데 어려움을 겪는 다차원 데이터는 데이터 마이닝이 실제로 빛나는 곳입니다. 합리적인 시간에 적절한 통계로 처리하기가 어려워지면 데이터 마이닝의 경험적 방식이 매력적입니다. 그러나 그 전에 고전적인 통계는 훨씬 더 영리하고 진보적입니다.

관련 문제