www.pudn.com > apriori的vc源代码.zip > main.cpp


#include  
#include  
#include  
#include  
 
#include "Apriori.h" 
#include "Association.h" 
#include "List.h" 
#include "itemSet.h" 
 
List *loadItemSets(char *datafile, int& max_pageno, bool keeporder) 
{ 
    List *m_data; 
    itemSet *pitemset; 
    char line[20*4096]; 
    int pageno, hostid; 
    char *t, *s; 
    double weight; 
    FILE *fp; 
 
    // try to open the data file 
    if((fp = fopen(datafile, "rt")) == NULL) 
    { 
        printf("Cannot open the data file %s !\n", datafile); 
		return (List *)NULL; 
    } 
 
    printf("\n\nLoading data from file %s  ...  ", datafile); 
	fflush(stdout); 
 
    // this is the data structure that stores the input data 
    m_data = (List *)new List(); 
    max_pageno = -1; 
 
    // Read in each line, extract all the items within this line 
    while(fgets(line, 20*4096, fp) != NULL) 
    { 
        if (strchr(line, ',') != NULL) 
        { 
            s = (char *) new char[strlen(line) + 1]; 
            strcpy(s, line); 
            if ((t = strtok(s, ",")) == NULL) 
            { 
                delete s; 
                break; 
            } 
 
            pitemset = (itemSet *)new itemSet(); 
			pitemset->keeporder(keeporder); 
             
            pageno = atoi(t); 
            if(max_pageno < pageno) 
                max_pageno = pageno; 
            pitemset->add(pageno); 
             
            t = strtok((char *)NULL, ","); 
 
            for ( ; t != NULL; t = strtok((char *)NULL, ",")) 
            { 
                pageno = atoi(t); 
                if(max_pageno < pageno) 
                    max_pageno = pageno; 
				 
                pitemset->add(pageno); 
            } 
 
            // if the length of the session is greater than 1, then insert it into the session list 
            if(pitemset->size() > 1) 
            { 
                pitemset->support(1); 
                m_data->add(pitemset); 
            } 
			else 
	            delete pitemset; 
 
            delete s; 
        } 
    } 
 
    fclose(fp); 
 
    printf("Finish Loading!\n\n"); 
	fflush(stdout); 
 
    return(m_data); 
} 
 
 
 
 
main( int argc, char *argv[] ) 
{ 
 
    List *loadItemSets(char *datafile, int& max_pageno, bool keeporder); 
 
	CApriori *m_apriori; 
	CAssociationRule *m_rules; 
    List *traindata; 
    int pagenum; 
    char *datafile = NULL, *rules; 
    double support = 0.1, confidence = 0.5; 
     
    int			c; 
    extern char		*optarg; 
     
  
	rules = (char *)new char[strlen(datafile) + 6 + 1]; 
	strcpy(rules, datafile); 
    strcat(rules, ".rules"); 
 
    
    m_apriori = new CApriori(); 
    m_apriori->setsupport(support); 
	m_apriori->pagenum = pagenum + 1; 
 
    // Finding large Itemsets from training data 
    m_apriori->FindLargeItemSets(traindata); 
     
 
    // Association Rules from extracted large item sets 
    m_rules = new CAssociationRule(); 
    m_rules->setconfidence(confidence); 
    m_rules->m_LargeItemSets = m_apriori->m_Ls; 
    m_rules->genrules(); 
    m_rules->save(rules); 
 
    // Clear off 
    delete m_apriori; 
    delete m_rules; 
 
    delete traindata; 
     
	delete rules; 
}