Showing posts with label Apriori Algorithm. Show all posts
Showing posts with label Apriori Algorithm. Show all posts

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%");
     } 
}

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