-1

私はOracleデータベースを使用しており、次のコードをJavaに実装しています(SQLインポートライブラリを使用)。ここには、学生のグループとその平均があり、平均が1標準偏差よりも高い学生にフラグを立てます平均から(「1」を含む新しい列を挿入することにより)。次に、基準を満たす学生の数を数えて、新しいテーブルに追加します。

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 アルゴリズムを実装して、この基準を満たす学生をクラスター化し、この基準を満たしていない学生を分離したいということです。k-means アルゴリズムのソース コードを見たことがありますが、Java/SQL で実装されたデータベースでそれを行うにはどうすればよいでしょうか? この情報をクラスター配列に追加するだけでよいでしょうか? どんな助けでも大歓迎です。

4

1 に答える 1

0

属性が 1 つしかない場合は、k-means とは異なるアルゴリズムを選択してください。

クラスタリング アルゴリズムは、実際には多次元データに対してのみ有効です。

1 次元データの場合、カーネル密度推定を使用して極小値を見つけ、そこでデータを分割します。これにより、より意味のある分割が生成されます。同時に、1 次元のデータを並べ替えることができます (並べ替えは SQL データベースで非常にうまく機能します)。これにより、複数の次元の場合よりも問題が大幅に軽減されます。

真剣に。1 次元データは、従来の統計の主要な領域です。彼らはこの種のデータのための優れたツールを持っているので、それらを使ってください!

計算を高速化するのが難しい多次元データは、データマイニングが真価を発揮する場所です。妥当な時間内に適切な統計を使用して問題を処理するのが難しくなりすぎると、データ マイニングのヒューリスティックなアプローチが魅力的になります。しかし、その前に、古典的な統計ははるかに賢く高度です。

于 2013-07-24T21:29:00.253 に答える