Создание хеш-таблицы для подсчета пар, триплетов, ... при частом майнинге предметов - PullRequest
0 голосов
/ 10 ноября 2018
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FreqItemset {

    // method to read parameters of file ( bucket and min sup)
    public int[] no_of_baskets_and_minsup(BufferedReader br) throws IOException {
        String line1 = br.readLine();
        return new int[] {Integer.parseInt(line1.split(" ")[0]), Integer.parseInt(line1.split(" ")[1])};
    }

    public void pass1(String file) {

        try {
            BufferedReader inputbr = new BufferedReader(new FileReader(file));
            int res[] = no_of_baskets_and_minsup(inputbr);
            int baskets = res[0];
            int minsup = res[1];
            System.out.println("Number of bukcets:"+baskets);
            System.out.println("Min support is:"+minsup);

            //pass 1 logic
            String basket=null;
            int[] unique_items = new int[100];
            while( (basket = inputbr.readLine()) !=null ) {  // for each basket

                String[] temp = basket.split(",");
                for(int i =1; i<temp.length; i++) {          // for each item in basket

                    unique_items[Integer.parseInt(temp[i])]++;   // increment counts
                }

                //todo create hashtable maintaing bukcet and count

                //For each pair of items in a basket.. 
                  // hash the pair to a bukce;
                  // add 1 to the count of that bukcet;
            }
        } catch (Exception ex) {
            System.out.println("Something wrong in Phase 1 :" + ex.getMessage() + "\n\n" + ex.getStackTrace());

        }
    }

    public static void main(String[] args) {

        String filename = "input.txt";
        long t1= System.currentTimeMillis();
        FreqItemset obj = new FreqItemset();
        obj.pass1(filename);
        long t2= System.currentTimeMillis();
        System.out.println("Time mili "+(t2-t1));
    }
}

При реализации алгоритма PCY с использованием техники Multihash для майнинга Frquent itemset .. в первом проходе мне нужно было создать массив 1-itemsets и их количество. Теперь мне нужно рассмотреть каждую пару из каждой корзины и хэшировать ее в корзину, используя хэш-функцию. Мне нужно создать 2 таблицы в Pass 1 (мультихеш PCY).

Я не могу придумать способ: учитывая пару элементов i, j, насколько я реализую хеш-таблицу, используя свою собственную функцию has, например, например. (i * j)% 51 и другой подобный для второй хэш-таблицы.

Я много читал о хеш-таблицах, но не нашел выхода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...