• 大小: 5KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: C/C++
  • 标签: C++  Apriori  

资源简介

C++实现Apriori算法,频繁模式数据挖掘,最大频繁项集,闭频繁项集,里面包括测试数据以及apriori.cpp、 apriori.h 、apriori_test.cpp三个文件。具体的相见博客:http://blog.csdn.net/FreeApe/article/details/49562315

资源截图

代码片段和文件信息

#include “apriori.h“

void Apriori::printMapSet(map< set int> &mapSet)
{
    map< set int >::iterator it = mapSet.begin();
    while(it != mapSet.end()){
        set::iterator itSet = it->first.begin();
        cout << “#“ << it->second << “\t“;
        cout << “[“ ;
        while(itSet != it->first.end()){
            cout << *itSet << ““ ;
            ++itSet;
        }
        cout << “]“ << endl;
        ++it;
    }
}
void Apriori::printsetSet(set< set > &setSet)
{
    set< set >::iterator c2It = setSet.begin();
    while(c2It != setSet.end()){
       set::iterator ckSetIt = (*c2It).begin();
       cout << “[“;
        while(ckSetIt != (*c2It).end()){
            cout << *ckSetIt << ““ ;
            ++ckSetIt;
        }
        cout << “]“<< endl;
        ++c2It;            
    }
}
void Apriori::printSet(set &setS)
{
    set::iterator setIt = setS.begin();
    cout << “[“;
    while(setIt != setS.end()){
        cout <<*setIt << ““ ;
        ++setIt;
    }
    cout << “]“ << endl;
}

//---------------------------------------------------------
//将文本数据存入到Map中,产生事务数据库D,即textDatabase
//---------------------------------------------------------
int Apriori::buildData()
{
/*打开文本文件*/
ifstream inFile;
    inFile.open(dataFileName.c_str());
if(!inFile){
cerr << “open “ < return EXIT_FAILURE;
}
/*读取文本行*/
string textline;
vector lines_of_text;

while(getline(inFiletextline))
lines_of_text.push_back(textline);
/*产生事务数据库*/
    int line_num ;
for(line_num = 0; line_num != lines_of_text.size(); ++line_num){
istringstream line(lines_of_text[line_num]);
string word;
while(line >> word){            
textDatabase[line_num].insert(word);
}
}
textDatabaseCount = textDatabase.size();
cout << “textDatabaseCount: “ << textDatabaseCount << “ “ << line_num<< endl;
return EXIT_SUCCESS;
}

//得到事物项集D中每项的重复度,即每项在事物项集中出现的频率
map< set int> Apriori::getTextDatabaseFre()
{
    map< set int> textDatabaseFre;
    map >::iterator textDataIt = textDatabase.begin();  
    while(textDataIt != textDatabase.end()){
        pair int>::iterator bool> ret = 
            textDatabaseFre.insert(make_pair(textDataIt->second1));
        if(!ret.second)
            ++ret.first->second;        
        ++textDataIt;
    }
    return textDatabaseFre;
}

//得到事物项集D中每项的支持度即统计数据集每一项作为子集出现的频率
//注:set中的string是按从小到大的顺序排列的
//map< set int >
map< set int> Apriori::getTextDatabaseSurpport()
{
    map< set int> textDatabaseSurpport;
    map< set int> textDatabaseFre = getTextDatabaseFre();
    //cout << “原始数据集D各项的频度“ << endl;
    //apriori.printMapSet(textDatabaseFre);
    map >::iterator textDataIt1 = textDatabase.begin();
    while(textDataI

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件         77  2015-10-16 22:14  test.txt

     文件         51  2015-11-01 20:55  test1.txt

     文件      11496  2015-11-01 20:33  apriori.cpp

     文件       1625  2015-11-01 20:32  apriori.h

     文件       6292  2015-11-01 21:26  apriori_test.cpp

----------- ---------  ---------- -----  ----

                19541                    5


评论

共有 条评论