• 大小: 19KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签: PrefixSpan  

资源简介

序列模式挖掘的PrefixSpan算法源代码

资源截图

代码片段和文件信息

/*
 PrefixSpan: An efficient algorithm for sequential pattern mining

 $Id: prefixspan.cppv 1.8 2002/04/03 13:35:23 taku-ku Exp $;

 Copyright (C) 2002 Taku Kudo  All rights reserved.
 This is free software with ABSOLUTELY NO WARRANTY.

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not write to the Free Software
 Foundation Inc. 59 Temple Place - Suite 330 Boston MA
 02111-1307 USA
*/

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

template  class PrefixSpan {
private:
  vector < vector  >             transaction;
  vector < pair  > pattern;
  unsigned int minsup;
  unsigned int minpat;
  unsigned int maxpat;
  bool all;
  bool where;
  string delimiter;      
  bool verbose;
  ostream *os;

  void report (vector  > &projected) 
  {
    if (minpat > pattern.size()) return;

    // print where & pattern
    if (where) { 
      *os << ““ << endl;

      // what:
      if (all) {
*os << ““ << pattern[pattern.size()-1].second << ““ << endl;
*os << ““;
for (unsigned int i = 0; i < pattern.size(); i++) 
  *os << (i ? “ “ : ““) << pattern[i].first;
      } else {
*os << ““;
 for (unsigned int i = 0; i < pattern.size(); i++)
   *os << (i ? “ “ : ““) << pattern[i].first 
       << delimiter << pattern[i].second;
      }

      *os << “
“ << endl;
      
      // where
      *os << ““;
      for (unsigned int i = 0; i < projected.size(); i++) 
*os << (i ? “ “ : ““) << projected[i].first;
      *os << “
“ << endl;

      *os << “
“ << endl;

    } else {

      // print found pattern only
      if (all) {
 *os << pattern[pattern.size()-1].second;
 for (unsigned int i = 0; i < pattern.size(); i++)
   *os << “ “ << pattern[i].first;
      } else {
 for (unsigned int i = 0; i < pattern.size(); i++)
   *os << (i ? “ “ : ““) << pattern[i].first
       << delimiter << pattern[i].second;
      }
       
      *os << endl;
    }
  }

  void project (vector  > &projected)
  {
    if (all) report(projected);
    
    map  > > counter;
  
    for (unsigned int i = 0; i < projected.size(); i++) {
      int pos = projected[i].second;
      unsigned int id  = projected[i].first;
      unsigned int size = transaction[id].size(

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

     文件         39  2002-04-07 23:24  prefixspan-0.4\AUTHORS

     文件      18009  2002-04-07 23:24  prefixspan-0.4\COPYING

     文件      51458  2002-04-07 23:24  prefixspan-0.4\data

     文件        526  2002-04-07 23:24  prefixspan-0.4\Makefile

     文件       6969  2002-04-07 23:24  prefixspan-0.4\prefixspan.cpp

     文件       3498  2002-04-07 23:24  prefixspan-0.4\README

     目录          0  2005-05-15 15:32  prefixspan-0.4

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

                80499                    7


评论

共有 条评论