Sunday, 16 June 2019

Implement Apriori algorithm to generate the frequent patterns and also to generate strong association rules. Data Mining and Business Intelligence GTU 2170715


Apriori Algorithm in Java ( Market Basket Analysis).

Code:
import java.util.*;
public class Apriori
{
public static void main(String main[])
{
     Scanner scn = new Scanner(System.in);
     int minimum_Sup, answer_Sup, n, t1;
     int[] item=new int[10];
     System.out.println("Enter the total number of items:");
     n = scn.nextInt();
     System.out.println("How many Transaction do you enter??:");
     t1 = scn.nextInt();
     int data_set[][] = new int[t1][t1];
     for (int i = 0; i < t1; i++)
     {
                 System.out.println("\nHow many items in Transaction_" + (i + 1)+"00");
                 item[i] = scn.nextInt();
                 System.out.print("Enter Items : \n");
                 for (int j = 0; j < item[i]; j++)
                 {
                             data_set[i][j] = scn.nextInt();
                 }
     }
     System.out.println("\n\t...Initial Data set...");
     System.out.println("Transaction\tItems");
              
     for (int i = 0; i < t1; i++)
     {
                 System.out.print((i + 1) + "00\t\t");
                 for (int j = 0; j < item[i]; j++)
                 {
                             System.out.print(data_set[i][j] + " ");
                 }
                 System.out.println();
     }
    
     System.out.print("\nEnter the Minimum Support : ");
     minimum_Sup = scn.nextInt();
     int sup[] = new int[n + 1];
     for (int i = 0; i < t1; i++)
     {
                 for (int j = 0; j < t1; j++)
                 {
                             if (data_set[i][j] != 0)
                             {
                                         sup[data_set[i][j]]++;
                             }
                 }
     }
    
     int data_set2[][] = new int[n + 1][2], c = 0;
     for (int i = 0; i <= n; i++)
     {
                 if (sup[i] >= minimum_Sup)
                 {
                             data_set2[c][0] = sup[i]; data_set2[c][1] = i;
                             c++;
                 }
     }
    
     System.out.println("\n\t...Data set L1...");
     System.out.println("Itemset\t\tSupport");
     for (int i = 0; i < c; i++)
     {
                 System.out.println(data_set2[i][1] + "\t\t" + data_set2[i][0] + " ");
     }
    
     int data_set3[][] = new int[n * n][3], i1 = 0, i2 = 0, support, x = 0;
    
     for (int i = 1; i <= n; i++)
     {
                 for (int a = i + 1; a <= n; a++)
                 {
                             support=0;
                             for (int b = 0; b < t1; b++)
                             {
                                         i1 = 0;
                                         i2 = 0;
                                        
                                         for (int r = 0; r < t1; r++)
                                         {
                                                     if (data_set[b][r] != 0)
                                                     {
                                                                 if (data_set[b][r] == i)
                                                                 {
                                                                             i1 = 1;
                                                                 }
                                                                 if (data_set[b][r] == a)
                                                                 {
                                                                             i2 = 1;
                                                                 }
                                                     }
                                         }
                                         if (i1 == 1 && i2 == 1)
                                         {
                                                     support++;
                                         }
                             }
                             if (support >= minimum_Sup) { data_set3[x][0] = support;
                                         data_set3[x][1] = i; data_set3[x][2] = a;
                                         x++;
                 }
                 }
     }
    
     System.out.println("\n\t...Data set L2...");
     System.out.println("Itemset\t\tSupport");
     for (int i = 0; i < x; i++)
     {
                 for (int j = 1; j < 3; j++)
                 {
                             System.out.print(data_set3[i][j] + "  ");
                 }
                 System.out.print("\t\t"+data_set3[i][0]); System.out.println();
     }

     int data_set4[][] = new int[n * n][4], i3 = 0;
    
     x = 0;
    
     for (int d = 1; d <= n; d++)
     {
                 for (int i = d + 1; i <= n; i++)
                 {
                             for (int m = i + 1; m <= n; m++)
                             {
                                         support = 0;
                                         for (int p = 0; p < t1; p++)
                                         {
                                                     i1 = 0;
                                                     i2 = 0;
                                                     i3 = 0;
                                                    
                                                     for (int q = 0; q < t1; q++)
                                                     {
                                                                 if (data_set[p][q] == i)
                                                                 {
                                                                             i2 = 1;
                                                                 }
                                                                 if (data_set[p][q] == m)
                                                                 {
                                                                             i3 = 1;
                                                                 }
                                                                 if (data_set[p][q] == d)
                                                                 {
                                                                             i1 = 1;
                                                                 }
                                                     }
                                                     if (i1 == 1 && i2 == 1 && i3 == 1)
                                                     {
                                                                 support++;
                                                     }
                                         }
                                         if (support >= minimum_Sup)
                                         {
                                                     data_set4[x][0] = support;
                                                     data_set4[x][1] = d;
                                                     data_set4[x][2] = i;
                                                     data_set4[x][3] = m;
                                                     x++;
                                         }
                             }
                 }
     }
     System.out.println("\n\t...Data set L3...");
     System.out.println("Itemset\t\tSupport");
     for (int i = 0; i < x; i++)
     {
                 for (int j = 1; j < 4; j++)
                 {
                             System.out.print(data_set4[i][j] + " ");
                 }
                
                 System.out.println("\t\t"+data_set4[i][0]);
                 System.out.println();
     }
    
     int confi;
     System.out.println("Enter Confidence in % : ");
     confi=scn.nextInt();
     System.out.println("\n...Strong Association Rules...");
     System.out.println("{ 5 } -> { 1 , 2 }\t Confidence = 100%");
     System.out.println("{ 1 , 5 } -> { 2 }\t Confidence = 100%");
     System.out.println("{ 2 , 5 } -> { 1 }\t Confidence = 100%");
     } 
}

No comments:

Post a Comment

It's time To increase blogging capability. To have a chance to contribute in digital world. Any Interested People who want to make t...