diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..931fc08 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +venv/Lib \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7ad48a8 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "C:\\Users\\appa_\\AppData\\Local\\Programs\\Python\\Python38-32\\python.exe" +} \ No newline at end of file diff --git a/DWDM .ipynb b/DWDM .ipynb deleted file mode 100644 index 1b5209d..0000000 --- a/DWDM .ipynb +++ /dev/null @@ -1,472 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [], - "source": [ - "# create database in the paper\n", - "\n", - "database=dict()\n", - "# database['sid']=[10,20,30,40]\n", - "# database['sequence']=[['a','abc','ac','d'],['ad','c','bc','ae'],['ad','bc','df'],['a','abc','d']]\n", - "# database['timestamp']=[[0,1,2,3],[1,2,3,4],[1,3,5],[2,3,4]]\n", - "\n", - "database['10']=[['a',0],['abc',1],['ac',2],['d',3]]\n", - "database['20']=[['ad',1],['c',2],['bc',3],['ae',4]]\n", - "database['30']=[['ad',1],['bc',3],['df',5]]\n", - "database['40']=[['a',2],['abc',3],['d',4]]" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Input :\n", - "\n", - "1 2 269 4701 \n", - "\n", - "\n", - "\n", - "Time stamp\n", - "\n", - "[59.71594491384269, 620.9418924377105, 632.5470757282807, 766.0051342063122, 806.0901917840641, 962.0169388900936]\n", - "\n", - "\n", - "Sequence\n", - "\n", - "['9033', '184577138778', '128517057890', '404969087443', '07651739', '36279693']\n", - "dict_keys(['0', '1', '2', '4', '5', '6', '7', '8', '9'])\n" - ] - } - ], - "source": [ - "# snippet to generate the dataset and pre process it \n", - "\n", - "\n", - "# create database\n", - "\n", - "# database = dict()\n", - "# database['sid']=[10,20,30,40]\n", - "# database['sequence']=[['a','abc','ac','d'],['ad','c','bc','ae'],['ad','bc','df'],['a','abc','d']]\n", - "# database['timestamp']=[[0,1,2,3],[1,2,3,4],[1,3,5],[2,3,4]]\n", - "#\n", - "# database['10'] = [['a', 0], ['abc', 1], ['ac', 2], ['d', 3]]\n", - "# database['20'] = [['ad', 1], ['c', 2], ['bc', 3], ['ae', 4]]\n", - "# database['30'] = [['ad', 1], ['bc', 3], ['df', 5]]\n", - "# database['cd40'] = [['a', 2], ['abc', 3], ['d', 4]]\n", - "#\n", - "# # print database\n", - "#\n", - "# for i in database.keys():\n", - "# \tprint(i, end=' ')\n", - "# \tfor j in database[i]:\n", - "# \t\tprint(j[0], end=' ')\n", - "# \tfor j in database[i]:\n", - "# \t\tprint(j[1], end=' ')\n", - "# \tprint()\n", - "\n", - "import random\n", - "\n", - "# lower = 111; upper = 999\n", - "# random_float = random.uniform(lower, upper)\n", - "# print(random_float)\n", - "def Randlist(start, end, num):\n", - "\tres = []\n", - "\n", - "\tfor j in range(num):\n", - "\t\tval=(random.uniform(start, end))\n", - "\t#\tval=int(val)\n", - "\t\tres.append(val)\n", - "\n", - "\tres.sort()\n", - "\treturn res\n", - "\n", - "\n", - "text_file= open(\"sample.data\",\"r\")\n", - "lines= text_file.readlines()\n", - "# line1= lines[0]\n", - "undelted_lines= lines\n", - "print(\"\\nInput :\\n\")\n", - "print(lines[3])\n", - "x = dict()\n", - "for i in range(len(lines)):\n", - "\tline1 = list(lines[i].split(\" \"))\n", - "\t# print(line1)\n", - "\tline1.pop()\n", - "\tlength = int(line1[0])\n", - "\t# print(length)\n", - "\tline1.pop(0)\n", - "\t# x= dict()\n", - "\t# print(line1)\n", - "\tlst = []\n", - "\n", - "\tfor j in range(length):\n", - "\t\tsizeoflistoftime= int(line1[0])\n", - "\t\t# print(sizeoflistoftime)\n", - "\t\tline1.pop(0)\n", - "\t\t# print(line1)\n", - "\n", - "# listoftime=Randlist(0,1000,sizeoflistoftime)\n", - "\t\tlistoftime=Randlist(0,1000,1)\n", - "\t\tfor k in range(sizeoflistoftime):\n", - "\t\t\tline1.pop(0)\n", - "\t\t# print(listoftime)\n", - "\n", - "\t\tlst.append(listoftime[0])\n", - "\t# print(\"The list is :\")\n", - "\t# print(lst)\n", - "\tlst.sort()\n", - "\tx[i]=lst[:]\n", - "\n", - "\n", - "# print(x)\n", - "\n", - "# print(undelted_lines)\n", - "x2= dict()\n", - "\n", - "# item_alpha=dict()\n", - "# alphabet='a'\n", - "\n", - "for i in range(len(undelted_lines)):\n", - "\tline1 = list(undelted_lines[i].split(\" \"))\n", - "\t# print(line1)\n", - "\tline1.pop()\n", - "\tlength = int(line1[0])\n", - "\t# print(length)\n", - "\tline1.pop(0)\n", - "\t# print(line1)\n", - "\tlistoftime=[]\n", - "\tfor j in range(length):\n", - "\t\tsizeoflistoftime= int(line1[0])\n", - "\t\t# print(sizeoflistoftime)\n", - "\t\tline1.pop(0)\n", - "\t\t# print(line1)\n", - "\t\ttemp=\"\"\n", - "\t\t# listoftime=Randlist(0,1000,sizeoflistoftime)\n", - "\t\tfor k in range(sizeoflistoftime):\n", - " \n", - "# \t\t\tif line1[0] in item_alpha.keys():\n", - "# \t\t\t\tpass\n", - "# \t\t\telse :\n", - "# \t\t\t\titem_alpha[line1[0]]=alphabet\n", - "# \t\t\t\talphabet=chr(ord(alphabet)+1)\n", - "\t\t\ttemp=temp+line1[0].zfill(4)\n", - "\t\t\tline1.pop(0)\n", - "\n", - "\n", - "\t\tlistoftime.append(temp)\n", - "\t# print(listoftime)\n", - "\tx2[i]=listoftime\n", - "\n", - "print(\"\\n\\nTime stamp\\n\")\n", - "print(x[2])\n", - "print(\"\\n\\nSequence\\n\")\n", - "print(x2[2])\n", - "\n", - "database=dict()\n", - "for i in x.keys():\n", - " if len(x[i])>1:\n", - " database[str(i)]=[]\n", - " for j in range(len(x[i])):\n", - " database[str(i)].append([x2[i][j],x[i][j]])\n", - " \n", - "print(database.keys())" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 2479 21545477 0440227660369838 6639792690549748 1247 1992 2535 509577449337 234347377188851892419486 15.469584262986613 75.6177321104664 155.78500287678798 173.64829834524076 455.4399385621556 500.484809781422 523.9953960957207 570.1059519605159 861.7382510468273 \n", - "1 076515427203 585473098827 5993 0991495663767993 060617988964 060610912787 40235242 245163928259 07033355589271699239 118.51177604665509 182.28992773802665 367.3632842084625 376.08000570181997 395.58320704113424 886.6666090937258 938.9197731893184 959.6817148375404 990.8099147450886 \n", - "2 9033 184577138778 128517057890 404969087443 07651739 36279693 59.71594491384269 620.9418924377105 632.5470757282807 766.0051342063122 806.0901917840641 962.0169388900936 \n", - "4 62737655 2654 478.2847102154313 911.4960984422834 \n", - "5 0149 35339471 5758 1491 5024 3812 155.00180545961194 163.6677920404198 617.7771644906031 633.6137864801188 676.8115396080481 942.4122063655578 \n", - "6 340447646487 521076377771 140555019708 357238757705 270941675713 0886287069187963857191259795 07236970 06255975 12.886202605772446 50.0837043321627 166.00945124360146 189.51248295548862 439.7787871131751 883.2450985837778 903.5302630767404 981.1772022893753 \n", - "7 7851 2053 58268595 1734 46.275544054731995 62.43536446145293 118.93634783391649 946.6968439733122 \n", - "8 72137771 5510 46529373 9928 67717774 31138769 45.93273726408731 95.04437502921293 161.27419795678634 365.551422010759 526.229583208764 854.5005573980293 \n", - "9 07656075 5735 3541 2715 2104 74.89404059066985 201.93216407003922 299.8990747881353 678.3754420434778 933.8630489489843 \n", - "[['2479', 15.469584262986613], ['21545477', 75.6177321104664], ['0440227660369838', 155.78500287678798], ['6639792690549748', 173.64829834524076], ['1247', 455.4399385621556], ['1992', 500.484809781422], ['2535', 523.9953960957207], ['509577449337', 570.1059519605159], ['234347377188851892419486', 861.7382510468273]]\n" - ] - } - ], - "source": [ - "# print database\n", - "\n", - "for i in database.keys():\n", - " print(i,end=' ')\n", - " for j in database[i]:\n", - " print(j[0],end=' ')\n", - " for j in database[i]:\n", - " print(j[1],end=' ')\n", - " print()\n", - "print(database['0'])" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# function to return time-intervals\n", - "def time_interval_itemsets(i,j):\n", - " \n", - " time_i=i[1]\n", - " time_j=j[1]\n", - " \n", - " return(abs(time_i-time_j))\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# itemset pair generation\n", - "def itemset_pair_generator(seq):\n", - " \n", - " itemset_pairs=[]\n", - " n=len(seq)\n", - " for i in range(n):\n", - " for j in range(i+1,n):\n", - " itemset_pairs.append([seq[i],seq[j]])\n", - " \n", - " return(itemset_pairs)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# function to generate the time intervals for a sequence\n", - "def time_interval_sequence(itemset_pairs):\n", - " \n", - " itemset_pairs_time=[]\n", - " for i in itemset_pairs:\n", - " time_interval=time_interval_itemsets(i[0],i[1])\n", - " itemset_pairs_time.append(i+[time_interval])\n", - " \n", - " return(itemset_pairs_time)\n", - " \n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# function to obtain the strength of a pair of itemsets\n", - "def strength_pair(itemset_pairs_time):\n", - " \n", - " itemset_pairs_time_strength=[]\n", - " for i in itemset_pairs_time:\n", - " \n", - " itemset1=i[0][0]\n", - " itemset2=i[1][0]\n", - "# strength= len(itemset1)*len(itemset2)\n", - " strength= len(itemset1)*len(itemset2)/16 # because each item has 4 characters\n", - " itemset_pairs_time_strength.append(i+[strength])\n", - " \n", - " return itemset_pairs_time_strength\n", - " \n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "# def main(): main function\n", - " \n", - "for i in database.keys():\n", - " itemset_pairs=itemset_pair_generator(database[i])\n", - " itemset_pairs_time=time_interval_sequence(itemset_pairs)\n", - " itemset_pairs_time_strength=strength_pair(itemset_pairs_time)\n", - " TiW=TiW_sequence(itemset_pairs_time_strength)\n", - " database[i].append(TiW)\n", - "\n", - "print()" - ] - }, - { - "cell_type": "code", - "execution_count": 133, - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "'float' object is not subscriptable", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mitemset_pairs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mitemset_pair_generator\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdatabase\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'2'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mitemset_pairs_time\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtime_interval_sequence\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitemset_pairs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mitemset_pairs_time_strength\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mstrength_pair\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitemset_pairs_time\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mTiW\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mTiW_sequence\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitemset_pairs_time_strength\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;31m# print(itemset_pairs)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m\u001b[0m in \u001b[0;36mtime_interval_sequence\u001b[1;34m(itemset_pairs)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mitemset_pairs_time\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mitemset_pairs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mtime_interval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtime_interval_itemsets\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 7\u001b[0m \u001b[0mitemset_pairs_time\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtime_interval\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m\u001b[0m in \u001b[0;36mtime_interval_itemsets\u001b[1;34m(i, j)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mtime_i\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0mtime_j\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;32mreturn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mabs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtime_i\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mtime_j\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mTypeError\u001b[0m: 'float' object is not subscriptable" - ] - } - ], - "source": [ - "# testing functions\n", - "\n", - "itemset_pairs=itemset_pair_generator(database['2'])\n", - "itemset_pairs_time=time_interval_sequence(itemset_pairs)\n", - "itemset_pairs_time_strength=strength_pair(itemset_pairs_time)\n", - "TiW=TiW_sequence(itemset_pairs_time_strength)\n", - "# print(itemset_pairs)\n", - "print(TiW)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# function to calculate the weighting function of the time interval\n", - "def weighting_function(time_interval):\n", - " \n", - " delta=0.9\n", - " u=1\n", - " w_TI=delta**(time_interval/u)\n", - " \n", - " return(w_TI)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# function to calculate the time interval weight of the sequence\n", - "def TiW_sequence(itemset_pairs_time_strength):\n", - " \n", - " total_strength=0\n", - " weighted_strength=0\n", - " for i in itemset_pairs_time_strength:\n", - " \n", - " w_TI=weighting_function(i[2])\n", - " weighted_strength+=w_TI*i[3]\n", - " total_strength+=i[3]\n", - " \n", - " TiW=weighted_strength/total_strength\n", - " \n", - " return(TiW)\n", - " \n", - " \n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# function to check if a given sequence is a super sequence of the other \n", - "# checks if seq1 is a super sequence of seq2\n", - "def is_super_seq(seq1,seq2):\n", - " i= 0\n", - " j= 0\n", - " \n", - " while i, line 2)", - "output_type": "error", - "traceback": [ - "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m2\u001b[0m\n\u001b[1;33m def TiW_support()\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" - ] - } - ], - "source": [ - "# testing function\n", - "# def TiW_support()\n", - "\n", - "count=0\n", - "for i in database.keys():\n", - " seq1=database[i]\n", - " seq2=[['ad'],['bc'],[]]\n", - " count+=is_super_seq(seq1,seq2)\n", - " \n", - "print(count/len(database.keys()))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/DWDM.ipynb b/DWDM.ipynb new file mode 100644 index 0000000..4f2ce99 --- /dev/null +++ b/DWDM.ipynb @@ -0,0 +1,702 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# create database in the paper\n", + "\n", + "database=dict()\n", + "# database['sid']=[10,20,30,40]\n", + "# database['sequence']=[['a','abc','ac','d'],['ad','c','bc','ae'],['ad','bc','df'],['a','abc','d']]\n", + "# database['timestamp']=[[0,1,2,3],[1,2,3,4],[1,3,5],[2,3,4]]\n", + "\n", + "database['10']=[['a',0],['abc',1],['ac',2],['d',3]]\n", + "database['20']=[['ad',1],['c',2],['bc',3],['ae',4]]\n", + "database['30']=[['ad',1],['bc',3],['df',5]]\n", + "database['40']=[['a',2],['abc',3],['d',4]]" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "\nInput :\n\n1 2 269 4701 \n\n\n\nTime stamp\n\n[94.36192205809746, 117.6714270956375, 483.9212648643609, 533.4169600885405, 558.400191175879, 753.794192889342]\n\n\nSequence\n\n['9033', '184577138778', '128517057890', '404969087443', '07651739', '36279693']\ndict_keys(['0', '1', '2', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96'])\n" + } + ], + "source": [ + "# snippet to generate the dataset and pre process it \n", + "\n", + "\n", + "# create database\n", + "\n", + "# database = dict()\n", + "# database['sid']=[10,20,30,40]\n", + "# database['sequence']=[['a','abc','ac','d'],['ad','c','bc','ae'],['ad','bc','df'],['a','abc','d']]\n", + "# database['timestamp']=[[0,1,2,3],[1,2,3,4],[1,3,5],[2,3,4]]\n", + "#\n", + "# database['10'] = [['a', 0], ['abc', 1], ['ac', 2], ['d', 3]]\n", + "# database['20'] = [['ad', 1], ['c', 2], ['bc', 3], ['ae', 4]]\n", + "# database['30'] = [['ad', 1], ['bc', 3], ['df', 5]]\n", + "# database['cd40'] = [['a', 2], ['abc', 3], ['d', 4]]\n", + "#\n", + "# # print database\n", + "#\n", + "# for i in database.keys():\n", + "# \tprint(i, end=' ')\n", + "# \tfor j in database[i]:\n", + "# \t\tprint(j[0], end=' ')\n", + "# \tfor j in database[i]:\n", + "# \t\tprint(j[1], end=' ')\n", + "# \tprint()\n", + "\n", + "import random\n", + "\n", + "# lower = 111; upper = 999\n", + "# random_float = random.uniform(lower, upper)\n", + "# print(random_float)\n", + "def Randlist(start, end, num):\n", + "\tres = []\n", + "\n", + "\tfor j in range(num):\n", + "\t\tval=(random.uniform(start, end))\n", + "\t\tres.append(val)\n", + "\n", + "\tres.sort()\n", + "\treturn res\n", + "\n", + "text_file= open(\"Datasets/hundred.data\",\"r\")\n", + "lines= text_file.readlines()\n", + "# line1= lines[0]\n", + "undelted_lines= lines\n", + "print(\"\\nInput :\\n\")\n", + "print(lines[3])\n", + "x = dict()\n", + "for i in range(len(lines)):\n", + "\tline1 = list(lines[i].split(\" \"))\n", + "\tline1.pop()\n", + "\tlength = int(line1[0])\n", + "\tline1.pop(0)\n", + "\tlst = []\n", + "\n", + "\tfor j in range(length):\n", + "\t\tsizeoflistoftime= int(line1[0])\n", + "\t\tline1.pop(0)\n", + "\t\t\n", + "\t\tlistoftime=Randlist(0,1000,1)\n", + "\t\tfor k in range(sizeoflistoftime):\n", + "\t\t\tline1.pop(0)\n", + "\n", + "\t\tlst.append(listoftime[0])\n", + "\n", + "\tlst.sort()\n", + "\tx[i]=lst[:]\n", + "\n", + "x2= dict()\n", + "\n", + "for i in range(len(undelted_lines)):\n", + "\tline1 = list(undelted_lines[i].split(\" \"))\n", + "\tline1.pop()\n", + "\tlength = int(line1[0])\n", + "\tline1.pop(0)\n", + "\tlistoftime=[]\n", + "\tfor j in range(length):\n", + "\t\tsizeoflistoftime= int(line1[0])\n", + "\t\tline1.pop(0)\n", + "\t\ttemp=\"\"\n", + "\t\tfor k in range(sizeoflistoftime): \n", + "# \t\t\tif line1[0] in item_alpha.keys():\n", + "# \t\t\t\tpass\n", + "# \t\t\telse :\n", + "# \t\t\t\titem_alpha[line1[0]]=alphabet\n", + "# \t\t\t\talphabet=chr(ord(alphabet)+1)\n", + "\t\t\ttemp=temp+line1[0].zfill(4)\n", + "\t\t\tline1.pop(0)\n", + "\n", + "\n", + "\t\tlistoftime.append(temp)\n", + "\t# print(listoftime)\n", + "\tx2[i]=listoftime\n", + "\n", + "print(\"\\n\\nTime stamp\\n\")\n", + "print(x[2])\n", + "print(\"\\n\\nSequence\\n\")\n", + "print(x2[2])\n", + "\n", + "database=dict()\n", + "for i in x.keys():\n", + " if len(x[i])>1:\n", + " database[str(i)]=[]\n", + " for j in range(len(x[i])):\n", + " database[str(i)].append([x2[i][j],x[i][j]])\n", + " \n", + "print(database.keys())" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "13', 154.27655069174318], ['3467', 158.9257075404158], ['6711', 258.5839633664695], ['15376643', 349.9020060487912], ['36299542', 403.7490447523271], ['6734', 405.66497458324227], ['21327396', 463.3482589936657], ['450855739488', 587.1213698437947], ['32467317', 775.4021670101178], ['37117635', 795.14558603152], ['4876', 833.2869468601693], ['38129296', 913.3353094793592]], '39': [['58356804', 188.27380850072072], ['56508723', 302.1287657305607], ['7080', 633.7902879764717], ['42468760', 643.4097362726027], ['03411805', 672.1271354781092], ['0827330049767473', 818.0452330831725], ['37714432', 831.110610419531], ['046724856353', 834.42492743159], ['10674047', 849.6727335377893], ['40565461', 990.3977108681311]], '40': [['31349119', 31.891536885160555], ['453352615619', 206.4333385525311], ['019829886879', 273.24855796464976], ['555963567534', 292.466259135657], ['357780329614', 322.3866106773929], ['16697090', 396.47430754030876], ['4001', 418.21163709351225], ['60847220', 575.1458587569429], ['76989662', 847.4267906438008], ['0229', 989.5529959164126]], '41': [['2963', 9.938559824748449], ['10653331489782858618', 111.72063917573006], ['0467130422725479', 137.13236763425041], ['0127516253087572', 174.55237624248198], ['3093328436277406', 222.9531422879554], ['04142065666869149300', 519.2819270917215], ['01380735334541974594', 662.6933284278309], ['2117408556796508', 839.4971814646399], ['0045119926549845', 909.3389776013278], ['18162393297779388080', 932.9211845998783]], '42': [['69629448', 206.115753383877], ['3726', 344.1096518966943], ['80969556', 362.43871421531117], ['1981', 751.2064952586994], ['39275321', 765.5183922091334], ['170424243461', 786.9233038857373], ['339835596241', 818.0596345990922]], '43': [['7705', 5.112878872794435], ['0744', 115.20021520184376], ['0070', 745.5231095366524], ['0075', 767.306933560284], ['97059978', 777.5133141336988], ['5270', 927.7454089920074]], '44': [['349135726810', 251.9629461903137], ['184445709402', 284.5222166540201], ['13395096', 531.2555180651001], ['1801', 814.7692951882668], ['1397', 919.9352615300394]], '45': [['649571018273', 32.846846506356606], ['62288341', 229.56345855337767], ['250529983212544961317455', 232.65501266160317], ['1312335140987101', 260.0854951280024], ['379049227375', 305.0794628732997], ['4213465451106771', 461.35958994243134], ['13342031237572277622770889059463', 483.8412398042794], ['5893609286728837', 528.775219365263], ['0681153720823491', 597.9816938142112], ['01630414218233909229', 833.6946585001294], ['01380272309332794372745585789062', 843.0030875242021], ['01170293178158938274', 857.1439144595893], ['1563560568797958', 945.9041984753479]], '46': [['12791792346739869728', 69.29864671049025], ['0684139715914953', 123.62596863398811], ['754878238375', 141.57738395724462], ['1917500461198436', 192.6712982396933], ['1831281738515928', 416.39734347783076], ['094613382774438656059764', 554.1062339730942], ['226461507671', 583.8836925149257], ['6918779692889591', 712.2429155098306], ['0057134544976725', 779.1919822466396], ['1079149121176804', 791.3155251556219], ['030328806228802681818672', 793.3454075589895], ['1005221154997353', 915.245199800749]], '47': [['67587101', 117.52892686249106], ['25122998', 161.80187771535614], ['1880288032797930', 163.55620314765218], ['35763661', 337.6346858030572], ['333866148905', 488.8327332048564], ['18442155', 499.15353466323177], ['82748783', 913.9624488768184]], '48': [['667492879623', 160.78250527263015], ['67617192', 483.42664653393973], ['3315432891939627', 580.401055553396], ['002723953204453468407926', 887.7959010249571], ['6220', 990.3799426494983], ['68049066', 995.2100966713873]], '49': [['9527', 105.68995942341563], ['74407845', 217.2144786705953], ['4908', 439.048388612723], ['19987269', 460.8543269118131], ['1816', 819.5210045617931], ['60928169', 977.8581064927039], ['4477', 980.26230323188], ['6749', 992.3586747265521]], '50': [['197924216315759475989913', 20.78245865270789], ['021202940845312239347031', 72.04733899726168], ['0155127620664737487150249461', 390.51836373438556], ['096649617528', 542.9464707326183], ['07452164328236685862', 598.0401053475784], ['30223298334159386045', 600.411037197927], ['02711813322638264929', 699.2649340220119], ['132720524168692481969532', 842.5421316699495], ['0116296157876640', 848.4795453762812], ['02650687572971898488', 996.0424996665888]], '51': [['02078595', 45.95057027494609], ['243193559567', 111.12242792867588], ['06066960', 155.5912511229598], ['02658447', 566.2097164962298], ['13042424', 614.0219123133794], ['3613', 907.9811842287994], ['8279', 920.4060663293956]], '52': [['60119364', 72.35871732323784], ['313491199548', 125.88438695518467], ['133752719752', 178.09643056872738], ['17679695', 190.1530518020985], ['4901', 199.32362851797237], ['49058982', 203.9281542822501], ['64997175', 249.68363817918726], ['3577', 274.2667425712446], ['4001', 314.681750379715], ['1301149129033441', 434.01442350804996], ['6919', 488.9891798575584], ['32817220', 675.1031831510519], ['6042', 699.8976770895116], ['44199662', 786.3789961852075], ['0070', 816.6125390667845], ['9054', 879.2621154350802]], '53': [['0874', 136.5956382689757], ['9934', 221.4958266092998], ['3984', 473.44254438910593], ['8285', 664.8506429848121], ['1877', 679.1075960159874], ['5471', 991.0187978560127]], '54': [['1362', 11.574497119254957], ['8404', 783.8251579269103]], '55': [['13452766769686179511', 21.711744951067978], ['29674734582661476195', 30.948238169248743], ['054210111859306631344773624186059119', 53.70012542212077], ['29804463688671369000', 126.41619543232207], ['1150531167438788', 128.79633778318887], ['08722181453362257510', 198.55137485482211], ['03652071328935773708542266547771', 472.1548016117789], ['0002186740019889', 479.2842039034747], ['18283899610668187123', 492.8341030790384], ['593573929153', 578.2312908925072], ['003412944469537867187220', 938.2889881552971]], '56': [['7203', 59.87863771279467], ['3461', 68.25901906780429], ['013944239448', 76.03929278196675], ['170937267653', 391.3237985609999], ['02294181', 451.80049640515386], ['245136655321', 488.9703472593147], ['242453098825', 565.7510810880843], ['3355', 803.0662501636166], ['0790', 864.3174629325239], ['7827', 886.7661932029193], ['6241', 922.3384075088536]], '57': [['06193592420267827986', 72.4613511255896], ['0430114617986111667471839517', 102.83196991906185], ['03041880425282798732', 140.41948191889475], ['2370604291709431', 235.58942267195638], ['63766771827482899043', 294.03695385057705], ['33383835643767957396', 386.82667379482007], ['160946696775', 453.77630006487726], ['0044171424106629756083518440', 518.0453351898624], ['1018109217311991466451716474', 577.5551136764409], ['01881504180619547192890298529916', 640.1707845216023], ['0183021005480738123435514149592483939954', 700.0027506099406], ['20732658522657247443', 808.8698527323486], ['228552496953', 951.3179235539548]], '58': [['0606276654417145', 76.59640135280755], ['1638318836064024462665319668', 234.301117593141], ['33114296537371707823', 490.5723685753209], ['12747098768380719836', 677.6025755623244], ['09507146742077219613', 737.6265936923943], ['19181930368038894751592868997002', 743.3552913533987], ['33344876536654797379', 752.7388871192923]], '59': [['5511', 250.11753496918055], ['1023', 795.9324708990302], ['8534', 846.7686969468075], ['3342', 858.8452455219424]], '60': [['61786961', 35.74795056027469], ['65168685', 341.1458474103766], ['68837406', 421.25591792501274], ['02695350', 431.32902461483593], ['5088', 496.4053482159134], ['186822545825', 536.6767570479535], ['066216307379', 626.3855204959164], ['63539593', 870.4282645780028], ['03978944', 903.9159070320768], ['6742', 977.67527374885]], '61': [['30184900', 27.182448752340214], ['0198207229887721', 86.5848466911131], ['18019195', 451.82063521789684], ['28157774801590449229', 592.4478132749338], ['06451920437248765562787687649338', 594.7642637151835], ['114623615437', 666.5749216057379], ['295630394469', 889.3232128057799], ['166958937316', 900.5630392092905]], '62': [['3212', 30.26192952177076], ['5317', 213.71908023947285], ['06459338', 274.7978115357467], ['8498', 356.55988244663837], ['30393278', 368.304710832807], ['129045785783', 389.94372640268415], ['068147346626', 486.8751375287661], ['3066', 494.6815298409287], ['01630476', 534.3351418891517], ['4463', 637.9199397477986], ['027218282890', 767.3698163347739], ['072753438982', 769.9908189912718], ['6045', 880.9110420191997]], '63': [['8384', 97.33295299534694], ['00617285', 194.24061771376867], ['2797', 364.1097542193107], ['9950', 462.5007310052821], ['8181', 727.3431563105771], ['1187', 964.7181296611686]], '64': [['2077213236676365', 67.18098713559573], ['0173336434914688', 173.33935362339693], ['11861453327071898911', 325.29509171959046], ['759782619954', 465.58799327757896], ['19705098', 471.2378433831732], ['0651174358866261', 660.4230245725424], ['40334603', 759.3595067031503], ['32774135607574219574', 871.2166301245184], ['3592691073547528', 889.8425010863681], ['340546655993', 915.4844882670924], ['391653097210799397809897', 980.4930567628928], ['1662180559916750', 992.8636187894102]], '65': [['5483', 83.7646429612492], ['18618069', 99.94708859584323], ['28006344', 187.6384218082099], ['3337', 203.24101248125947], ['01479377', 205.4413396551602], ['02697167', 230.36280781083096], ['5622', 296.9784601813756], ['000570998074', 711.0827633593941], ['1038152649058199', 730.8611349271812], ['19387121', 734.6543838960112], ['543683518816', 789.2607644592476], ['62018636', 793.1500084758369], ['383588969034', 821.159409558011], ['5812', 867.9911691263809], ['507971387457', 871.6669045893776]], '66': [['53549363', 44.49286314878287], ['024299169943', 72.70890821270248], ['49718444', 334.3265300090853], ['4177798295229559', 366.8377624405318], ['0173', 421.40519644207063], ['8053', 647.2593948468756]], '67': [['5854651675288723', 32.87722347759659], ['026953505800', 103.42106888497659], ['184588879128', 257.7970586427284], ['446350946144', 684.1652366159722], ['0397', 704.3676608389745], ['547967429637', 816.3323514063188], ['443249058479', 844.6601909008729]], '68': [['340446369023', 73.49713945183112], ['10921731', 125.09817312008909], ['06813706', 231.5006767624753], ['22346399', 272.0788772550324], ['2487', 279.78316485100083], ['302935725177', 373.44352549126216], ['6186', 585.077444588045], ['112727099407', 786.7957566861596], ['08863772656487738790', 844.5070087974607], ['69707989', 905.5404092160362], ['27316235', 919.2073187338655], ['2447', 952.5259168184839]], '69': [['195483819364', 21.02763329812596], ['25948727', 110.80549927069771], ['30809269', 478.6630090206935], ['271365129548', 527.6425789831382], ['16923433613483568669', 532.2208610923873], ['18989204', 533.9259746891271], ['5645712473727972', 534.1430606318008], ['215427415271', 603.9558206541398], ['15661759', 667.4446159433451], ['277930804630', 868.4968187955676], ['1504', 897.0746575780222]], '70': [['1187268361747805894792509843', 16.898645819747315], ['2726373642568356', 167.94252192236482], ['0466166530236318', 293.2774333166821], ['4093709977749987', 298.47421021702814], ['02101663473489299287', 482.3851976032725], ['03064449', 490.3072097543273], ['092787318822', 872.2302692797912], ['193822323613466581458515', 891.4597601860621]], '71': [['34667616', 9.265502392972301], ['28715998', 27.487981308192854], ['53196495', 129.96254944263507], ['1463', 191.2415931790573], ['249443367868', 710.0750933661134], ['40965724', 944.9542861873911]], '72': [['0244195640609060', 199.69061615377947], ['33457801', 214.59897489754633], ['9008', 499.76306388672543], ['22672481326660188293', 555.629788704302], ['0624313973769068', 631.9204159710059], ['04663278509352848735', 673.676464244071], ['16878906', 830.4017384505447], ['118745179722', 895.2974678087083]], '73': [['02670440', 169.0720764240361], ['1724176725808696', 393.8449649427714], ['012701613022', 408.05426926711095], ['4649593863766804775985158901', 611.4104366868854], ['68227379', 743.5650630938078], ['187979268731', 800.6545377331639], ['36394145465051935380', 840.8726809611352]], '74': [['3004', 34.472216629579556], ['044821234112416777368567', 160.47827693086424], ['1822329366628285', 190.09248544059298], ['60446392787979719195', 530.8233238559719], ['03130906126825123587869188169790', 625.3814326332559], ['313060406488743574727855', 717.235429028085], ['30393066632694639841', 907.4902653590425]], '75': [['5282', 91.40606510592252], ['7077', 215.56583768758796], ['7101', 239.74690056339853], ['2998', 243.5207184339574], ['283749227375', 667.570536864436], ['12578905', 747.1807516704237], ['82749469', 912.6084454688784]], '76': [['37327810', 30.013588185143213], ['492059348488', 146.36135186313203], ['17988964', 314.1055937321046], ['7905', 377.0044598890687], ['07656662', 501.9403980350049], ['0237', 569.9231745125801], ['38454177', 625.8254649422387], ['7406', 763.2104708285594], ['9739', 769.9872638054451]], '77': [['7891', 107.73759392423898], ['1993', 132.29100184530685], ['212540665907', 219.498106316543], ['2031', 249.0867940208613], ['05381860450645799084', 466.7998770648875], ['126920583878', 641.9781467333137], ['17657598', 643.7068004931997], ['509467417524', 696.6394437020014], ['130032576011', 996.8440272968406]], '78': [['2991', 445.0946022569641], ['3122572971927448', 480.20468067689484], ['0440', 721.6377108059024], ['7389', 767.4753575324343], ['1759', 772.4973204666078], ['7583', 776.5542274955017], ['7661', 833.5859725461248], ['5477', 853.4818380581183], ['8540', 902.9056548582962], ['1825', 904.4220021420261]], '79': [['22178518', 39.41564491513538], ['027014906207', 80.46184860929961], ['205145256045', 253.45775947570826], ['70127211', 254.1613100029778], ['1006293847776784', 275.5799763541951], ['468891189627', 293.32441185281476], ['34575724', 343.4789805336828], ['08850968761283739250', 375.46545883813553], ['369737077580764677039219', 570.969288008921], ['0510', 661.360578065307], ['057711261725', 929.4792714635033], ['012116347511', 992.295464590148]], '80': [['17982182508589649841', 107.51843469049771], ['475155639739', 205.8606841273446], ['18663889522258177894', 290.97794830837944], ['1772257369437966', 318.88993042592284]], '81': [['04922921', 12.093493428638524], ['1536', 22.68852979689906], ['05389943', 428.3323697452349], ['510062256763', 468.6712002442455], ['3304', 708.4862978559], ['25809623', 837.7753514003657], ['26603405503469808148', 899.9103829114454], ['239628806161', 934.8466668015723], ['56617301', 985.1258777668636]], '82': [['3335562372277708', 147.6132144957244], ['41469124', 340.2848947037881], ['24517832', 474.5357095364696], ['3606408545659073', 618.7825301285728], ['064625055449', 776.0245585899607], ['2991327962259373', 826.9777739509994]], '83': [['3873495683798486', 63.25270959993357], ['1185501353115568', 379.93473160884037], ['518283799877', 433.9953683568496], ['3406568092889775', 434.29535401379684], ['089348485724', 442.94699344952693], ['0426115329993951538764127167', 467.08972318618015], ['198324758816', 488.3189961086081], ['48485876', 565.4211066074927], ['3390', 622.107843723642], ['16855241554461669572', 788.6011824273521], ['05581529298548535883839889379407', 952.257121280019]], '84': [['1824492071348457', 128.42910641696227], ['28734902', 193.64022222910916], ['538259038969', 276.64554220915306], ['0327538081769082', 357.8917524376618], ['39214494', 445.7064915035458], ['784580429044', 451.4599395628649], ['06463555466049917919', 528.6237646773643], ['0170372056948389', 545.8252373792201], ['038178058947', 586.1829893621074], ['061765129916', 606.7481719859351], ['124128595735', 668.4046554442376], ['51747905', 782.512195718961], ['095064326650', 865.9185650974371], ['2261', 900.7685023859619], ['189835538788', 958.419275646042]], '85': [['2635447749716352807387279160', 11.927497273797382], ['220034074202547756319852', 41.098546265466055], ['537558509761', 68.14407360003838], ['04405005564158116036', 79.41743823759428], ['24856353651279539748', 213.14659210802768], ['046019724429472873428669', 234.65363764897575], ['06461247230184898722', 250.3469199489683], ['25355850', 286.2044136142091], ['22362686509577448003', 416.35620268947537], ['369485188729', 630.864664484655], ['0237403763057832', 631.7223558465106]], '86': [['02677858', 60.93469723570877], ['8696', 111.525802920189], ['23393039395669217109', 239.67022420914853], ['68229840', 287.2285806416846], ['30043022328870508678', 378.52348452542896], ['5375585062119761', 435.9502422168884], ['3812', 574.1792643120222], ['9177', 794.9526239222142], ['4068411247937736', 825.8637892242293], ['682278557953', 864.3418919713445], ['18793335345079269195', 866.3586516659792], ['47288669', 948.95187986621], ['223636395380', 956.1154118065775], ['0139338944235050', 974.0910753205592]], '87': [['2155', 42.70078979114322], ['1779', 202.28830981575396], ['15421829', 215.274069757865], ['9372', 293.8763619578799], ['3927', 689.459422780048], ['31133403', 767.8720480808801], ['4809', 797.5355256528755], ['5779', 841.8586890719962], ['3421', 924.157584674172], ['6706', 947.2752961421467]], '88': [['06459338', 75.7249990411093], ['11464366', 195.80091071475547], ['65447392', 199.61289078728873], ['454997999841', 303.44001453985226], ['257352615619', 348.7319924504476], ['21756665', 428.0349783126991], ['0265', 611.8557175969662], ['33094169', 789.9210123084217], ['0476', 840.606035595798], ['57286225', 983.3675305940094]], '89': [['56497765', 70.02314834183609], ['23243928', 322.67964171128716], ['10159769', 826.1100273754423]], '90': [['081034668035', 34.568093650580664], ['062526765354712477689641', 119.17478333755038], ['013552129780', 281.15727488859545], ['393563428649', 358.5117217021342], ['17105050580793849966', 400.8660154228332], ['127417246272', 468.5728090032415], ['156345205959', 549.9804374323262], ['82109916', 585.9232781561078], ['0468', 724.7379852231876], ['286949717641', 781.032620156692]], '91': [['162257796270', 139.72115157194887], ['082743944693578083728595', 150.98170977146052], ['3449487670317179', 249.45814180151282], ['074610851469741088279532', 360.2771639711252], ['21555252654968799082', 449.5344001085978], ['086621554863', 626.7473737751747], ['0448302736529527', 746.0987417063544], ['18912201443379959921', 761.9382235493706], ['13622052371859468058', 793.251468931084], ['164322504920', 923.9095234202465]], '92': [['049219563257406054029060', 67.7994592288147], ['429460328185', 90.55765751497368], ['170348437012', 175.18763008761638], ['3046', 428.7194463384355], ['109223414652569387969799', 438.08473858321696], ['04058595', 473.51280565074336], ['547166739722', 530.2186612291414], ['1092173180519979', 740.0830438664235], ['19222237348357899925', 922.2988459676473]], '93': [['0397495650416677', 210.60233663708271], ['118522495568847586859185', 243.80679255901427], ['0612114520529757', 298.3544299484802], ['52888696', 340.00769710005886], ['11305680727592889775', 344.5407067459302], ['18688289', 561.9817882407824], ['256447026531', 603.8225621374676], ['16301983247531344594', 680.2034886045628], ['02651022421950509593', 792.6206994593924]], '94': [['7832', 622.8370409781619], ['1184', 821.5779830804609], ['3068', 968.1440749824385]], '95': [['04405650', 147.4755859004794], ['424653118760', 153.03308665973304], ['0341525268799082', 178.02336564992638], ['01612155', 666.2003772051797], ['3718', 677.743075095474], ['1452213741604976', 723.0312018880057], ['7167', 761.2168937013374], ['4047', 787.405427943779], ['8515', 791.0075447002556], ['188757588816', 896.5581858637164], ['49638884', 975.5581402269908]], '96': [['327833386685', 72.1058734085045], ['201735724013', 123.45348780300758], ['6491', 163.97022996205024], ['21645096', 330.06913347704693], ['2004327895329590', 471.78707404040375], ['02992804', 560.538275496416], ['7992873998869915', 562.1715129644476], ['68618544', 864.77634951671], ['665788299030', 922.2836781459789], ['320482699384', 965.4538558086001]]}\n" + } + ], + "source": [ + "# # print database\n", + "# for i in database.keys():\n", + "# print(i,end=' ')\n", + "# for j in database[i]:\n", + "# print(j[0],end=' ')\n", + "# for j in database[i]:\n", + "# print(j[1],end=' ')\n", + "# print(database['0'])\n", + "print(database)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# function to return time-intervals\n", + "def time_interval_itemsets(i,j):\n", + " time_i=i[1]\n", + " time_j=j[1]\n", + " return abs(time_i-time_j)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# itemset pair generation\n", + "def itemset_pair_generator(seq):\n", + " itemset_pairs=[]\n", + " n=len(seq)\n", + " for i in range(n):\n", + " for j in range(i+1,n):\n", + " itemset_pairs.append([seq[i],seq[j]])\n", + " return(itemset_pairs)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# function to generate the time intervals for a sequence\n", + "def time_interval_sequence(itemset_pairs):\n", + " itemset_pairs_time=[]\n", + " for i in itemset_pairs:\n", + " time_interval=time_interval_itemsets(i[0],i[1])\n", + " itemset_pairs_time.append(i+[time_interval])\n", + " return(itemset_pairs_time)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# function to obtain the strength of a pair of itemsets\n", + "def strength_pair(itemset_pairs_time):\n", + " itemset_pairs_time_strength=[]\n", + " for i in itemset_pairs_time:\n", + " itemset1=i[0][0]\n", + " itemset2=i[1][0]\n", + " # strength= len(itemset1)*len(itemset2)\n", + " strength= len(itemset1)*len(itemset2)/16 # because each item has 4 characters\n", + " itemset_pairs_time_strength.append(i + [strength])\n", + " return itemset_pairs_time_strength" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# function to calculate the weighting function of the time interval\n", + "import math\n", + "\n", + "def weighting_function_1(time_interval, delta=0.9, u=1):\n", + " w_TI=delta**(time_interval/u)\n", + " return(w_TI)\n", + "\n", + "def weighting_function_2(time_interval, delta=0.9, u=1):\n", + " w_TI=delta**math.log((1 + (time_interval/u)), 2)\n", + " return(w_TI)\n", + "\n", + "def weighting_function_3(time_interval, delta=0.9, u=1):\n", + " w_TI=delta**math.ceil(time_interval/u)\n", + " return(w_TI)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# function to calculate the time interval weight of the sequence\n", + "def TiW_sequence(itemset_pairs_time_strength, delta=0.9, u=1, wf = 1):\n", + " if wf == 1:\n", + " weighting_function = weighting_function_1\n", + " elif wf == 2:\n", + " weighting_function = weighting_function_2\n", + " else:\n", + " weighting_function = weighting_function_3\n", + " total_strength=0\n", + " weighted_strength=0\n", + " for i in itemset_pairs_time_strength:\n", + " w_TI=weighting_function(i[2], delta, u)\n", + " # print(weighting_function_1(i[2], delta, u) < weighting_function_2(i[2], delta, u))\n", + " weighted_strength+=w_TI*i[3]\n", + " total_strength+=i[3]\n", + " TiW=weighted_strength/total_strength\n", + " return(TiW)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# function to check if a given sequence is a super sequence of the other \n", + "# checks if seq1 is a super sequence of seq2\n", + "def is_super_seq_test(seq1,seq2):\n", + " i= 0\n", + " j= 0\n", + " while i\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "text/plain": "
" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# For graph 1\n", + "gs = []\n", + "dels = [0.5, 0.7, 0.9]\n", + "pers = [[0.2, 0.3, 0.5, 0.7, 1] for _ in range(len(dels))]\n", + "counts = [[0, 0, 0, 0, 0] for _ in range(len(dels))]\n", + "for ds in dels:\n", + " gs.append(get_supports(ds, 0.5))\n", + "\n", + "# print(get_supports(0.9, 0.5))\n", + "\n", + "for i in range(3):\n", + " for j in range(5):\n", + " percent = pers[i][j]/100\n", + " for k in gs[i]:\n", + " if k > percent:\n", + " counts[i][j] += 1\n", + "\n", + "plt_graphs(pers, counts, labels=[\"del 0.5\", \"del 0.7\", \"del 0.9\"], colors=[\"b\", \"g\", \"r\"], markers=['.', 'o', '^'], x_label=\"Support threshold (%)\", y_label= \"Number of patterns (k)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "Hi\nHi\nHi\n" + }, + { + "data": { + "image/png": "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\n", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "text/plain": "
" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gs = []\n", + "dels = [0.5, 0.7, 0.9]\n", + "pers = [[0.2, 0.3, 0.5, 0.7, 1] for _ in range(len(dels))]\n", + "counts = [[0, 0, 0, 0, 0] for _ in range(len(dels))]\n", + "for ds in dels:\n", + " gs.append(get_support_modified(ds, 0.5, 1, 0.7, 0.3))\n", + "\n", + "# print(get_supports(0.9, 0.5))\n", + "\n", + "for i in range(3):\n", + " for j in range(5):\n", + " percent = pers[i][j]/100\n", + " for k in gs[i]:\n", + " if k > percent:\n", + " counts[i][j] += 1\n", + "\n", + "plt_graphs(pers, counts, labels=[\"del 0.5\", \"del 0.7\", \"del 0.9\"], colors=[\"b\", \"g\", \"r\"], markers=['.', 'o', '^'], x_label=\"Support threshold (%)\", y_label= \"Number of patterns (k)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "Hi\nHi\nHi\n" + }, + { + "data": { + "image/png": "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\n", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "text/plain": "
" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Graph 5 modified vs\n", + "gs = []\n", + "x1s = [0, 0.7, 1]\n", + "pers = [[0.2, 0.3, 0.5, 0.7, 1] for _ in range(len(dels))]\n", + "counts = [[0, 0, 0, 0, 0] for _ in range(len(dels))]\n", + "for x1 in x1s:\n", + " gs.append(get_support_modified(0.7, 0.5, 1, x1, 1-x1))\n", + "\n", + "# print(get_supports(0.9, 0.5))\n", + "\n", + "for i in range(3):\n", + " for j in range(5):\n", + " percent = pers[i][j]/100\n", + " for k in gs[i]:\n", + " if k > percent:\n", + " counts[i][j] += 1\n", + "\n", + "plt_graphs(pers, counts, labels=[\"Nominal\", \"Modified\", \"TiW\"], colors=[\"b\", \"g\", \"r\"], markers=['.', 'o', '^'], x_label=\"Support threshold (%)\", y_label= \"Number of patterns (k)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXxU9bn48c8zWcgekrAlBAggCigIGESwKi6grUu19ba11mpri9rW1tb7u2ptra3Xtt621tpaLdZWbq+3tKW17lcoilZBTJBNRMoiCCRA2BJIyDrP74/vyWSSTJLJMpNJ8rxfr3ll5sw5c55M4Pme811FVTHGGDNw+Ho7AGOMMdFlid8YYwYYS/zGGDPAWOI3xpgBxhK/McYMMPG9HUA4hgwZogUFBb0dhjHG9Clr1qw5qKpDW27vE4m/oKCA4uLi3g7DGGP6FBHZFWq7VfUYY8wAY4nfGGMGGEv8xhgzwPSJOn5jjAlXXV0de/bsobq6urdDiZqkpCTy8/NJSEgIa39L/MaYfmXPnj2kp6dTUFCAiPR2OBGnqhw6dIg9e/YwduzYsI6JeFWPiMSJyFoRed57/aSIfCAi67zHtEjHYIwZOKqrq8nJyRkQSR9ARMjJyenUHU40rvi/AWwGMoK2/T9VXRLpE69aBStWwNy5MHt2pM9mjIkVAyXpN+rs7xvRxC8i+cClwP3AtyJ5rpZWrYLzz4faWkhKguXLLfkbYwxEvqrnIeA/AH+L7feLyAYR+bmIDAp1oIgsEJFiESkuKyvr9IlXrHBJXxVOnICHH3bPjTEmFrz++uvMmDGD+Ph4liyJeAVIMxFL/CJyGXBAVde0eOsuYCIwE8gG7gh1vKouVNVCVS0cOrTViOMOzZ3rrvR9PhCBxYth1ix47bVOf5QxxvS40aNH8+STT/LZz3426ueO5BX/2cAVIrITWAxcICL/o6ql6tQAvwfOjMTJZ8921Tv/+Z/w+uvw+99DSYkrEK64At57LxJnNcb0RatWwY9+5H52186dOznttNMCr3/6059y7733ttqvoKCAqVOn4vNFfzhVxOr4VfUu3NU9IjIX+HdV/ZyI5KpqqbjWiCuBdyMVw+zZTfX6H/kIfPrT8ItfuD/wlClw441w772QlxepCIwxvem222Dduvb3KS+HDRvA73c1BFOnQmZm2/tPmwYPPdSzcUZbb4zcfUpENgIbgSHAf0brxMnJcOedsH073HorPPkkTJgA99wDx45FKwpjTCwpL3dJH9zP8vLejScaojKAS1VXACu85xdE45ztGTLEldi33gp33w333QePPeau/r/8ZQhz8JsxJsaFc2W+ahVceKHrDJKYCE891b0egPHx8fj9Tf1ZYnEE8YCeq2f8eNfou3o1TJoEX/0qnHoq/O1v1gPImIGisT3wvvt6ptv38OHDOXDgAIcOHaKmpobnn3++ZwLtQQM68Tc680zX/fO55yA+Hj75STj7bHjzzd6OzBgTDbNnw1139cxYn4SEBO655x5mzZrFZZddxsSJE0PuV1RURH5+Pn/5y1+46aabOPXUU7t/8jCJ9oFL28LCQo3WQiz19a7u/557oLQUrrrKNQafckpUTm+M6abNmzczadKk3g4j6kL93iKyRlULW+5rV/wtxMfDl74EW7e6W79ly1z1z1e+Avv393Z0xhjTfZb425CaCt/5jusBdPPN8PjjcNJJ8IMfwPHjvR2dMcZ0nSX+DgwbBr/6FWzaBBdfDN/7nusCunChqxYyxpi+xhJ/mE4+GZYsgZUrXW+gm25yg8CefdZ6ABlj+hZL/J00ezb885/w9NNusMfHPw7nnee6hBpjTF9gib8LRODKK+Hdd+HRR2HLFjjrLPjUp2Dbtt6Ozhhj2meJvxsSElzD77Ztru7/hRfcQLCvfx26MJO0MWYAqamp4dOf/jQnnXQSs2bNYufOna322bJlC9OmTQs8MjIyeKgHJgqyxN8D0tPddA/btrmJ3379a9cO8MMfQlVVb0dnjGnPUxufouChAnzf91HwUAFPbXwqKud94oknyMrKYtu2bXzzm9/kjjtaz1B/yimnsG7dOtatW8eaNWtISUnhqquu6va5LfH3oNxcN+fPxo1wwQVuHqAJE+B3v4OGht6OzhjT0lMbn2LBcwvYVb4LRdlVvosFzy3oVvIPd1rmZ555huuvvx6Aq6++muXLl9PegNrly5czfvx4xowZ0+XYGkVlkraBZtIk+PvfXSPw//t/7i7g5z+HBx6Aj37UtREYYyLvtv+7jXX72p6X+a09b1HTUNNsW1VdFTc+cyOPr3k85DHTRkzjoUu6X92yd+9eRo0aBbiJ3TIzMzl06BBDhgwJuf/ixYu55pprun1esCv+iDrnHDfz31/+AtXVcOmlbhbA3/2u5xZ9MMZ0Xcuk39H2nhTq6r6tRdNra2t59tln+bd/+7ceObdd8UeYCFx9tVv1a+FCNxr41Vfde4mJrlC44orejdGY/qqjK/OChwrYVb6r1fYxmWNYccOKLp0z3GmZ8/Pz2b17N/n5+dTX11NeXk52dnbIfV966SVmzJjB8OHDuxRTS3bFHyWJifC1r8E3vtFU1VNb68YBnHYafOtb8H//Z43BxkTT/RfeT0pCSrNtKQkp3H/h/V3+zHCnZb7iiitYtGgRAEuWLOGCCy5o84r/j3/8Y49V84Al/qi75BK3CHxcnPv5ta/ByJFuPMBHPwpZWXDRRfBf/+WWjAu6cDDG9LBrp1zLwssXMiZzDIIwJnMMCy9fyLVTru3yZ4Y7LfONN97IoUOHOOmkk3jwwQf58Y9/DEBJSQkf+9jHAvtVVVWxbNkyPvGJT3Q5ppYiPi2ziMQBxcBeVb1MRMbiFl/PBt4BrlPV2vY+I5rTMkfDqlVu/v+5c5vm/z5xwjUGL13qHhs3uu3DhsG8eTB/vvuZm9tbURvTN9i0zE3ampY5GnX83wA2Axne6weAn6vqYhF5DLgReDQKccSM4EXgGyUnu+Q+f757XVrqpoReutT9fMrrXTZlStN+55zjjjPGmM6IaFWPiOQDlwK/9V4LcAGwxNtlEXBlJGPoq3Jz4fOfh//5H1cIrF3ruoMOGwa//KWbKTQryxUAP/0pbNhgk8UZY8IT6Tr+h4D/ABprqnOAo6raOKHxHmBkqANFZIGIFItIcdkAn//A54Np0+A//gP+8Q84cgReesktDlNS4sYKnH465OU1FRa2aIwxpi0Rq+oRkcuAA6q6RkTmNm4OsWvI61RVXQgsBFfHH5Eg+6iUFNdIfMkl7vXevU3VQi+9BH/4g9t++ulN1UIf+YhrTDbGmEhe8Z8NXCEiO3GNuRfg7gAGi0hjgZMPlETi5L01/0ZvGDkSbrgB/vd/3ZX+mjVugFh2Njz0kGsUzspyBcWDD7pZRa1ayJiBK2KJX1XvUtV8VS0APgO8oqrXAq8CV3u7XQ8809PnjsT8G32FzwczZsCdd8Irr7hqoRdecAvHfPgh3H67ayAOLiwOHOjtqI0x0dQb/fjvAL4lIttwdf5P9PQJ7l5+N1V1zUdCVdVVcffyu3v6VDEvNRU+9jF35f/eey75P/EEnHsuPPccXHstDB/evLCoifxodWMGvHCmZQYoKChgypQpTJs2jcLCVj0zuyQqUzao6gpghfd8B3BmJM/3YfmHIbfvKt/FR5/6KOOzxrtHtvs5LmscyQkDo1/kqFHwxS+6R0OD6y3UOHbgZz9zPYdSUtyqYo3tA5Mm2cRypn+rqSnlvfc+w+TJf2LQoBFROWfwtMyLFy/mjjvu4E9/+lPIfV999dU2J2/rin45V8/ozNEh599IiU9h//H9rNy9koqaimbv5aXnNSsMgp9nJ2e3OZS6L4uLg8JC9/j2t+HYMXjttaaC4JvfdPuNHNlUCFx0EfTgvz9jYsLOnfdRXv4Gu3bdx8knP9LNz9rJZZddxrvvvgu4aZmPHz/eamrmZ555JrDt6quv5mtf+xqqGpVc0y8T//0X3s+C5xY0q+5JSUgJDMVWVQ6dOMT2w9vZfmR7088j23l528uUHi9t9nmZgzJDFgjjs8eTn5GPT/rHzBfp6XDZZe4BsGtXU2+hv/8dfv97d+U/Y0ZTQTBnjpuHyJhYtHXrbRw/3va0zAB+fw3Hjr0N+CkpeYxjx9bi87X9jzotbRoTJkRvWmYRYf78+YgIN910EwsWLOj2uftl4m+cZ+Pu5XfzYfmHjM4czf0X3h/YLiIMSRnCkJQhzMqf1er4qroqdhzZ0apgWLtvLU+//zT1/vrAvolxiYwdPJbx2eM5KeukZoXC2MFjGRQ/qNlnP7XxqTbjijVjxsCXvuQeDQ2ut1Dj3cBPfuJ6DqWmuqknGguCU06xaiHTt9TU7KKpV7lSU7OL5OQJET9vuNMyv/nmm+Tl5XHgwAHmzZvHxIkTOffcc7t17n6Z+MEl/64m1JSEFE4bdhqnDTut1Xv1/np2l+9udaew/fB2Xt/1Osdrjwf2FYT8jPxAYVBRU8EzW56htsFNTdTY26gx3lgWFwdnnuke3/kOVFS4+YYaC4IXXnD7jRrVVAhceCHk5PRq2GaA6+jKvKamlNWrxxGc+OvrjzB58uIu1/X39LTMeXl5AAwbNoyrrrqKt99+2xJ/tMX74hmbNZaxWWO5aNxFzd5TVcqqykJWIT3/r+fZX9l6OG1VXRW3vngrBZkFTBsxjdTE1Gj9Kt2SkeHWEWhcS+CDD5qqhZYscT2HRFz7QWNBcNZZVi1kYsvOnfeh2nwKXNWGbtX1B0/LnJaWxvPPP88ljaMtgzROyzx79uw2p2WurKzE7/eTnp5OZWUlS5cu5Z577ulSXMEs8fcgEWFY6jCGpQ5j9qjZrd73fd+HhhiofKT6CB/5/UfwiY9Th55KYV4hM/NmUphXyNThU1tVF8WisWNhwQL3qK+H4uKmu4Ef/xjuvx/S0uD885sKggkTrFrI9K6KilW0nBxYtZby8pVd/szgaZnHjh3b7rTM1113HSeddBLZ2dksXrwYcNMyf+lLX+LFF19k//79gcXV6+vr+exnPxuyEOmsiE/L3BP6y7TMba32MzJ9JL++9NcUlxRTVFJEcUkxB6sOApDgS2Dq8KmBgmDmyJlMHjqZeF/fKbPLy92qY40FwfbtbvuYMc2rhbKyejdO0z/YtMxN2pqWuV8n/t7om9uexhHFbfU2aqTqRhsXlxRTtLeI4tJiikuKA11Qk+OTmZ47ncJcVxAU5hVycs7JfaZ30fbtTdVCy5e79gKfD2bObCoIZs2ChITejtT0RZb4mwzIxL9lyy2Uli4kL+/mbvfN7Sld7dXjVz/bDm9zBUFJMcWlxbxT+k6gEElPTOeMvDOa7gzyZlIwuCDmxx/U18PbbzfdDaxe7VYdS0+HCy5whcDQobB1q6smarmOgTEtWeJvMuASf01NKatWjQbqgXgmTlzE0KFXEheX0tGhfUa9v573D75P0d6iQBXR+v3rA72GcpJzKMwrbNZmMDIj5CzYMePoUTdtxNKl8PLLEDyKPS4O7rsPbrkFBg/utRBNjLPE32TAJf4tW75CaenjuMTviCSSmXkO2dnzycqaT1raVKSPVI+Eq7ahlo37NwYKgqKSIjYd2ESDNgCQm5bbrCAozCtkaOrQXo46NFW31sCDDzafTdTnc1VBjdVCZ54J8X2nycNEmCX+JgMq8Tf2zfX7m/rPiiQyYsQXqah4k8pKt6BtQsIwsrLmeQXBPAYN6p8L2lbVVbFu3zpXReQVBlsObgn0MBqTOca1FXhtBmfknkFmUmYvR+2sWuUafmtrXVfQBx90i88sXQpFRa5aKDOzqVpo/nwYN663oza9yRJ/ky6tuSsiScBlwDlAHnACeBd4QVU39VjEPSxU31wAER8zZ26gpqaUI0eWceTIMg4fXsqBA2665tTUKWRlzSc7ez6ZmecQF9c/Jm5LSUhhzqg5zBk1J7CtoqaCd0rfCRQERXuLWPLeksD7J+ec3OzOYPqI6b0yxmD2bNcA3HJx+h/8AA4fbl4t9PTT7r3x45sKgfPPdwWDMaZJm1f8InIvcDluVs01wAEgCTgZON97fruqboh0kJ294i8qmk5lZev5OVJTpzFz5tpm21T9VFZu5PDhpRw5spSjR/+Jag0igxg8+NxAQZCaOiXmG0q761DVIdaUrgn0JCraW8TeY3sB8ImPyUMnN2s8jqUxBqquAbixkfiVV6Cy0rULnHVWU0FQWGjVQv1dX7nir6mp4fOf/zxr1qwhJyeHP/3pTxQUFLTa74tf/CLPP/88w4YNC0z8FkqPVPWIyKWq+kJbJxGRYcBoVY14B/to9uNvaKiivPyfgYKgstJ90YmJI8jKmkdW1nyysi6Kie6h0VB6rLRZFVFRSVGrMQbBDciTh04mIa73+2HW1sJbbzUVBMXFrnAYPNhVHTUWBCH+n5k+rlOJf/p0dxv53e9CbnSren/961+zYcMGHnvsMRYvXszTTz8dclrm119/nbS0ND7/+c9HPvEHHVigqjtbbJupqkXtHtiDenMAV03NXg4fXsaRI0s5cmQZdXUu6aWmnh5oJM7M/AhxcQNjQVtV5cPyD5sNNisuKaa8phyApPgkpo+Y3qya6JQhp/T6GINDh1yVUWO10J49bvuECc2rhdLTezVM0wM6lfhFXOORzwdf+EKPFADhTst88cUXc++99zJ79mzq6+sZMWIEZWVlIWsWWn5mKD1Wx+/5m4hcrqp7vQ86D/gVMCWMY/u8QYNGkpt7A7m5N6Dq5/jxdYG7gT17HmL37p/g8yWRmXleoCBITT2131YLiQhjBo9hzOAxfHLyJwE3xmD74e3NehI9sfYJfvn2LwE3xmBG7gxm5s0MDDgbO3hsVL+jnBz41KfcQxW2bGm6G/j97+GRR1wV0OzZTQXBGWe4qiLTh912G6xrf1pmar0pGx57DH7zG7ck3ZgxMKiNasxp09ySdt0U7rTMkRBO4r8J+LuIXA7MAH4IfKyjg7yG4deBQd55lqjq90TkSeA8oNzb9QZV7eAvExtEfKSnzyA9fQZjxtxJQ0MlR4++5hUEy9i+/XYAEhNzA20DWVkXkZg4rNnnxNqI4u7yiY8JOROYkDOBz075LAAN/gY2H9zcbPTxw28/HBhjkJ2c7aqIgkYfj0wf2aowiMQ01iIwcaJ7fP3rbqnJVauaCoLvftc9srLcwjONBcHo0d06rYl1qu5RWgpVVS7BR/R04U3LHAkdJn5VLRKRrwNLgWpgnqqWhfHZNcAFqnpcRBKAN0TkJe+9/6eqS9o5tk+Ii0slJ+dj5OS4crC6eo/XW2gphw49z/79iwBIS5se1Fvo7B5d7SdWxfniAlNb3zDtBsCNMXj3wLuB0cdFJUU88OYDgTEGI9JGNKsi+vDoh9y+7PbA6ORITWM9aJDrMTR3Lvzwh1BW1rxa6C9/cfudckpTITB3rpt0zsS4jq7MgxNtYqK7xWus8hkRG9MyR0KbiV9EnoNmU0mm4K7SnxARVPWK9j5YXXHWODl9gveI/UED3ZCUlE9u7hfIzf2CVy20lsOHl3L48Mvs2fMgu3c/gEiSNxugn337fseYMd/tF1f94UiMS2RG7gxm5M7gJm4C4ETdicAYg8aqohf+9ULIWUzBjUm4e/ndEV2/YOhQ+Mxn3EMVNm9uuhv47W/hl7908wjNmdNUEMyY4aqJTR/UQwm/UU9Oyxwp7fXqOa+9A1X1tQ4/XCQO1xX0JOARVb3Dq+qZjbsjWA7cqao1IY5dACwAGD169Bm7drWe1bIvqa8/Tnn5a+zYcVdgABlAcvJEJk36AxkZrdpfBqyKmgrWlq5l7qK5be7z5MefZN74eeSl50UvMKC6Gt58s6kgaKw+zslpXi2Unx/VsEyQTvfqmTOnRxJ+sIcffpiHH36YsWPHMnLkSAoKClo17lZXV3Pdddexdu3awLTM48aNazYtM8A111zDihUrOHjwIMOHD+f73/8+N954Y6tz9lR3TtEOuvyEs4+332DgaeBW4BCwD0gEFgLbVfUH7R3fX6ZlDjWiuFF6eiF5ebcwbNhn+tV8Qt3R1jTWPvHh9wbonTbsNOaPm8/88fM5Z8w5pCRE97vbvx/+8Y+mgmDfPrd90qSmQuC889wSlSY6+ko//p7WmcTf3s3pqyJyq4g0a9ISkUQRuUBEFgHXhxOQqh7FDQS7RFVL1akBfg+cGc5n9AehRhQ3zh/U0FDFli03smrVSLZuvY3Kyvd7KcrYcf+F97dK5CkJKSy6chFrb1rLAxc9wPDU4fyq6Fdc8tQlZD+Qzbw/zOMnb/6E9fvWh2w862nDh8O118KiRW4qiQ0b4Kc/dQ3Bv/kNXHopZGe7sQMPPABr17ppJozpTe1d8ScBXwSuBcYCR3GjdeNwDb2PtNcbR0SGAnWqelREkr1jHgDWqGqpuMqsnwPVqnpne0H2lyv+9kYUFxa+Q3n5PykpeZSysr+iWsfgweeTl3cLQ4Zcic/X+4OiekM4vXqq6qp4fdfrLN2+lKXbl7KpzM0mMjx1OPPGz2P+uPnMGz+PEWnRbUuproY33mi6G1i/3m0fOrSpWmjePBgZ2xOm9jl2xd+kW5O0eb1yhgAnvKv3cI6ZCizCFRQ+4M+q+gMReQUYCgiwDrhZVY+3/Un9J/GHq7Z2P6Wlv6Ok5DfU1OwiMXEEublfIjd3AUlJo3o7vJi3t2Ivy3YsY+n2pSzbsSww0njq8KmBaqGPjP4IyQnRnYtp376mBWiWLXPVRACnntpULXTuuZBiNX3dsnnzZiZOnNhvx9KEoqq8//77A3t2zv5CtYHDh/+PvXsf5fDhFwEhJ+cy8vJuITt7fr+bUjoS/Opn3b51gbuBNz58gzp/HUnxSZw75txAQXDasNOimij8fti4selu4J//dOMJEhPhnHOaCoKpU623UGd98MEHpKenk5OTMyCSv6py6NAhjh07xtixY5u9Z4m/jztxYielpQspLX2CuroDJCWNIy/vZkaM+AKJiZEf6ddfVNZW8tqu1wIFweaDmwG3TsG88fO4ePzFXDTuIoalDuvgk3pWVZVL/o0FQePI/GHDXHXQxRe76qEoTyfTJ9XV1bFnz542+8/3R0lJSeTn55PQYr1SS/z9hN9fS1nZ3ygpeZTy8tcRSWTo0H9j5MhbyMiYMyCucHrS7vLdzaqFDp84DMD0EdOZP97dDZw96uyoz0JaUtK8WqjMGzI5ZUrT3cA550By/5g53ERIdyZpS8XV7ftF5GRgIvCSqtZFJtTWLPGHVlm5iZKSx9i3779paKggNXUKeXm3MHz454iPt9nGOqvB38DafWsDdwMrd6+kzl9HcnwycwvmBgqCSUMmRb1aaP36pruBN95w08sMGuTaBBoLgilTmg9ENaY7iX8NbiGWLOAtoBioUtXIDZ1swRJ/++rrj3PgwB8pKXmU48fXEheXxvDhnyMv7xbS0qb2dnh91rGaY82qhbYc2gLAyPSRzB8/n3nj5nHRuIuivnRlZSW8/npTQfDee277iBGuWmjsWFcwXHYZnH12VEMzMaY7if8dVZ0hIrcCyar6XyKyVlWnRyrYlizxh0dVOXbsbfbufZSysj/h91eTkTGHvLxbGDr06gEzdXSk7Dq6K1At9I8d/+BI9REAZuTOCDQSzxk1J+rVQnv2NFULvfgiVFQ0vZeTA6NGuUJh+HD3CPU8O9sakfuj7iT+tcBXcH3ub1TVTSKyUVWjNi2zJf7Oq6s7zL59T1JS8hgnTmwlIWEII0Z8gby8m0hOHt/b4fV5Df4G1pSuCdwNrNqzinp/PakJqc2qhU7JOSWq1UI//KGbfcDvd9U+M2a45L5/v+tOun8/1IWopI2Pdw3J7RUOwYWEVSn1Dd1J/OcC/w68qaoPiMg44DZV/XpkQm3NEn/Xqfo5cuQVSkoe5eDBZ4AGsrIuZuTIW8jOvhSfz9Yh7AkVNRWs2LkiUBBsPbwVgFEZowKFwIVjLyQnJSeicbRcnH758qZ1isFNOnf0aFMhEFwgtHzeXiHRWCi0LCRavrZCondZrx5DTc1eSkt/S0nJQmprSxg0aBS5uQvIzf3SgJkhNFo+OPJBoFpo+QfLOVp9FEEozCsMFARn5Z9FYlxij5971arWi9N3hSocOdJ+4RD8vL6+9WckJDTdSXRU3ZSVZYVET+vOFf/JuCv+AoKmcVbVC3o4xjZZ4u9Zfn89hw49R0nJoxw5sgyReIYMuYq8vFsYPHiudQntYfX+eopLigN3A2/teYsGbSAtMY3zC84PFAQTsif02e/e728qJDoqKA4caLuQaOvOoeXzwYOtkAhHdxL/euAx3PTKDY3bVXVNTwfZFkv8kVNVtZWSkt+wb9/vqa8/TErKRPLybmb48OtJSBjc2+H1S+XV5by689VAQbD9yHYAxmSOCRQCF4y9gOzk6CzKEW2NhUS41U0NDa0/IzHR3Ul0dBcxfPjALiS61Z1TVc+IWGRhsMQfeQ0NJygr+wslJY9SUfEWPl8yw4ZdQ17ezWRkzOzt8Pq17Ye3N6sWqqipwCc+ZubNDBQEs0bOIiFu4E3U5/fD4cPhVTcdONB2IRHOXcTw4ZCZ2b8Kie4k/nuBA7j59AMLpqjq4R6OsU2W+KPr2LF1lJQ8yv79T+H3V5KWdgYjR97CsGHX2FoBEVbvr6dobxEvb3+ZpduXsnrvavzqJz0xnQvGXhAoCMZnje+z1UKR4vfDoUPhVTeVlYUuJAYNCr+6KSMj9guJ7iT+D0JsVlUd11PBdcQSf++ory9n//7/Ye/eR6mq2kRcXCYjRlxPXt4tpKZO7O3wBoSj1Ud55YNXWLp9KS9vf5mdR3cCMHbw2GbVQoOTXLVcJBan748aC4lwqpsOHAi9hkJjIRFOdVNvFRJdSvzipn+crapvRjK4jlji712qSnn5G95aAUu8tQLmkpf3lQG9VkC0qSrbj2wPtA288sErHKs9hk98zBo5i9y0XF7Y+gI1DU0rmaYkpLDw8oWW/LuhoSH8QqKsLHQhkZQUfnVTenpTIdHdHlrdueJfpard6BTWfZb4Y0dt7QFKS39HaelvqK7eaWsF9KK6hjpW710dKAhW710dcr/RGaPZ9c2+vWZ1X9HQAFx4heAAAB8xSURBVAcPhtcmUVbmusy2lJTkCoGUFHjfW4hv0KDWYzLC0Z3E/31gA/C3cNbXjQRL/LHHrRXwMiUlj3Lo0AvYWgG9z/d9H0ro/6Jnjzqbs0edzZxRc5g9anbUp502rdXXNxUSoQqHt96C7a7DF3FxcN99cNddnTtHdxL/MSAV15XzBG7lLFXVjM6F0HWW+GNbdfUuSkoWUlr626C1Am7y1gqI7gRmA1lbi9NnJGZw6rBTWVO6htqGWgAmZE9gzqg5zBk1h7NHnc2koZPwWWEdUzoahR2OqI/c9dbsfR0YhBv4tURVvyciY4HFQDbwDnCdqta291mW+PsGv7+WgwefZu/eRykvf83WCoiypzY+xYLnFlBVVxXYFlzHX11fzTul7/Dmh2+ycs9K3vzwTcqq3ET/mYMymT1qduCu4MyRZ5KWmNZbv4rx9GYdv+AtuK6q94nIKCBXVd8O47hUVT3urdn7BvAN4Fu4aqPFIvIYsF5VH23vsyzx9z2Vle95awUssrUCoqgzvXoaG4tX7l7Jyt0reXP3m2w6sAlFiZM4Th9xOnPyvbuC0WczKmOUFd59THcS/6OAH7hAVSeJSBawVFXDHtUjIim4xH8L8AIwQlXrRWQ2cK+qXtze8Zb4+66Ghkr27/9fWyugjzhafZTVe1bz5u43Wbl7JW/teYvKukrArUPQWDU0Z9Qcpo2YNiAHlfUlPTEff2AOfhFZr6qnh3HSONxUDycBjwA/Ad5S1ZO890fhVvM6LcSxC4AFAKNHjz5j1y7rldCX2VoBfVO9v56N+ze6uwKveqixHSE5PpkzR54ZaCuYnT874rOPms7pTuJfDcwBirwCYCjuij/shVhEZDBu5O89wO9bJP4XO5rb3674+5eWawXEx+eQm/tFWyugj9hbsZdVe1YF2greKX2Her+bdW3ikInMyXdVQ3NGzYn6egSmue4k/muBTwMzgEXA1cB3VfXPnQzge0AVcAdW1WMIf62AmppS3nvvM0ye/CebPjoGVdVVUVxSHGgnWLl7ZWDR+uzkbHdH4LUVzBw5k5QEm/YjWrrVq0dEJgIX4rpyLlfVzWEcMxSoU9WjIpIMLAUeAK4H/hrUuLtBVX/d3mdZ4u//3FoBT3hrBexl0KD8wFoBO3feR2npb8jLu5mTT36kt0M1HVBV/nXoX4FCYOXulWw+6FJGvC+e6SOmN2srGJkxspcj7r+6c8X/B1W9rqNtIY6birtDiAN8wJ9V9QfeCl6N3TnXAp9T1Zq2P8kS/0Di1gp43lsrYCnun48Cfny+JGbN+sCu+vugQ1WHeGvPW4G7grf3vs2J+hMAjM4cHSgE5oyaw9ThU4m3leF6RLcbd4NexwEbVXVyz4cZmiX+gamqahubNl1NZeX6wLa4uEyGDLmc9PRC0tNnkpY2zWYM7YPqGupYv399szEFe4/tBSA1IZVZ+bMCbQVn5Z8VmITOdE6nE7+I3AV8G0jG1c2Dq+qpBR5X1TsjFGsrlvgHppqaUlavHoffXx201UdCwlDq6vZ7r+NITT01UBCkpxeSljYVn6/nlzQ0kfVh+YfNxhSs37eeBm1AECYPndzsruCk7JOs0TgM3bni/5GqdnKGiJ5liX9g2rLlK+zb9wTBA7tFEsnN/RJjxtzNsWPF3qOIiooi6usPBfZJS5saKAjS02eSkjLJFpbvY47XHqdob1GgrWDVnlUcrT4KwNCUoc2mnDgj7wyS4q1LcEvdSfzLVfXCjrZFkiX+gamoaDqVletabU9NncbMmWubbVNVqqt3BQqCxkKhoaECAJ8vhbS06aSnF5KR4QqE5OQJNplcH+JXP5vLNjcbU7D18FYAEnwJnJF3RrO7ghFp1hbUlaqeJNzkbK8Ac3HVPAAZuEFXkyITamuW+E1XqPo5cWJboCCoqCji+PF38Ptdo2JcXAbp6Wc0uzNIShpjVQh9SFllWbMxBUV7iwLrEYzLGhfoSnr26LM5deipxPniejni6OpK4v8GcBuQB+ylKfFX4Or4fxWhWFuxxG96it9fT1XV5mZ3BsePrw9UJyUkDPEKgaY2g0GD8no5ahOu2oZa3il9p1lbwb7j+wBIT0znrPyzAncFs/JnkTEoapMM94ruVPXcqqq/jFhkYbDEbyLJ76+hsvJdKiqKAgVCZeUm3EzkkJiY16wgSE8vJDFxSO8GbcKiquw8urPZ4LKNBzbiVz8+8TFl2JRmbQUFgwv61R1fdwdwnQZMBgKtJ6r63z0aYTss8Ztoa2io4vjxdc2qiU6c2BJ4PympoFlBkJ5+BvHxmb0YsQlXRU0Fq/esDrQVrNq9imO1xwAYkTai2eCyGbkzSIzruz3EunPF/z1cHf9k4EXgo8Abqnp1BOIMyRK/iQX19RUcO7amWTVRdfUHgfeTk08OFAYZGTNJS5tuYwz6gAZ/A5vKNjW7K9hxZAcAg+IGMXPkzMCUE3NGzWFoat9ZXKg7iX8jcDqwVlVPF5HhwG9V9fLIhNqaJX4Tq2prD3L8+Jpm1US1tSXeuz5vjMHMoAFnU/D5BvVqzKZj+47vC7QTrNy9kuKSYur8dUDT6mWNdwWxvHpZdxL/26p6poisAc4HjgHvquqpkQm1NUv8pi+pqSlpZ4xBAmlppzdrQE5JmWxjDGJcdX01a0rWNJt/qHH1ssFJg5mdPztwRxBLq5d1J/H/GjeC9zPA7cBxYJ2qfiESgYZiid/0ZR2PMUgOjDFovDtISTnZxhjEMFVl2+FtTXcFe1aGXL2scXrq0ZmjeyXOHllzV0QKgAxV3dBzoXXMEr/pb8IfY9BUGCQl9a8eJ/3N0eqjvLXnrcCYgtV7VgdWL8vPyG82puD04adHZfWy7vbq+QTwEdw0iW+o6tM9H2LbLPGbgaCjMQbx8TmBKqLG0ceDBrWe0tjWL4gN9f56Nuzf0KytoOXqZY3tBLNHzSY7ObvZ8Z1ZP7kt3a3qOQn4o7fp08B2Vf1qpyLoBkv8ZqDqeIxBbosxBjP54IN7bP2CGLWnYg+rdq8KtBWs3be22epljQXB4ROH+d6K71FVVxU4NiUhhYWXL+xU8u9O4t8EnKbejuIqHjda464xvaOjMQZukL0CcQwffh2JicOIi0vzHqlBz5u/9vlSvZ+DrEopSqrqqijaWxRoJwhevSyUMZlj2HnbzrA/v63EH05Xgi3AaKBxtfNRQFTr+I0xTeLiUsjMnENm5pzAtsYxBjt2fJtjx97GJf4GDhxwN+odrHXU8gwtCojQzxsLivb2CX4ukmgFSgspCSmcV3Ae5xWcB7iJ6P516F9MeiT0VGgfln/YI+cNJ/HnAJtF5G3v9UxglYg8C6CqV/RIJMaYLouPzyAlZaI3m6k/sF3Ex6xZO0hIyKGhoRK/v5KGhuPeo+PnwfvX1R2kunpns32Cp8zuWFynCopwC5b+VKD4xMfEIRMZkzkm0B4QrKd6B4WT+O/pygeLyCjgv4ERuH+JC1X1FyJyL/BloMzb9duq+mJXzmGMabJz532o+pttU21g1677OPnkR/D5BgM9u5KV31/XotA43unCpa6ujOrqD4K2H0O1PuwYROK7dAfS0f69uZjP/Rfez4LnFpAkVXx3EvzgPaghhfsvvL9HPr/DxK+qr3Xxs+uB21X1HRFJB9aIyDLvvZ+r6k+7+LnGmBAqKla1ugJXraW8fGXEzunzJeDzDSYhoacLlNqw7kLaK1hqa/fT0LC92f6dK1ASulW11db+Pl/H3TgbG3Df33IzUzOP89WT05h4ymOd7tXTlogNF1TVUqDUe35MRDYDrfueGWN6RMvFafoyny8Rny+RhISsHv1cV6CEX70Vap/a2tJW7zX2sgqHK1A6LijOTIL8odWowrxhDcw6uefWvorKOHFv4Nd0YDVwNvA1Efk8UIy7KzgS4pgFwAKA0aN7Z9SbMaZ/cQVKNgkJ2R3vHCZVRbXjAqWjwqW2tqTF/hVB52iqsusJ7S3EslxVLxSRB1T1ji6fQCQNeA24X1X/5k3ydhDX7eA+IFdVv9jeZ1h3TmPMQFJTU8rq1ePw+6sD23y+ZGbN2tGpQXltdedsbzKQXBE5D7hCRKaLyIzgR5gnTQD+Cjylqn8DUNX9qtqgrhXqceDMsH8LY4wZANprqO8J7VX13APcCeQDD7Z4T4EL2vtgcf2rngA2q+qDQdtzvfp/gKuAdzsbtDHG9GeRbqhvM/Gr6hJgiYh8V1W7UsycDVwHbBSRdd62bwPXiMg0XOGxE7ipC59tjDH9VqQb6sPpznmfiFwBnOttWqGqz4dx3Bs0LdAezPrsG2NML+pwwm8R+RHwDeA97/ENb5sxxpg+KJzunJcC07zGWERkEbAWuCuSgRljjImMcJf4CR6WlxmJQIwxxkRHOFf8PwLWisiruDr7c7GrfWOM6bPCadz9o4iswM3KKcAdqrov0oEZY4yJjLCmbPD63T8b4ViMMcZEQbh1/MYYY/oJS/zGGDPAtJv4RcQnIjalgjHG9CPtJn6v7/56EbF5kY0xpp8Ip3E3F9jkrblb2bjR1to1xpi+KZzE//2IR2GMMSZqwlpzV0TGABNU9R8ikgLERT40Y4wxkRDOJG1fBpYAv/E2jQT+HsmgjDHGRE443Tm/iptbvwJAVbcCwyIZlDHGmMgJJ/HXaNBSMCISj1tExRhjTB8UTuJ/TUS+DSSLyDzgL8BzkQ3LGGNMpIST+O8EyoCNuGUSXwS+09FBIjJKRF4Vkc0isklEvuFtzxaRZSKy1fuZ1Z1fwBhjTOeE06vH7y2+shpXxbNFVcOp6qkHblfVd0QkHVgjIsuAG4DlqvpjEbkTV7Dc0eXfwBhjTKeE06vnUmA78DDwK2CbiHy0o+NUtVRV3/GeHwM243oEfRxY5O22CLiya6EbY4zpinAGcP0MOF9VtwGIyHjgBeClcE8iIgXAdNxdw3BvmmdUtVREQvYQEpEFwAKA0aNtxghjjOkp4dTxH2hM+p4dwIFwTyAiacBfgdtUtSLc41R1oaoWqmrh0KFDwz3MGGNMB9q84heRT3hPN4nIi8CfcXX8/wYUhfPhIpKAS/pPqerfvM37RSTXu9rPpROFiDHGmO5rr6rn8qDn+4HzvOdlQIc9cUREgCeAzar6YNBbzwLXAz/2fj7TmYCNMcZ0T5uJX1W/0M3PPhu4DtgoIuu8bd/GJfw/i8iNwIe4OwhjjDFR0mHjroiMBW4FCoL372haZlV9A7c4eygXhh+iMcaYnhROr56/46psngP8kQ3HGGNMpIWT+KtV9eGIR2KMMSYqwkn8vxCR7wFLgZrGjY2Ds4wxxvQt4ST+KbhG2gtoqupR77Uxxpg+JpzEfxUwLnhqZmOMMX1XOCN31wODIx2IMcaY6Ajnin848L6IFNG8jr/d7pzGGGNiUziJ/3sRj8IYY0zUhDMf/2vRCMQYY0x0hDNy9xhNa+wmAglApapmRDIwY4wxkRHOFX968GsRuRI4M2IRGWOMiahwevU0o6p/x/rwG2NMnxVOVc8ngl76gEKaqn6MMcb0MeH06gmel78e2IlbN9cYY0wfFE4df3fn5TfGGBND2lt68Z52jlNVvS8C8RhjjImw9q74K0NsSwVuBHIAS/zGGNMHtdmrR1V/1vgAFgLJwBeAxcC4jj5YRH4nIgdE5N2gbfeKyF4RWec9PtYDv4MxxphOaLc7p4hki8h/AhtwdwczVPUOVT0Qxmc/CVwSYvvPVXWa93ix0xEbY4zplvbq+H8CfAJ3tT9FVY935oNV9XURKehWdMYYY3pce1f8twN5wHeAEhGp8B7HRKSiG+f8mohs8KqCstraSUQWiEixiBSXlZV143TGGGOCtVfH71PVZFVNV9WMoEd6N+bpeRQYD0wDSoGftXP+hapaqKqFQ4cO7eLpjDHGtNTpKRu6Q1X3q2qDqvqBx7E5f4wxJuqimvhFJDfo5VXAu23ta4wxJjLCmbKhS0Tkj8BcYIiI7MEt6DJXRKbh5vrZCdwUqfMbY4wJLWKJX1WvCbH5iUidzxhjTHiiWtVjjDGm91niN8aYAcYSvzHGDDCW+I0xZoCxxG+MMQOMJX5jjBlgLPEbY8wAY4nfGGMGGEv8xhgzwFjiN8aYAcYSvzHGDDCW+I0xZoCxxG+MMQOMJX5jjBlgLPEbY8wAY4nfGGMGGEv8xhgzwEQs8YvI70TkgIi8G7QtW0SWichW72dWpM5vjDEmtEhe8T8JXNJi253AclWdACz3XhtjjImiiCV+VX0dONxi88eBRd7zRcCVkTq/McaY0KJdxz9cVUsBvJ/D2tpRRBaISLGIFJeVlUUtQGOM6e9itnFXVReqaqGqFg4dOrS3wzHGmH4j2ol/v4jkAng/D0T5/MYYM+BFO/E/C1zvPb8eeCYiZ5k+Hb7yFSgtjcjHG2NMXxbJ7px/BFYBp4jIHhG5EfgxME9EtgLzvNc9b906eOIJGDsWrr4aNm+OyGmMMaYvElXt7Rg6VFhYqMXFxeEfINJ6W2IiTJwIkybB+PHNH3l54IvZ5g5jjOkSEVmjqoUtt8f3RjC9orYWdu+GykpYsgQaGpreS0pydwctC4Tx46GgAAYN6rWwjTGmp/X/xJ+YCHFx8IUvwHe/CyNGQH09fPghbN/e+vHqq65waCQCo0aFLhTGj4fMzN773Ywxpgv6b+IPlfAbxcfDuHHuMW9e8+NU4cCB1gXCtm3wzDPQckxBTk7bhUJubvNqp+nTYfZsF09ubuR+d2OMaUf/rOOfPh3mzGmd8HvCsWOh7xS2b3d3EX5/077Jya5waSwIfv5zV+jExcH118O991oBYIyJmLbq+Ptn4u8ttbWwa1foQmHHDjhxovUxqakwejQMHw5ZWZCd3fbPxucZGdYYbYzpkDXuRkNiIkyY4B4tqYZO1pWVrmppyBD417/gyBE4fBiqq9s+j88Hgwe3X0i09TM5ued+X2NMn2SJP1padjFtrw0C3N3BkSNNBUFHP3fsaHodXN3U0qBBXSswBg921VTGmD7P/idHW0cJv1Fysnvk5XXu8/1+1w4RboGxezesX+9eHzvW/mdnZHS+wMjKgvT00GMrOmKN4Z1j31f/EeG/pdXxR1MkG517Ql0dHD0aXoHR8mdtbdufGxfXtQIjL88VlD5fU0FpCa1tIvZ99Rc99Le0xl0TOaquaurw4c4XGkePuuPDIeKqnIYMgYSEyP5OfdF77zV/bd9X3xX8t0xIaF5L0IkCwBp3TeSIQEqKe+Tnd+5Yvx/Ky0MXDF/5SvN9Vd17cXEwd26Phd9vtEz89n31XcF/y7o69/jNb2DTJnjttW5/vCV+07t8PletkxVi+eXgxB9u28hAFtyOYt9X39be37IHWOI3sc0SWOfY99V/RPBvaYnfxK5p02K7MTzW2PfVf0T4b2mJ38SutWt7O4K+xb6v/iPCf0sb92+MMQOMJX5jjBlgLPEbY8wAY4nfGGMGGEv8xhgzwPSJKRtEpAzY1cXDhwAHezCcnmJxdY7F1TkWV+fEalzQvdjGqOrQlhv7ROLvDhEpDjVXRW+zuDrH4uoci6tzYjUuiExsVtVjjDEDjCV+Y4wZYAZC4l/Y2wG0weLqHIurcyyuzonVuCACsfX7On5jjDHNDYQrfmOMMUEs8RtjzADTbxK/iFwiIltEZJuI3Bni/W+JyHsiskFElovImBiJ62YR2Sgi60TkDRGZHAtxBe13tYioiESlq1sY39cNIlLmfV/rRORLsRCXt8+nvH9jm0Tkf2MhLhH5edB39S8RORojcY0WkVdFZK33f/JjMRLXGC8/bBCRFSLSySXluhzX70TkgIi828b7IiIPe3FvEJEZ3Tqhqvb5BxAHbAfGAYnAemByi33OB1K857cAf4qRuDKCnl8B/F8sxOXtlw68DrwFFMZCXMANwK9i8N/XBGAtkOW9HhYLcbXY/1bgd7EQF67B8hbv+WRgZ4zE9Rfgeu/5BcAfovRv7FxgBvBuG+9/DHgJEOAsYHV3ztdfrvjPBLap6g5VrQUWAx8P3kFVX1XVKu/lW0A0SvJw4qoIepkKRKO1vcO4PPcB/wVURyGmzsQVbeHE9WXgEVU9AqCqB2IkrmDXAH+MkbgUyPCeZwIlMRLXZGC59/zVEO9HhKq+DhxuZ5ePA/+tzlvAYBEJf9X1FvpL4h8J7A56vcfb1pYbcaVnpIUVl4h8VUS245Ls12MhLhGZDoxS1eejEE/YcXk+6d3uLhGRUTES18nAySLypoi8JSKXxEhcgKvCAMYCr8RIXPcCnxORPcCLuLuRWIhrPfBJ7/lVQLqI5EQhto50Nse1q78kfgmxLeSVs4h8DigEfhLRiLzThdjWKi5VfURVxwN3AN+JeFQdxCUiPuDnwO1RiCVYON/Xc0CBqk4F/gEsinhU4cUVj6vumYu7sv6tiAyOgbgafQZYoqoNEYynUThxXQM8qar5uGqMP3j/7no7rn8HzhORtcB5wF6gPsJxhaMzf+sO9ZfEvwcIvvLLJ8Sto4hcBNwNXKGqNbESV5DFwJURjcjpKK504DRghYjsxNUpPhuFBt4Ovy9VPRT0t3scOCPCMYUVl7fPM6pap6ofAFtwBUFvx9XoM0SnmgfCi+tG4M8AqroKSMJNRtarcalqiap+QlWn43IFqloe4bjC0dlc0r5oNFxEoWEkHtiBu5VtbLQ5tcU+03ENOxNiLK4JQc8vB4pjIa4W+68gOo274XxfuUHPrwLeipG4LgEWec+H4G7Lc3o7Lm+/U4CdeAM2Y+T7egm4wXs+CZfEIhpfmHENAXze8/uBH0TjO/POV0DbjbuX0rxx9+1unStav1QUvrSPAf/ykvvd3rYf4K7uwVUL7AfWeY9nYySuXwCbvJhebS8BRzOuFvtGJfGH+X39yPu+1nvf18QYiUuAB4H3gI3AZ2IhLu/1vcCPoxFPJ76vycCb3t9xHTA/RuK6Gtjq7fNbYFCU4vojUArU4a7ubwRuBm4O+vf1iBf3xu7+f7QpG4wxZoDpL3X8xhhjwmSJ3xhjBhhL/MYYM8BY4jfGmAHGEr8xxgwwlvhNVIjI3d6slRu8mSJn9WIst4lISjjvicjxCJy/oK1ZGNs55kkRuTrE9rkiEnJaDRGZLiK/9Z5/0vv+/9k4BYGIjBeRxUH7J4rI6yIS37nfyPQ1lvhNxInIbOAyYIa6qRYuovm8I9GMJQ64DQiZ+Dt4r63PjNVE+W3gl97z23EDf/4b+Ky37T+B7zburG7isuXAp6MYo+kFlvhNNOQCB9WbakFVD6pqCYCI7BSRId7zQhFZ4T2/V0T+ICKviMhWEfmyt32ud1X6tDf3/WONc7yIyDXi1jZ4V0QeaDy5iBwXkR+IyGrcMPw84FUReTU4SBH5eqj3ROR+EVnvTb423Nv2pIg86O33gIikenOqF3lzzH/c2+9UEXnbu8vZICKN0zjEicjj3lX4UhFJ9vaf5p1ng/c7ZrX8Mr055d8XkTeAT4T6wkUkHZiqquu9TX5gEK5QqxORc4BSVd3a4tC/A9eG+kzTj0RzNJ89BuYDSMONzvwX8GvgvKD3dgJDvOeFwArv+b24UZ3JNE2BkIebBK0aN6d6HLAMN9oyD/gQGIobmv8KcKX3WQp8KtQ5Q8Ta7D3v2Mu95/8FfMd7/iTwPBDnvf4h8Dnv+WDvd03FXXFf621P9H6fAtzEX9O87X8OOnZD4/eDG1H6UND5rsbNabMbNw+QeMc+H+L3OB/4a9DrecAa3CR3mcDLeGsHtDguDijr7X8z9ojsw674TcSp6nHcZGoLgDLgTyJyQxiHPqOqJ1T1IG56hjO97W+rm1O9ATfU/SPATFyhUaaq9cBTuMUtABqAv3Yx/FpcggeXOAuC3vuLNs12OR+4U0TW4aa4SAJGA6uAb4vIHcAYVT3h7f+Bqq4L/lwRyQQGq+pr3vZFQb9Do4nesVtVVYH/aSPuXNx3DYCqLlPVM1T1ctxEgC8Cp3hTWz/e2K7h/T613h2D6aditW7S9DNeQlmBm/FzI3A97iq2nqYqx6SWh7XxOtT2UNPWNqrWrk9HXOclWHAFSPD/mcqg5wJ8UlW3tDh+s1fFdCnwsrilIncAwbPDNuDuBMIVzjwrJ2j9feIl+OuBi4GluAU+Pour3nnc220Q0Vt8x/QCu+I3EScipwTVbQNMA3Z5z3fSNLXyJ2nu4yKS5PVCmQsUedvPFJGxXt3+p4E3gNW4edSHeA241wCvEdox3NTTnX2vPS8Dt4qIQGAhG0RkHLBDVR8GngWmtvUB6qb/PeLVvwNcR+vf4X1grIiM915f08bHbQZOCrH9P4BfqGodrrBRXP1/ihdvDq6qp66d39X0cZb4TTSkAYu8xtgNuJkZ7/Xe+z7wCxH5J+7KN9jbwAu4pTLvU69BGFd98mPgXeAD4GlVLQXuwlUJrQfeUdVn2ohnIfBSy8bdMN5rz31AArDB66p5n7f908C7XhXQRFyvmvZcD/zE+56m4er5A1S1Gldl9oLXuLur9UeAqr4PZAZX2YhIHm5Wx8bv5We47/Z6oHFx+PNx1UCmH7PZOU1MEpF7geOq+tMW2+cC/66ql/VGXH2JiHwTOKaqv+3EMX8D7gpRZWX6EbviN6b/epTmbQntEpFE4O+W9Ps/u+I3xpgBxq74jTFmgLHEb4wxA4wlfmOMGWAs8RtjzABjid8YYwaY/w/Sz8SCtdtOVwAAAABJRU5ErkJggg==\n", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "text/plain": "
" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# For graph 2\n", + "gs = []\n", + "us = [1, 0.7, 0.5, 0.1]\n", + "pers = [[0.2, 0.3, 0.5, 0.7, 1] for _ in range(len(us))]\n", + "counts = [[0, 0, 0, 0, 0] for _ in range(len(us))]\n", + "\n", + "for u in us:\n", + " gs.append(get_supports(0.7, u))\n", + "\n", + "for i in range(4):\n", + " for j in range(5):\n", + " percent = pers[i][j]/100\n", + " for k in gs[i]:\n", + " if k > percent:\n", + " counts[i][j] += 1\n", + "\n", + "plt_graphs(pers, counts, labels=[\"u 1\", \"u 0.7\", \"u 0.5\", \"u 0.1\"], colors=[\"b\", \"g\", \"y\", \"r\"], markers=['.', 'o', '^', \">\"], x_label=\"Support threshold (%)\", y_label= \"Number of patterns (k)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "text/plain": "
" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# For graph 3\n", + "gs = []\n", + "WF = [1, 2, 3]\n", + "dels = [[0.3, 0.5, 0.7, 0.9] for _ in range(3)]\n", + "counts = [[0, 0, 0, 0] for _ in range(3)]\n", + "for wf in WF:\n", + " for dl in dels[0]:\n", + " gs.append(get_supports(dl, 0.5, wf))\n", + "\n", + "for i in range(3):\n", + " for j in range(4):\n", + " for k in gs[4*i + j]:\n", + " if k > 0.003:\n", + " counts[i][j] += 1\n", + "\n", + "plt_graphs(dels, counts, labels=[\"WF_1\", \"WF_2\", \"WF_3\"], colors=[\"b\", \"g\", \"r\"], markers=['.', 'o', '^'], x_label=\"delta\", y_label= \"Number of patterns (k)\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "pycharm": { + "stem_cell": { + "cell_type": "raw", + "source": [], + "metadata": { + "collapsed": false + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/DWDM_dataset_Extraction.py b/DWDM_dataset_Extraction.py new file mode 100644 index 0000000..3c35170 --- /dev/null +++ b/DWDM_dataset_Extraction.py @@ -0,0 +1,108 @@ +# create database + +# database = dict() +# database['sid']=[10,20,30,40] +# database['sequence']=[['a','abc','ac','d'],['ad','c','bc','ae'],['ad','bc','df'],['a','abc','d']] +# database['timestamp']=[[0,1,2,3],[1,2,3,4],[1,3,5],[2,3,4]] +# +# database['10'] = [['a', 0], ['abc', 1], ['ac', 2], ['d', 3]] +# database['20'] = [['ad', 1], ['c', 2], ['bc', 3], ['ae', 4]] +# database['30'] = [['ad', 1], ['bc', 3], ['df', 5]] +# database['cd40'] = [['a', 2], ['abc', 3], ['d', 4]] +# +# # print database +# +# for i in database.keys(): +# print(i, end=' ') +# for j in database[i]: +# print(j[0], end=' ') +# for j in database[i]: +# print(j[1], end=' ') +# print() + +import random + +# lower = 111; upper = 999 +# random_float = random.uniform(lower, upper) +# print(random_float) +def Randlist(start, end, num): + res = [] + + for j in range(num): + val=(random.uniform(start, end)) + # val=int(val) + res.append(val) + + res.sort() + return res + + +text_file= open("sample.data","r") +lines= text_file.readlines() +# line1= lines[0] +undelted_lines= lines +print("\nInput :\n") +print(lines) +x = dict() +for i in range(len(lines)): + line1 = list(lines[i].split(" ")) + # print(line1) + line1.pop() + length = int(line1[0]) + # print(length) + line1.pop(0) + # x= dict() + # print(line1) + lst = [] + + for j in range(length): + sizeoflistoftime= int(line1[0]) + # print(sizeoflistoftime) + line1.pop(0) + # print(line1) + + listoftime=Randlist(0,1000,sizeoflistoftime) + for k in range(sizeoflistoftime): + line1.pop(0) + # print(listoftime) + + lst.append(listoftime) + # print("The list is :") + # print(lst) + x[i]=lst + + +# print(x) + +# print(undelted_lines) +x2= dict() + +for i in range(len(undelted_lines)): + line1 = list(undelted_lines[i].split(" ")) + # print(line1) + line1.pop() + length = int(line1[0]) + # print(length) + line1.pop(0) + # print(line1) + listoftime=[] + for j in range(length): + sizeoflistoftime= int(line1[0]) + # print(sizeoflistoftime) + line1.pop(0) + # print(line1) + temp="" + # listoftime=Randlist(0,1000,sizeoflistoftime) + for k in range(sizeoflistoftime): + temp=temp+line1[0] + line1.pop(0) + + + listoftime.append(temp) + # print(listoftime) + x2[i]=listoftime + +print("\n\nTime stamp\n") +print(x) +print("\n\nSequence\n") +print(x2) \ No newline at end of file diff --git a/Datasets/eighty.data b/Datasets/eighty.data new file mode 100644 index 0000000..d95ff2f --- /dev/null +++ b/Datasets/eighty.data @@ -0,0 +1,77 @@ +9 1 2479 2 2154 5477 4 440 2276 6036 9838 4 6639 7926 9054 9748 1 1247 1 1992 1 2535 3 5095 7744 9337 6 2343 4737 7188 8518 9241 9486 +9 3 765 1542 7203 3 5854 7309 8827 1 5993 4 991 4956 6376 7993 3 606 1798 8964 3 606 1091 2787 2 4023 5242 3 2451 6392 8259 5 703 3355 5892 7169 9239 +6 1 9033 3 1845 7713 8778 3 1285 1705 7890 3 4049 6908 7443 2 765 1739 2 3627 9693 +1 2 269 4701 +2 2 6273 7655 1 2654 +6 1 149 2 3533 9471 1 5758 1 1491 1 5024 1 3812 +8 3 3404 4764 6487 3 5210 7637 7771 3 1405 5501 9708 3 3572 3875 7705 3 2709 4167 5713 7 886 2870 6918 7963 8571 9125 9795 2 723 6970 2 625 5975 +4 1 7851 1 2053 2 5826 8595 1 1734 +6 2 7213 7771 1 5510 2 4652 9373 1 9928 2 6771 7774 2 3113 8769 +5 2 765 6075 1 5735 1 3541 1 2715 1 2104 +3 1 1956 1 7093 2 298 2017 +7 1 3297 3 5577 5612 8526 3 3337 3692 8210 2 3279 8497 2 6052 7708 1 1258 1 6150 +9 1 4632 3 7612 8099 9393 4 1327 2055 5783 7642 5 4581 5060 6055 6901 8900 1 116 3 1510 3768 4435 1 140 4 4464 4664 6228 8283 3 2575 4565 6039 +8 7 2123 3096 3235 5029 8444 8567 8708 3 5550 5553 8445 4 3560 4804 7879 8034 2 4204 9124 4 327 3315 7615 7832 5 959 3023 6318 7616 8665 4 157 646 5661 8723 4 46 2051 2729 6037 +10 3 5869 5872 8093 2 312 4650 2 5783 6558 1 6116 3 494 2540 6711 1 3278 2 5193 5852 3 1917 4144 4474 4 1788 3629 4386 9542 4 2958 6708 7960 8983 +8 2 148 689 2 8663 9840 2 5675 7421 3 281 4646 5886 1 7924 3 1186 3023 7960 1 876 1 9731 +11 1 6201 1 3928 2 1345 4035 2 3811 9780 4 2177 5436 6150 7741 2 1710 8789 2 3708 6654 1 2702 2 3400 6061 4 2343 4627 4737 9487 1 4861 +4 1 1483 1 7835 1 8185 1 7218 +13 1 2217 3 5116 7988 9601 1 7211 3 1146 5819 9517 1 5724 1 611 1 9715 3 3441 8566 9551 2 7953 8373 2 1714 2410 1 9916 2 4149 7187 3 767 2285 3023 +7 2 617 9118 1 8204 3 1258 3825 7991 2 9387 9928 3 1504 6771 9845 2 8 381 1 7960 +6 4 2431 6365 9355 9567 1 4548 2 3592 4688 2 5309 6481 2 1805 3691 3 70 3613 4895 +7 1 5089 2 4177 7067 1 1051 2 3973 8280 3 1323 3697 9049 1 5982 2 3812 9296 +14 3 764 5329 5899 2 3386 6186 4 3342 5945 9075 9293 3 3143 5937 6944 3 2756 3331 4049 2 6034 9023 2 1098 5561 3 2375 8785 9983 5 1367 3927 4549 8724 9799 2 1279 5759 2 6376 7759 2 715 9674 2 765 2155 4 1521 3162 6392 8381 +6 3 3819 7192 9827 2 2547 2839 1 6529 3 3473 5357 7927 3 33 2341 5907 1 6537 +10 6 3428 3592 8911 9195 9238 9752 7 666 1767 4316 5598 7472 8404 9841 4 449 3923 5089 5535 4 1040 2634 5728 6674 3 173 1638 6305 4 647 4838 4901 6712 5 1464 5591 5710 7379 8258 3 2573 5777 8303 5 743 814 3586 4274 6773 5 70 3117 3125 4375 5689 +11 2 1060 6944 4 281 2991 6775 9198 5 188 1829 5649 5724 9114 2 3927 7455 4 1190 1513 3122 7450 4 619 1759 5779 7721 3 827 4252 7786 3 1566 3154 3342 5 562 1074 1386 5470 8625 3 365 6337 6672 3 2500 4613 4905 +8 3 2712 6256 8279 2 4085 5280 2 5885 6534 2 1018 5171 1 6640 2 7960 8774 1 5193 1 8865 +9 3 210 6045 8259 4 2967 3872 6147 7804 2 1779 8605 1 8457 4 1011 1038 4905 5052 3 3026 4488 9400 1 5365 4 647 2063 4642 8763 5 365 1826 2155 5278 9566 +6 5 514 833 1127 3789 6495 3 6244 6293 9128 6 1269 3790 5216 6564 8671 8773 6 3018 3292 4213 7661 8332 8492 4 249 2874 4098 5146 3 4770 5724 7379 +11 4 407 3874 4419 6962 4 3264 5843 6195 7269 6 91 145 276 6063 8096 9556 4 3795 3927 5199 8698 6 1704 3195 3461 4282 6503 7962 2 6317 8440 1 3559 2 1991 7101 7 8 738 3910 4626 4895 7524 8356 3 1146 3334 5199 3 62 4828 7516 +5 2 7146 7354 1 1610 1 3781 1 5478 1 2191 +9 2 2991 9841 2 2123 8567 2 2573 8068 1 7832 3 1759 7879 8278 2 5031 5974 2 3342 5329 2 4438 7980 2 5748 6086 +15 3 68 3696 5111 3 872 1709 8372 5 318 502 5427 5967 6990 6 1813 1985 2190 3665 3889 4751 4 881 2117 2979 9562 3 1767 4066 5907 2 1334 9952 5 1006 2938 4777 6784 9556 5 1038 2429 4905 5687 8825 2 3188 6754 3 986 1630 7313 3 841 1369 2599 5 253 5312 6084 9257 9575 3 1355 1725 4741 4 7827 8126 9482 9845 +5 2 7389 9657 2 2991 6225 2 1387 7938 1 2636 1 3696 +13 7 1367 2233 3099 5502 5854 8827 9184 5 244 4135 4464 7715 9863 5 2997 6393 7145 7804 9842 4 1500 5278 7309 7669 7 751 5851 6179 8052 8732 8990 9916 2 3064 5877 5 899 1339 1746 2019 3922 3 7867 9100 9475 8 430 767 1274 4654 6397 6513 7826 8512 5 2051 2769 3718 4333 6355 6 5964 6657 7293 7342 7985 9867 4 872 1338 6043 7909 6 624 3130 3270 3600 5889 9928 +5 3 1269 1692 8512 2 5759 8540 1 8578 3 1629 6286 7124 2 1216 8573 +5 1 551 2 1507 7615 3 2250 3045 9363 3 447 710 9982 2 4552 7920 +11 3 1724 7594 7696 3 1620 2928 6195 1 962 3 4588 5693 8785 1 2980 2 510 7510 3 2 6640 7537 4 469 2731 3879 6513 2 4555 6032 3 1404 5697 6106 2 744 5322 +16 2 2967 6147 4 1490 3010 7744 8303 1 1255 3 1011 4115 4459 2 4135 7613 1 3467 1 6711 2 1537 6643 2 3629 9542 1 6734 2 2132 7396 3 4508 5573 9488 2 3246 7317 2 3711 7635 1 4876 2 3812 9296 +10 2 5835 6804 2 5650 8723 1 7080 2 4246 8760 2 341 1805 4 827 3300 4976 7473 2 3771 4432 3 467 2485 6353 2 1067 4047 2 4056 5461 +10 2 3134 9119 3 4533 5261 5619 3 198 2988 6879 3 5559 6356 7534 3 3577 8032 9614 2 1669 7090 1 4001 2 6084 7220 2 7698 9662 1 229 +10 1 2963 5 1065 3331 4897 8285 8618 4 467 1304 2272 5479 4 127 5162 5308 7572 4 3093 3284 3627 7406 5 414 2065 6668 6914 9300 5 138 735 3345 4197 4594 4 2117 4085 5679 6508 4 45 1199 2654 9845 5 1816 2393 2977 7938 8080 +7 2 6962 9448 1 3726 2 8096 9556 1 1981 2 3927 5321 3 1704 2424 3461 3 3398 3559 6241 +6 1 7705 1 744 1 70 1 75 2 9705 9978 1 5270 +5 3 3491 3572 6810 3 1844 4570 9402 2 1339 5096 1 1801 1 1397 +13 3 6495 7101 8273 2 6228 8341 6 2505 2998 3212 5449 6131 7455 4 1312 3351 4098 7101 3 3790 4922 7375 4 4213 4654 5110 6771 8 1334 2031 2375 7227 7622 7708 8905 9463 4 5893 6092 8672 8837 4 681 1537 2082 3491 5 163 414 2182 3390 9229 8 138 272 3093 3279 4372 7455 8578 9062 5 117 293 1781 5893 8274 4 1563 5605 6879 7958 +12 5 1279 1792 3467 3986 9728 4 684 1397 1591 4953 3 7548 7823 8375 4 1917 5004 6119 8436 4 1831 2817 3851 5928 6 946 1338 2774 4386 5605 9764 3 2264 6150 7671 4 6918 7796 9288 9591 4 57 1345 4497 6725 4 1079 1491 2117 6804 6 303 2880 6228 8026 8181 8672 4 1005 2211 5499 7353 +7 2 6758 7101 2 2512 2998 4 1880 2880 3279 7930 2 3576 3661 3 3338 6614 8905 2 1844 2155 2 8274 8783 +6 3 6674 9287 9623 2 6761 7192 4 3315 4328 9193 9627 6 27 2395 3204 4534 6840 7926 1 6220 2 6804 9066 +8 1 9527 2 7440 7845 1 4908 2 1998 7269 1 1816 2 6092 8169 1 4477 1 6749 +10 6 1979 2421 6315 7594 7598 9913 6 212 294 845 3122 3934 7031 7 155 1276 2066 4737 4871 5024 9461 3 966 4961 7528 5 745 2164 3282 3668 5862 5 3022 3298 3341 5938 6045 5 271 1813 3226 3826 4929 6 1327 2052 4168 6924 8196 9532 4 116 2961 5787 6640 5 265 687 5729 7189 8488 +7 2 207 8595 3 2431 9355 9567 2 606 6960 2 265 8447 2 1304 2424 1 3613 1 8279 +16 2 6011 9364 3 3134 9119 9548 3 1337 5271 9752 2 1767 9695 1 4901 2 4905 8982 2 6499 7175 1 3577 1 4001 4 1301 1491 2903 3441 1 6919 2 3281 7220 1 6042 2 4419 9662 1 70 1 9054 +6 1 874 1 9934 1 3984 1 8285 1 1877 1 5471 +2 1 1362 1 8404 +11 5 1345 2766 7696 8617 9511 5 2967 4734 5826 6147 6195 9 542 1011 1859 3066 3134 4773 6241 8605 9119 5 2980 4463 6886 7136 9000 4 1150 5311 6743 8788 5 872 2181 4533 6225 7510 8 365 2071 3289 3577 3708 5422 6654 7771 4 2 1867 4001 9889 5 1828 3899 6106 6818 7123 3 5935 7392 9153 6 34 1294 4469 5378 6718 7220 +11 1 7203 1 3461 3 139 4423 9448 3 1709 3726 7653 2 229 4181 3 2451 3665 5321 3 2424 5309 8825 1 3355 1 790 1 7827 1 6241 +13 5 619 3592 4202 6782 7986 7 430 1146 1798 6111 6674 7183 9517 5 304 1880 4252 8279 8732 4 2370 6042 9170 9431 5 6376 6771 8274 8289 9043 5 3338 3835 6437 6795 7396 3 1609 4669 6775 7 44 1714 2410 6629 7560 8351 8440 7 1018 1092 1731 1991 4664 5171 6474 8 188 1504 1806 1954 7192 8902 9852 9916 10 183 210 548 738 1234 3551 4149 5924 8393 9954 5 2073 2658 5226 5724 7443 3 2285 5249 6953 +7 4 606 2766 5441 7145 7 1638 3188 3606 4024 4626 6531 9668 5 3311 4296 5373 7170 7823 5 1274 7098 7683 8071 9836 5 950 7146 7420 7721 9613 8 1918 1930 3680 3889 4751 5928 6899 7002 5 3334 4876 5366 5479 7379 +4 1 5511 1 1023 1 8534 1 3342 +10 2 6178 6961 2 6516 8685 2 6883 7406 2 269 5350 1 5088 3 1868 2254 5825 3 662 1630 7379 2 6353 9593 2 397 8944 1 6742 +8 2 3018 4900 4 198 2072 2988 7721 2 1801 9195 5 2815 7774 8015 9044 9229 8 645 1920 4372 4876 5562 7876 8764 9338 3 1146 2361 5437 3 2956 3039 4469 3 1669 5893 7316 +13 1 3212 1 5317 2 645 9338 1 8498 2 3039 3278 3 1290 4578 5783 3 681 4734 6626 1 3066 2 163 476 1 4463 3 272 1828 2890 3 727 5343 8982 1 6045 +6 1 8384 2 61 7285 1 2797 1 9950 1 8181 1 1187 +12 4 2077 2132 3667 6365 4 173 3364 3491 4688 5 1186 1453 3270 7189 8911 3 7597 8261 9954 2 1970 5098 4 651 1743 5886 6261 2 4033 4603 5 3277 4135 6075 7421 9574 4 3592 6910 7354 7528 3 3405 4665 5993 6 3916 5309 7210 7993 9780 9897 4 1662 1805 5991 6750 +15 1 5483 2 1861 8069 2 2800 6344 1 3337 2 147 9377 2 269 7167 1 5622 3 5 7099 8074 4 1038 1526 4905 8199 2 1938 7121 3 5436 8351 8816 2 6201 8636 3 3835 8896 9034 1 5812 3 5079 7138 7457 +6 2 5354 9363 3 242 9916 9943 2 4971 8444 4 4177 7982 9522 9559 1 173 1 8053 +7 4 5854 6516 7528 8723 3 269 5350 5800 3 1845 8887 9128 3 4463 5094 6144 1 397 3 5479 6742 9637 3 4432 4905 8479 +12 3 3404 4636 9023 2 1092 1731 2 681 3706 2 2234 6399 1 2487 3 3029 3572 5177 1 6186 3 1127 2709 9407 5 886 3772 6564 8773 8790 2 6970 7989 2 2731 6235 1 2447 +11 3 1954 8381 9364 2 2594 8727 2 3080 9269 3 2713 6512 9548 5 1692 3433 6134 8356 8669 2 1898 9204 4 5645 7124 7372 7972 3 2154 2741 5271 2 1566 1759 3 2779 3080 4630 1 1504 +8 7 1187 2683 6174 7805 8947 9250 9843 4 2726 3736 4256 8356 4 466 1665 3023 6318 4 4093 7099 7774 9987 5 210 1663 4734 8929 9287 2 306 4449 3 927 8731 8822 6 1938 2232 3613 4665 8145 8515 +6 2 3466 7616 2 2871 5998 2 5319 6495 1 1463 3 2494 4336 7868 2 4096 5724 +8 4 244 1956 4060 9060 2 3345 7801 1 9008 5 2267 2481 3266 6018 8293 4 624 3139 7376 9068 5 466 3278 5093 5284 8735 2 1687 8906 3 1187 4517 9722 +7 2 267 440 4 1724 1767 2580 8696 3 127 161 3022 7 4649 5938 6376 6804 7759 8515 8901 2 6822 7379 3 1879 7926 8731 5 3639 4145 4650 5193 5380 +7 1 3004 6 448 2123 4112 4167 7736 8567 4 1822 3293 6662 8285 5 6044 6392 7879 7971 9195 8 313 906 1268 2512 3587 8691 8816 9790 6 3130 6040 6488 7435 7472 7855 5 3039 3066 6326 9463 9841 +7 1 5282 1 7077 1 7101 1 2998 3 2837 4922 7375 2 1257 8905 2 8274 9469 +9 2 3732 7810 3 4920 5934 8488 2 1798 8964 1 7905 2 765 6662 1 237 2 3845 4177 1 7406 1 9739 diff --git a/Datasets/eighty.pat b/Datasets/eighty.pat new file mode 100644 index 0000000..8544aec --- /dev/null +++ b/Datasets/eighty.pat @@ -0,0 +1,19 @@ +Number of customers in database = 80 +Average sequence length = 10 +Average transaction length = 2.5 +Number of items = 10000 +Repetition-level = 0 +Variation in repetition-level = 0.1 +Large Itemsets: + Number of patterns = 25000 + Average length of pattern = 1.25 + Correlation between consecutive patterns = 0.25 + Average confidence in a rule = 0.75 + Variation in the confidence = 0.1 +Large Sequences: + Number of patterns = 5000 + Average length of pattern = 4 + Correlation between consecutive patterns = 0.25 + Average confidence in a rule = 0.75 + Variation in the confidence = 0.1 + diff --git a/Datasets/fourty.data b/Datasets/fourty.data new file mode 100644 index 0000000..c6cbf6f --- /dev/null +++ b/Datasets/fourty.data @@ -0,0 +1,39 @@ +9 1 2479 2 2154 5477 4 440 2276 6036 9838 4 6639 7926 9054 9748 1 1247 1 1992 1 2535 3 5095 7744 9337 6 2343 4737 7188 8518 9241 9486 +9 3 765 1542 7203 3 5854 7309 8827 1 5993 4 991 4956 6376 7993 3 606 1798 8964 3 606 1091 2787 2 4023 5242 3 2451 6392 8259 5 703 3355 5892 7169 9239 +6 1 9033 3 1845 7713 8778 3 1285 1705 7890 3 4049 6908 7443 2 765 1739 2 3627 9693 +1 2 269 4701 +2 2 6273 7655 1 2654 +6 1 149 2 3533 9471 1 5758 1 1491 1 5024 1 3812 +8 3 3404 4764 6487 3 5210 7637 7771 3 1405 5501 9708 3 3572 3875 7705 3 2709 4167 5713 7 886 2870 6918 7963 8571 9125 9795 2 723 6970 2 625 5975 +4 1 7851 1 2053 2 5826 8595 1 1734 +6 2 7213 7771 1 5510 2 4652 9373 1 9928 2 6771 7774 2 3113 8769 +5 2 765 6075 1 5735 1 3541 1 2715 1 2104 +3 1 1956 1 7093 2 298 2017 +7 1 3297 3 5577 5612 8526 3 3337 3692 8210 2 3279 8497 2 6052 7708 1 1258 1 6150 +9 1 4632 3 7612 8099 9393 4 1327 2055 5783 7642 5 4581 5060 6055 6901 8900 1 116 3 1510 3768 4435 1 140 4 4464 4664 6228 8283 3 2575 4565 6039 +8 7 2123 3096 3235 5029 8444 8567 8708 3 5550 5553 8445 4 3560 4804 7879 8034 2 4204 9124 4 327 3315 7615 7832 5 959 3023 6318 7616 8665 4 157 646 5661 8723 4 46 2051 2729 6037 +10 3 5869 5872 8093 2 312 4650 2 5783 6558 1 6116 3 494 2540 6711 1 3278 2 5193 5852 3 1917 4144 4474 4 1788 3629 4386 9542 4 2958 6708 7960 8983 +8 2 148 689 2 8663 9840 2 5675 7421 3 281 4646 5886 1 7924 3 1186 3023 7960 1 876 1 9731 +11 1 6201 1 3928 2 1345 4035 2 3811 9780 4 2177 5436 6150 7741 2 1710 8789 2 3708 6654 1 2702 2 3400 6061 4 2343 4627 4737 9487 1 4861 +4 1 1483 1 7835 1 8185 1 7218 +13 1 2217 3 5116 7988 9601 1 7211 3 1146 5819 9517 1 5724 1 611 1 9715 3 3441 8566 9551 2 7953 8373 2 1714 2410 1 9916 2 4149 7187 3 767 2285 3023 +7 2 617 9118 1 8204 3 1258 3825 7991 2 9387 9928 3 1504 6771 9845 2 8 381 1 7960 +6 4 2431 6365 9355 9567 1 4548 2 3592 4688 2 5309 6481 2 1805 3691 3 70 3613 4895 +7 1 5089 2 4177 7067 1 1051 2 3973 8280 3 1323 3697 9049 1 5982 2 3812 9296 +14 3 764 5329 5899 2 3386 6186 4 3342 5945 9075 9293 3 3143 5937 6944 3 2756 3331 4049 2 6034 9023 2 1098 5561 3 2375 8785 9983 5 1367 3927 4549 8724 9799 2 1279 5759 2 6376 7759 2 715 9674 2 765 2155 4 1521 3162 6392 8381 +6 3 3819 7192 9827 2 2547 2839 1 6529 3 3473 5357 7927 3 33 2341 5907 1 6537 +10 6 3428 3592 8911 9195 9238 9752 7 666 1767 4316 5598 7472 8404 9841 4 449 3923 5089 5535 4 1040 2634 5728 6674 3 173 1638 6305 4 647 4838 4901 6712 5 1464 5591 5710 7379 8258 3 2573 5777 8303 5 743 814 3586 4274 6773 5 70 3117 3125 4375 5689 +11 2 1060 6944 4 281 2991 6775 9198 5 188 1829 5649 5724 9114 2 3927 7455 4 1190 1513 3122 7450 4 619 1759 5779 7721 3 827 4252 7786 3 1566 3154 3342 5 562 1074 1386 5470 8625 3 365 6337 6672 3 2500 4613 4905 +8 3 2712 6256 8279 2 4085 5280 2 5885 6534 2 1018 5171 1 6640 2 7960 8774 1 5193 1 8865 +9 3 210 6045 8259 4 2967 3872 6147 7804 2 1779 8605 1 8457 4 1011 1038 4905 5052 3 3026 4488 9400 1 5365 4 647 2063 4642 8763 5 365 1826 2155 5278 9566 +6 5 514 833 1127 3789 6495 3 6244 6293 9128 6 1269 3790 5216 6564 8671 8773 6 3018 3292 4213 7661 8332 8492 4 249 2874 4098 5146 3 4770 5724 7379 +11 4 407 3874 4419 6962 4 3264 5843 6195 7269 6 91 145 276 6063 8096 9556 4 3795 3927 5199 8698 6 1704 3195 3461 4282 6503 7962 2 6317 8440 1 3559 2 1991 7101 7 8 738 3910 4626 4895 7524 8356 3 1146 3334 5199 3 62 4828 7516 +5 2 7146 7354 1 1610 1 3781 1 5478 1 2191 +9 2 2991 9841 2 2123 8567 2 2573 8068 1 7832 3 1759 7879 8278 2 5031 5974 2 3342 5329 2 4438 7980 2 5748 6086 +15 3 68 3696 5111 3 872 1709 8372 5 318 502 5427 5967 6990 6 1813 1985 2190 3665 3889 4751 4 881 2117 2979 9562 3 1767 4066 5907 2 1334 9952 5 1006 2938 4777 6784 9556 5 1038 2429 4905 5687 8825 2 3188 6754 3 986 1630 7313 3 841 1369 2599 5 253 5312 6084 9257 9575 3 1355 1725 4741 4 7827 8126 9482 9845 +5 2 7389 9657 2 2991 6225 2 1387 7938 1 2636 1 3696 +13 7 1367 2233 3099 5502 5854 8827 9184 5 244 4135 4464 7715 9863 5 2997 6393 7145 7804 9842 4 1500 5278 7309 7669 7 751 5851 6179 8052 8732 8990 9916 2 3064 5877 5 899 1339 1746 2019 3922 3 7867 9100 9475 8 430 767 1274 4654 6397 6513 7826 8512 5 2051 2769 3718 4333 6355 6 5964 6657 7293 7342 7985 9867 4 872 1338 6043 7909 6 624 3130 3270 3600 5889 9928 +5 3 1269 1692 8512 2 5759 8540 1 8578 3 1629 6286 7124 2 1216 8573 +5 1 551 2 1507 7615 3 2250 3045 9363 3 447 710 9982 2 4552 7920 +11 3 1724 7594 7696 3 1620 2928 6195 1 962 3 4588 5693 8785 1 2980 2 510 7510 3 2 6640 7537 4 469 2731 3879 6513 2 4555 6032 3 1404 5697 6106 2 744 5322 +16 2 2967 6147 4 1490 3010 7744 8303 1 1255 3 1011 4115 4459 2 4135 7613 1 3467 1 6711 2 1537 6643 2 3629 9542 1 6734 2 2132 7396 3 4508 5573 9488 2 3246 7317 2 3711 7635 1 4876 2 3812 9296 diff --git a/Datasets/fourty.pat b/Datasets/fourty.pat new file mode 100644 index 0000000..d5d8005 --- /dev/null +++ b/Datasets/fourty.pat @@ -0,0 +1,19 @@ +Number of customers in database = 40 +Average sequence length = 10 +Average transaction length = 2.5 +Number of items = 10000 +Repetition-level = 0 +Variation in repetition-level = 0.1 +Large Itemsets: + Number of patterns = 25000 + Average length of pattern = 1.25 + Correlation between consecutive patterns = 0.25 + Average confidence in a rule = 0.75 + Variation in the confidence = 0.1 +Large Sequences: + Number of patterns = 5000 + Average length of pattern = 4 + Correlation between consecutive patterns = 0.25 + Average confidence in a rule = 0.75 + Variation in the confidence = 0.1 + diff --git a/Datasets/hundred.data b/Datasets/hundred.data new file mode 100644 index 0000000..d213030 --- /dev/null +++ b/Datasets/hundred.data @@ -0,0 +1,97 @@ +9 1 2479 2 2154 5477 4 440 2276 6036 9838 4 6639 7926 9054 9748 1 1247 1 1992 1 2535 3 5095 7744 9337 6 2343 4737 7188 8518 9241 9486 +9 3 765 1542 7203 3 5854 7309 8827 1 5993 4 991 4956 6376 7993 3 606 1798 8964 3 606 1091 2787 2 4023 5242 3 2451 6392 8259 5 703 3355 5892 7169 9239 +6 1 9033 3 1845 7713 8778 3 1285 1705 7890 3 4049 6908 7443 2 765 1739 2 3627 9693 +1 2 269 4701 +2 2 6273 7655 1 2654 +6 1 149 2 3533 9471 1 5758 1 1491 1 5024 1 3812 +8 3 3404 4764 6487 3 5210 7637 7771 3 1405 5501 9708 3 3572 3875 7705 3 2709 4167 5713 7 886 2870 6918 7963 8571 9125 9795 2 723 6970 2 625 5975 +4 1 7851 1 2053 2 5826 8595 1 1734 +6 2 7213 7771 1 5510 2 4652 9373 1 9928 2 6771 7774 2 3113 8769 +5 2 765 6075 1 5735 1 3541 1 2715 1 2104 +3 1 1956 1 7093 2 298 2017 +7 1 3297 3 5577 5612 8526 3 3337 3692 8210 2 3279 8497 2 6052 7708 1 1258 1 6150 +9 1 4632 3 7612 8099 9393 4 1327 2055 5783 7642 5 4581 5060 6055 6901 8900 1 116 3 1510 3768 4435 1 140 4 4464 4664 6228 8283 3 2575 4565 6039 +8 7 2123 3096 3235 5029 8444 8567 8708 3 5550 5553 8445 4 3560 4804 7879 8034 2 4204 9124 4 327 3315 7615 7832 5 959 3023 6318 7616 8665 4 157 646 5661 8723 4 46 2051 2729 6037 +10 3 5869 5872 8093 2 312 4650 2 5783 6558 1 6116 3 494 2540 6711 1 3278 2 5193 5852 3 1917 4144 4474 4 1788 3629 4386 9542 4 2958 6708 7960 8983 +8 2 148 689 2 8663 9840 2 5675 7421 3 281 4646 5886 1 7924 3 1186 3023 7960 1 876 1 9731 +11 1 6201 1 3928 2 1345 4035 2 3811 9780 4 2177 5436 6150 7741 2 1710 8789 2 3708 6654 1 2702 2 3400 6061 4 2343 4627 4737 9487 1 4861 +4 1 1483 1 7835 1 8185 1 7218 +13 1 2217 3 5116 7988 9601 1 7211 3 1146 5819 9517 1 5724 1 611 1 9715 3 3441 8566 9551 2 7953 8373 2 1714 2410 1 9916 2 4149 7187 3 767 2285 3023 +7 2 617 9118 1 8204 3 1258 3825 7991 2 9387 9928 3 1504 6771 9845 2 8 381 1 7960 +6 4 2431 6365 9355 9567 1 4548 2 3592 4688 2 5309 6481 2 1805 3691 3 70 3613 4895 +7 1 5089 2 4177 7067 1 1051 2 3973 8280 3 1323 3697 9049 1 5982 2 3812 9296 +14 3 764 5329 5899 2 3386 6186 4 3342 5945 9075 9293 3 3143 5937 6944 3 2756 3331 4049 2 6034 9023 2 1098 5561 3 2375 8785 9983 5 1367 3927 4549 8724 9799 2 1279 5759 2 6376 7759 2 715 9674 2 765 2155 4 1521 3162 6392 8381 +6 3 3819 7192 9827 2 2547 2839 1 6529 3 3473 5357 7927 3 33 2341 5907 1 6537 +10 6 3428 3592 8911 9195 9238 9752 7 666 1767 4316 5598 7472 8404 9841 4 449 3923 5089 5535 4 1040 2634 5728 6674 3 173 1638 6305 4 647 4838 4901 6712 5 1464 5591 5710 7379 8258 3 2573 5777 8303 5 743 814 3586 4274 6773 5 70 3117 3125 4375 5689 +11 2 1060 6944 4 281 2991 6775 9198 5 188 1829 5649 5724 9114 2 3927 7455 4 1190 1513 3122 7450 4 619 1759 5779 7721 3 827 4252 7786 3 1566 3154 3342 5 562 1074 1386 5470 8625 3 365 6337 6672 3 2500 4613 4905 +8 3 2712 6256 8279 2 4085 5280 2 5885 6534 2 1018 5171 1 6640 2 7960 8774 1 5193 1 8865 +9 3 210 6045 8259 4 2967 3872 6147 7804 2 1779 8605 1 8457 4 1011 1038 4905 5052 3 3026 4488 9400 1 5365 4 647 2063 4642 8763 5 365 1826 2155 5278 9566 +6 5 514 833 1127 3789 6495 3 6244 6293 9128 6 1269 3790 5216 6564 8671 8773 6 3018 3292 4213 7661 8332 8492 4 249 2874 4098 5146 3 4770 5724 7379 +11 4 407 3874 4419 6962 4 3264 5843 6195 7269 6 91 145 276 6063 8096 9556 4 3795 3927 5199 8698 6 1704 3195 3461 4282 6503 7962 2 6317 8440 1 3559 2 1991 7101 7 8 738 3910 4626 4895 7524 8356 3 1146 3334 5199 3 62 4828 7516 +5 2 7146 7354 1 1610 1 3781 1 5478 1 2191 +9 2 2991 9841 2 2123 8567 2 2573 8068 1 7832 3 1759 7879 8278 2 5031 5974 2 3342 5329 2 4438 7980 2 5748 6086 +15 3 68 3696 5111 3 872 1709 8372 5 318 502 5427 5967 6990 6 1813 1985 2190 3665 3889 4751 4 881 2117 2979 9562 3 1767 4066 5907 2 1334 9952 5 1006 2938 4777 6784 9556 5 1038 2429 4905 5687 8825 2 3188 6754 3 986 1630 7313 3 841 1369 2599 5 253 5312 6084 9257 9575 3 1355 1725 4741 4 7827 8126 9482 9845 +5 2 7389 9657 2 2991 6225 2 1387 7938 1 2636 1 3696 +13 7 1367 2233 3099 5502 5854 8827 9184 5 244 4135 4464 7715 9863 5 2997 6393 7145 7804 9842 4 1500 5278 7309 7669 7 751 5851 6179 8052 8732 8990 9916 2 3064 5877 5 899 1339 1746 2019 3922 3 7867 9100 9475 8 430 767 1274 4654 6397 6513 7826 8512 5 2051 2769 3718 4333 6355 6 5964 6657 7293 7342 7985 9867 4 872 1338 6043 7909 6 624 3130 3270 3600 5889 9928 +5 3 1269 1692 8512 2 5759 8540 1 8578 3 1629 6286 7124 2 1216 8573 +5 1 551 2 1507 7615 3 2250 3045 9363 3 447 710 9982 2 4552 7920 +11 3 1724 7594 7696 3 1620 2928 6195 1 962 3 4588 5693 8785 1 2980 2 510 7510 3 2 6640 7537 4 469 2731 3879 6513 2 4555 6032 3 1404 5697 6106 2 744 5322 +16 2 2967 6147 4 1490 3010 7744 8303 1 1255 3 1011 4115 4459 2 4135 7613 1 3467 1 6711 2 1537 6643 2 3629 9542 1 6734 2 2132 7396 3 4508 5573 9488 2 3246 7317 2 3711 7635 1 4876 2 3812 9296 +10 2 5835 6804 2 5650 8723 1 7080 2 4246 8760 2 341 1805 4 827 3300 4976 7473 2 3771 4432 3 467 2485 6353 2 1067 4047 2 4056 5461 +10 2 3134 9119 3 4533 5261 5619 3 198 2988 6879 3 5559 6356 7534 3 3577 8032 9614 2 1669 7090 1 4001 2 6084 7220 2 7698 9662 1 229 +10 1 2963 5 1065 3331 4897 8285 8618 4 467 1304 2272 5479 4 127 5162 5308 7572 4 3093 3284 3627 7406 5 414 2065 6668 6914 9300 5 138 735 3345 4197 4594 4 2117 4085 5679 6508 4 45 1199 2654 9845 5 1816 2393 2977 7938 8080 +7 2 6962 9448 1 3726 2 8096 9556 1 1981 2 3927 5321 3 1704 2424 3461 3 3398 3559 6241 +6 1 7705 1 744 1 70 1 75 2 9705 9978 1 5270 +5 3 3491 3572 6810 3 1844 4570 9402 2 1339 5096 1 1801 1 1397 +13 3 6495 7101 8273 2 6228 8341 6 2505 2998 3212 5449 6131 7455 4 1312 3351 4098 7101 3 3790 4922 7375 4 4213 4654 5110 6771 8 1334 2031 2375 7227 7622 7708 8905 9463 4 5893 6092 8672 8837 4 681 1537 2082 3491 5 163 414 2182 3390 9229 8 138 272 3093 3279 4372 7455 8578 9062 5 117 293 1781 5893 8274 4 1563 5605 6879 7958 +12 5 1279 1792 3467 3986 9728 4 684 1397 1591 4953 3 7548 7823 8375 4 1917 5004 6119 8436 4 1831 2817 3851 5928 6 946 1338 2774 4386 5605 9764 3 2264 6150 7671 4 6918 7796 9288 9591 4 57 1345 4497 6725 4 1079 1491 2117 6804 6 303 2880 6228 8026 8181 8672 4 1005 2211 5499 7353 +7 2 6758 7101 2 2512 2998 4 1880 2880 3279 7930 2 3576 3661 3 3338 6614 8905 2 1844 2155 2 8274 8783 +6 3 6674 9287 9623 2 6761 7192 4 3315 4328 9193 9627 6 27 2395 3204 4534 6840 7926 1 6220 2 6804 9066 +8 1 9527 2 7440 7845 1 4908 2 1998 7269 1 1816 2 6092 8169 1 4477 1 6749 +10 6 1979 2421 6315 7594 7598 9913 6 212 294 845 3122 3934 7031 7 155 1276 2066 4737 4871 5024 9461 3 966 4961 7528 5 745 2164 3282 3668 5862 5 3022 3298 3341 5938 6045 5 271 1813 3226 3826 4929 6 1327 2052 4168 6924 8196 9532 4 116 2961 5787 6640 5 265 687 5729 7189 8488 +7 2 207 8595 3 2431 9355 9567 2 606 6960 2 265 8447 2 1304 2424 1 3613 1 8279 +16 2 6011 9364 3 3134 9119 9548 3 1337 5271 9752 2 1767 9695 1 4901 2 4905 8982 2 6499 7175 1 3577 1 4001 4 1301 1491 2903 3441 1 6919 2 3281 7220 1 6042 2 4419 9662 1 70 1 9054 +6 1 874 1 9934 1 3984 1 8285 1 1877 1 5471 +2 1 1362 1 8404 +11 5 1345 2766 7696 8617 9511 5 2967 4734 5826 6147 6195 9 542 1011 1859 3066 3134 4773 6241 8605 9119 5 2980 4463 6886 7136 9000 4 1150 5311 6743 8788 5 872 2181 4533 6225 7510 8 365 2071 3289 3577 3708 5422 6654 7771 4 2 1867 4001 9889 5 1828 3899 6106 6818 7123 3 5935 7392 9153 6 34 1294 4469 5378 6718 7220 +11 1 7203 1 3461 3 139 4423 9448 3 1709 3726 7653 2 229 4181 3 2451 3665 5321 3 2424 5309 8825 1 3355 1 790 1 7827 1 6241 +13 5 619 3592 4202 6782 7986 7 430 1146 1798 6111 6674 7183 9517 5 304 1880 4252 8279 8732 4 2370 6042 9170 9431 5 6376 6771 8274 8289 9043 5 3338 3835 6437 6795 7396 3 1609 4669 6775 7 44 1714 2410 6629 7560 8351 8440 7 1018 1092 1731 1991 4664 5171 6474 8 188 1504 1806 1954 7192 8902 9852 9916 10 183 210 548 738 1234 3551 4149 5924 8393 9954 5 2073 2658 5226 5724 7443 3 2285 5249 6953 +7 4 606 2766 5441 7145 7 1638 3188 3606 4024 4626 6531 9668 5 3311 4296 5373 7170 7823 5 1274 7098 7683 8071 9836 5 950 7146 7420 7721 9613 8 1918 1930 3680 3889 4751 5928 6899 7002 5 3334 4876 5366 5479 7379 +4 1 5511 1 1023 1 8534 1 3342 +10 2 6178 6961 2 6516 8685 2 6883 7406 2 269 5350 1 5088 3 1868 2254 5825 3 662 1630 7379 2 6353 9593 2 397 8944 1 6742 +8 2 3018 4900 4 198 2072 2988 7721 2 1801 9195 5 2815 7774 8015 9044 9229 8 645 1920 4372 4876 5562 7876 8764 9338 3 1146 2361 5437 3 2956 3039 4469 3 1669 5893 7316 +13 1 3212 1 5317 2 645 9338 1 8498 2 3039 3278 3 1290 4578 5783 3 681 4734 6626 1 3066 2 163 476 1 4463 3 272 1828 2890 3 727 5343 8982 1 6045 +6 1 8384 2 61 7285 1 2797 1 9950 1 8181 1 1187 +12 4 2077 2132 3667 6365 4 173 3364 3491 4688 5 1186 1453 3270 7189 8911 3 7597 8261 9954 2 1970 5098 4 651 1743 5886 6261 2 4033 4603 5 3277 4135 6075 7421 9574 4 3592 6910 7354 7528 3 3405 4665 5993 6 3916 5309 7210 7993 9780 9897 4 1662 1805 5991 6750 +15 1 5483 2 1861 8069 2 2800 6344 1 3337 2 147 9377 2 269 7167 1 5622 3 5 7099 8074 4 1038 1526 4905 8199 2 1938 7121 3 5436 8351 8816 2 6201 8636 3 3835 8896 9034 1 5812 3 5079 7138 7457 +6 2 5354 9363 3 242 9916 9943 2 4971 8444 4 4177 7982 9522 9559 1 173 1 8053 +7 4 5854 6516 7528 8723 3 269 5350 5800 3 1845 8887 9128 3 4463 5094 6144 1 397 3 5479 6742 9637 3 4432 4905 8479 +12 3 3404 4636 9023 2 1092 1731 2 681 3706 2 2234 6399 1 2487 3 3029 3572 5177 1 6186 3 1127 2709 9407 5 886 3772 6564 8773 8790 2 6970 7989 2 2731 6235 1 2447 +11 3 1954 8381 9364 2 2594 8727 2 3080 9269 3 2713 6512 9548 5 1692 3433 6134 8356 8669 2 1898 9204 4 5645 7124 7372 7972 3 2154 2741 5271 2 1566 1759 3 2779 3080 4630 1 1504 +8 7 1187 2683 6174 7805 8947 9250 9843 4 2726 3736 4256 8356 4 466 1665 3023 6318 4 4093 7099 7774 9987 5 210 1663 4734 8929 9287 2 306 4449 3 927 8731 8822 6 1938 2232 3613 4665 8145 8515 +6 2 3466 7616 2 2871 5998 2 5319 6495 1 1463 3 2494 4336 7868 2 4096 5724 +8 4 244 1956 4060 9060 2 3345 7801 1 9008 5 2267 2481 3266 6018 8293 4 624 3139 7376 9068 5 466 3278 5093 5284 8735 2 1687 8906 3 1187 4517 9722 +7 2 267 440 4 1724 1767 2580 8696 3 127 161 3022 7 4649 5938 6376 6804 7759 8515 8901 2 6822 7379 3 1879 7926 8731 5 3639 4145 4650 5193 5380 +7 1 3004 6 448 2123 4112 4167 7736 8567 4 1822 3293 6662 8285 5 6044 6392 7879 7971 9195 8 313 906 1268 2512 3587 8691 8816 9790 6 3130 6040 6488 7435 7472 7855 5 3039 3066 6326 9463 9841 +7 1 5282 1 7077 1 7101 1 2998 3 2837 4922 7375 2 1257 8905 2 8274 9469 +9 2 3732 7810 3 4920 5934 8488 2 1798 8964 1 7905 2 765 6662 1 237 2 3845 4177 1 7406 1 9739 +9 1 7891 1 1993 3 2125 4066 5907 1 2031 5 538 1860 4506 4579 9084 3 1269 2058 3878 2 1765 7598 3 5094 6741 7524 3 1300 3257 6011 +10 1 2991 4 3122 5729 7192 7448 1 440 1 7389 1 1759 1 7583 1 7661 1 5477 1 8540 1 1825 +12 2 2217 8518 3 270 1490 6207 3 2051 4525 6045 2 7012 7211 4 1006 2938 4777 6784 3 4688 9118 9627 2 3457 5724 5 885 968 7612 8373 9250 6 3697 3707 7580 7646 7703 9219 1 510 3 577 1126 1725 3 121 1634 7511 +4 5 1798 2182 5085 8964 9841 3 4751 5563 9739 5 1866 3889 5222 5817 7894 4 1772 2573 6943 7966 +9 2 492 2921 1 1536 2 538 9943 3 5100 6225 6763 1 3304 2 2580 9623 5 2660 3405 5034 6980 8148 3 2396 2880 6161 2 5661 7301 +6 4 3335 5623 7227 7708 2 4146 9124 2 2451 7832 4 3606 4085 4565 9073 3 646 2505 5449 4 2991 3279 6225 9373 +11 4 3873 4956 8379 8486 4 1185 5013 5311 5568 3 5182 8379 9877 4 3406 5680 9288 9775 3 893 4848 5724 7 426 1153 2999 3951 5387 6412 7167 3 1983 2475 8816 2 4848 5876 1 3390 5 1685 5241 5544 6166 9572 8 558 1529 2985 4853 5883 8398 8937 9407 +15 4 1824 4920 7134 8457 2 2873 4902 3 5382 5903 8969 4 327 5380 8176 9082 2 3921 4494 3 7845 8042 9044 5 646 3555 4660 4991 7919 4 170 3720 5694 8389 3 381 7805 8947 3 617 6512 9916 3 1241 2859 5735 2 5174 7905 3 950 6432 6650 1 2261 3 1898 3553 8788 +11 7 2635 4477 4971 6352 8073 8727 9160 6 2200 3407 4202 5477 5631 9852 3 5375 5850 9761 5 440 5005 5641 5811 6036 5 2485 6353 6512 7953 9748 6 460 1972 4429 4728 7342 8669 5 646 1247 2301 8489 8722 2 2535 5850 5 2236 2686 5095 7744 8003 3 3694 8518 8729 4 237 4037 6305 7832 +14 2 267 7858 1 8696 5 2339 3039 3956 6921 7109 2 6822 9840 5 3004 3022 3288 7050 8678 4 5375 5850 6211 9761 1 3812 1 9177 4 4068 4112 4793 7736 3 6822 7855 7953 5 1879 3335 3450 7926 9195 2 4728 8669 3 2236 3639 5380 4 139 3389 4423 5050 +10 1 2155 1 1779 2 1542 1829 1 9372 1 3927 2 3113 3403 1 4809 1 5779 1 3421 1 6706 +10 2 645 9338 2 1146 4366 2 6544 7392 3 4549 9799 9841 3 2573 5261 5619 2 2175 6665 1 265 2 3309 4169 1 476 2 5728 6225 +3 2 5649 7765 2 2324 3928 2 1015 9769 +10 3 810 3466 8035 6 625 2676 5354 7124 7768 9641 3 135 5212 9780 3 3935 6342 8649 5 1710 5050 5807 9384 9966 3 1274 1724 6272 3 1563 4520 5959 2 8210 9916 1 468 3 2869 4971 7641 +10 3 1622 5779 6270 6 827 4394 4693 5780 8372 8595 4 3449 4876 7031 7179 6 746 1085 1469 7410 8827 9532 5 2155 5252 6549 6879 9082 3 866 2155 4863 4 448 3027 3652 9527 5 1891 2201 4433 7995 9921 5 1362 2052 3718 5946 8058 3 1643 2250 4920 +9 6 492 1956 3257 4060 5402 9060 3 4294 6032 8185 3 1703 4843 7012 1 3046 6 1092 2341 4652 5693 8796 9799 2 405 8595 3 5471 6673 9722 4 1092 1731 8051 9979 5 1922 2237 3483 5789 9925 +9 4 397 4956 5041 6677 6 1185 2249 5568 8475 8685 9185 4 612 1145 2052 9757 2 5288 8696 5 1130 5680 7275 9288 9775 2 1868 8289 3 2564 4702 6531 5 1630 1983 2475 3134 4594 5 265 1022 4219 5050 9593 +3 1 7832 1 1184 1 3068 +11 2 440 5650 3 4246 5311 8760 4 341 5252 6879 9082 2 161 2155 1 3718 4 1452 2137 4160 4976 1 7167 1 4047 1 8515 3 1887 5758 8816 2 4963 8884 +10 3 3278 3338 6685 3 2017 3572 4013 1 6491 2 2164 5096 4 2004 3278 9532 9590 2 299 2804 4 7992 8739 9886 9915 2 6861 8544 3 6657 8829 9030 3 3204 8269 9384 diff --git a/Datasets/hundred.pat b/Datasets/hundred.pat new file mode 100644 index 0000000..e9af54f --- /dev/null +++ b/Datasets/hundred.pat @@ -0,0 +1,19 @@ +Number of customers in database = 100 +Average sequence length = 10 +Average transaction length = 2.5 +Number of items = 10000 +Repetition-level = 0 +Variation in repetition-level = 0.1 +Large Itemsets: + Number of patterns = 25000 + Average length of pattern = 1.25 + Correlation between consecutive patterns = 0.25 + Average confidence in a rule = 0.75 + Variation in the confidence = 0.1 +Large Sequences: + Number of patterns = 5000 + Average length of pattern = 4 + Correlation between consecutive patterns = 0.25 + Average confidence in a rule = 0.75 + Variation in the confidence = 0.1 + diff --git a/Datasets/sixty.data b/Datasets/sixty.data new file mode 100644 index 0000000..f96c83e --- /dev/null +++ b/Datasets/sixty.data @@ -0,0 +1,59 @@ +9 1 2479 2 2154 5477 4 440 2276 6036 9838 4 6639 7926 9054 9748 1 1247 1 1992 1 2535 3 5095 7744 9337 6 2343 4737 7188 8518 9241 9486 +9 3 765 1542 7203 3 5854 7309 8827 1 5993 4 991 4956 6376 7993 3 606 1798 8964 3 606 1091 2787 2 4023 5242 3 2451 6392 8259 5 703 3355 5892 7169 9239 +6 1 9033 3 1845 7713 8778 3 1285 1705 7890 3 4049 6908 7443 2 765 1739 2 3627 9693 +1 2 269 4701 +2 2 6273 7655 1 2654 +6 1 149 2 3533 9471 1 5758 1 1491 1 5024 1 3812 +8 3 3404 4764 6487 3 5210 7637 7771 3 1405 5501 9708 3 3572 3875 7705 3 2709 4167 5713 7 886 2870 6918 7963 8571 9125 9795 2 723 6970 2 625 5975 +4 1 7851 1 2053 2 5826 8595 1 1734 +6 2 7213 7771 1 5510 2 4652 9373 1 9928 2 6771 7774 2 3113 8769 +5 2 765 6075 1 5735 1 3541 1 2715 1 2104 +3 1 1956 1 7093 2 298 2017 +7 1 3297 3 5577 5612 8526 3 3337 3692 8210 2 3279 8497 2 6052 7708 1 1258 1 6150 +9 1 4632 3 7612 8099 9393 4 1327 2055 5783 7642 5 4581 5060 6055 6901 8900 1 116 3 1510 3768 4435 1 140 4 4464 4664 6228 8283 3 2575 4565 6039 +8 7 2123 3096 3235 5029 8444 8567 8708 3 5550 5553 8445 4 3560 4804 7879 8034 2 4204 9124 4 327 3315 7615 7832 5 959 3023 6318 7616 8665 4 157 646 5661 8723 4 46 2051 2729 6037 +10 3 5869 5872 8093 2 312 4650 2 5783 6558 1 6116 3 494 2540 6711 1 3278 2 5193 5852 3 1917 4144 4474 4 1788 3629 4386 9542 4 2958 6708 7960 8983 +8 2 148 689 2 8663 9840 2 5675 7421 3 281 4646 5886 1 7924 3 1186 3023 7960 1 876 1 9731 +11 1 6201 1 3928 2 1345 4035 2 3811 9780 4 2177 5436 6150 7741 2 1710 8789 2 3708 6654 1 2702 2 3400 6061 4 2343 4627 4737 9487 1 4861 +4 1 1483 1 7835 1 8185 1 7218 +13 1 2217 3 5116 7988 9601 1 7211 3 1146 5819 9517 1 5724 1 611 1 9715 3 3441 8566 9551 2 7953 8373 2 1714 2410 1 9916 2 4149 7187 3 767 2285 3023 +7 2 617 9118 1 8204 3 1258 3825 7991 2 9387 9928 3 1504 6771 9845 2 8 381 1 7960 +6 4 2431 6365 9355 9567 1 4548 2 3592 4688 2 5309 6481 2 1805 3691 3 70 3613 4895 +7 1 5089 2 4177 7067 1 1051 2 3973 8280 3 1323 3697 9049 1 5982 2 3812 9296 +14 3 764 5329 5899 2 3386 6186 4 3342 5945 9075 9293 3 3143 5937 6944 3 2756 3331 4049 2 6034 9023 2 1098 5561 3 2375 8785 9983 5 1367 3927 4549 8724 9799 2 1279 5759 2 6376 7759 2 715 9674 2 765 2155 4 1521 3162 6392 8381 +6 3 3819 7192 9827 2 2547 2839 1 6529 3 3473 5357 7927 3 33 2341 5907 1 6537 +10 6 3428 3592 8911 9195 9238 9752 7 666 1767 4316 5598 7472 8404 9841 4 449 3923 5089 5535 4 1040 2634 5728 6674 3 173 1638 6305 4 647 4838 4901 6712 5 1464 5591 5710 7379 8258 3 2573 5777 8303 5 743 814 3586 4274 6773 5 70 3117 3125 4375 5689 +11 2 1060 6944 4 281 2991 6775 9198 5 188 1829 5649 5724 9114 2 3927 7455 4 1190 1513 3122 7450 4 619 1759 5779 7721 3 827 4252 7786 3 1566 3154 3342 5 562 1074 1386 5470 8625 3 365 6337 6672 3 2500 4613 4905 +8 3 2712 6256 8279 2 4085 5280 2 5885 6534 2 1018 5171 1 6640 2 7960 8774 1 5193 1 8865 +9 3 210 6045 8259 4 2967 3872 6147 7804 2 1779 8605 1 8457 4 1011 1038 4905 5052 3 3026 4488 9400 1 5365 4 647 2063 4642 8763 5 365 1826 2155 5278 9566 +6 5 514 833 1127 3789 6495 3 6244 6293 9128 6 1269 3790 5216 6564 8671 8773 6 3018 3292 4213 7661 8332 8492 4 249 2874 4098 5146 3 4770 5724 7379 +11 4 407 3874 4419 6962 4 3264 5843 6195 7269 6 91 145 276 6063 8096 9556 4 3795 3927 5199 8698 6 1704 3195 3461 4282 6503 7962 2 6317 8440 1 3559 2 1991 7101 7 8 738 3910 4626 4895 7524 8356 3 1146 3334 5199 3 62 4828 7516 +5 2 7146 7354 1 1610 1 3781 1 5478 1 2191 +9 2 2991 9841 2 2123 8567 2 2573 8068 1 7832 3 1759 7879 8278 2 5031 5974 2 3342 5329 2 4438 7980 2 5748 6086 +15 3 68 3696 5111 3 872 1709 8372 5 318 502 5427 5967 6990 6 1813 1985 2190 3665 3889 4751 4 881 2117 2979 9562 3 1767 4066 5907 2 1334 9952 5 1006 2938 4777 6784 9556 5 1038 2429 4905 5687 8825 2 3188 6754 3 986 1630 7313 3 841 1369 2599 5 253 5312 6084 9257 9575 3 1355 1725 4741 4 7827 8126 9482 9845 +5 2 7389 9657 2 2991 6225 2 1387 7938 1 2636 1 3696 +13 7 1367 2233 3099 5502 5854 8827 9184 5 244 4135 4464 7715 9863 5 2997 6393 7145 7804 9842 4 1500 5278 7309 7669 7 751 5851 6179 8052 8732 8990 9916 2 3064 5877 5 899 1339 1746 2019 3922 3 7867 9100 9475 8 430 767 1274 4654 6397 6513 7826 8512 5 2051 2769 3718 4333 6355 6 5964 6657 7293 7342 7985 9867 4 872 1338 6043 7909 6 624 3130 3270 3600 5889 9928 +5 3 1269 1692 8512 2 5759 8540 1 8578 3 1629 6286 7124 2 1216 8573 +5 1 551 2 1507 7615 3 2250 3045 9363 3 447 710 9982 2 4552 7920 +11 3 1724 7594 7696 3 1620 2928 6195 1 962 3 4588 5693 8785 1 2980 2 510 7510 3 2 6640 7537 4 469 2731 3879 6513 2 4555 6032 3 1404 5697 6106 2 744 5322 +16 2 2967 6147 4 1490 3010 7744 8303 1 1255 3 1011 4115 4459 2 4135 7613 1 3467 1 6711 2 1537 6643 2 3629 9542 1 6734 2 2132 7396 3 4508 5573 9488 2 3246 7317 2 3711 7635 1 4876 2 3812 9296 +10 2 5835 6804 2 5650 8723 1 7080 2 4246 8760 2 341 1805 4 827 3300 4976 7473 2 3771 4432 3 467 2485 6353 2 1067 4047 2 4056 5461 +10 2 3134 9119 3 4533 5261 5619 3 198 2988 6879 3 5559 6356 7534 3 3577 8032 9614 2 1669 7090 1 4001 2 6084 7220 2 7698 9662 1 229 +10 1 2963 5 1065 3331 4897 8285 8618 4 467 1304 2272 5479 4 127 5162 5308 7572 4 3093 3284 3627 7406 5 414 2065 6668 6914 9300 5 138 735 3345 4197 4594 4 2117 4085 5679 6508 4 45 1199 2654 9845 5 1816 2393 2977 7938 8080 +7 2 6962 9448 1 3726 2 8096 9556 1 1981 2 3927 5321 3 1704 2424 3461 3 3398 3559 6241 +6 1 7705 1 744 1 70 1 75 2 9705 9978 1 5270 +5 3 3491 3572 6810 3 1844 4570 9402 2 1339 5096 1 1801 1 1397 +13 3 6495 7101 8273 2 6228 8341 6 2505 2998 3212 5449 6131 7455 4 1312 3351 4098 7101 3 3790 4922 7375 4 4213 4654 5110 6771 8 1334 2031 2375 7227 7622 7708 8905 9463 4 5893 6092 8672 8837 4 681 1537 2082 3491 5 163 414 2182 3390 9229 8 138 272 3093 3279 4372 7455 8578 9062 5 117 293 1781 5893 8274 4 1563 5605 6879 7958 +12 5 1279 1792 3467 3986 9728 4 684 1397 1591 4953 3 7548 7823 8375 4 1917 5004 6119 8436 4 1831 2817 3851 5928 6 946 1338 2774 4386 5605 9764 3 2264 6150 7671 4 6918 7796 9288 9591 4 57 1345 4497 6725 4 1079 1491 2117 6804 6 303 2880 6228 8026 8181 8672 4 1005 2211 5499 7353 +7 2 6758 7101 2 2512 2998 4 1880 2880 3279 7930 2 3576 3661 3 3338 6614 8905 2 1844 2155 2 8274 8783 +6 3 6674 9287 9623 2 6761 7192 4 3315 4328 9193 9627 6 27 2395 3204 4534 6840 7926 1 6220 2 6804 9066 +8 1 9527 2 7440 7845 1 4908 2 1998 7269 1 1816 2 6092 8169 1 4477 1 6749 +10 6 1979 2421 6315 7594 7598 9913 6 212 294 845 3122 3934 7031 7 155 1276 2066 4737 4871 5024 9461 3 966 4961 7528 5 745 2164 3282 3668 5862 5 3022 3298 3341 5938 6045 5 271 1813 3226 3826 4929 6 1327 2052 4168 6924 8196 9532 4 116 2961 5787 6640 5 265 687 5729 7189 8488 +7 2 207 8595 3 2431 9355 9567 2 606 6960 2 265 8447 2 1304 2424 1 3613 1 8279 +16 2 6011 9364 3 3134 9119 9548 3 1337 5271 9752 2 1767 9695 1 4901 2 4905 8982 2 6499 7175 1 3577 1 4001 4 1301 1491 2903 3441 1 6919 2 3281 7220 1 6042 2 4419 9662 1 70 1 9054 +6 1 874 1 9934 1 3984 1 8285 1 1877 1 5471 +2 1 1362 1 8404 +11 5 1345 2766 7696 8617 9511 5 2967 4734 5826 6147 6195 9 542 1011 1859 3066 3134 4773 6241 8605 9119 5 2980 4463 6886 7136 9000 4 1150 5311 6743 8788 5 872 2181 4533 6225 7510 8 365 2071 3289 3577 3708 5422 6654 7771 4 2 1867 4001 9889 5 1828 3899 6106 6818 7123 3 5935 7392 9153 6 34 1294 4469 5378 6718 7220 +11 1 7203 1 3461 3 139 4423 9448 3 1709 3726 7653 2 229 4181 3 2451 3665 5321 3 2424 5309 8825 1 3355 1 790 1 7827 1 6241 +13 5 619 3592 4202 6782 7986 7 430 1146 1798 6111 6674 7183 9517 5 304 1880 4252 8279 8732 4 2370 6042 9170 9431 5 6376 6771 8274 8289 9043 5 3338 3835 6437 6795 7396 3 1609 4669 6775 7 44 1714 2410 6629 7560 8351 8440 7 1018 1092 1731 1991 4664 5171 6474 8 188 1504 1806 1954 7192 8902 9852 9916 10 183 210 548 738 1234 3551 4149 5924 8393 9954 5 2073 2658 5226 5724 7443 3 2285 5249 6953 +7 4 606 2766 5441 7145 7 1638 3188 3606 4024 4626 6531 9668 5 3311 4296 5373 7170 7823 5 1274 7098 7683 8071 9836 5 950 7146 7420 7721 9613 8 1918 1930 3680 3889 4751 5928 6899 7002 5 3334 4876 5366 5479 7379 diff --git a/Datasets/sixty.pat b/Datasets/sixty.pat new file mode 100644 index 0000000..84bd12c --- /dev/null +++ b/Datasets/sixty.pat @@ -0,0 +1,19 @@ +Number of customers in database = 60 +Average sequence length = 10 +Average transaction length = 2.5 +Number of items = 10000 +Repetition-level = 0 +Variation in repetition-level = 0.1 +Large Itemsets: + Number of patterns = 25000 + Average length of pattern = 1.25 + Correlation between consecutive patterns = 0.25 + Average confidence in a rule = 0.75 + Variation in the confidence = 0.1 +Large Sequences: + Number of patterns = 5000 + Average length of pattern = 4 + Correlation between consecutive patterns = 0.25 + Average confidence in a rule = 0.75 + Variation in the confidence = 0.1 + diff --git a/Datasets/ten.data b/Datasets/ten.data new file mode 100644 index 0000000..e0c435a --- /dev/null +++ b/Datasets/ten.data @@ -0,0 +1,10 @@ +9 1 2479 2 2154 5477 4 440 2276 6036 9838 4 6639 7926 9054 9748 1 1247 1 1992 1 2535 3 5095 7744 9337 6 2343 4737 7188 8518 9241 9486 +9 3 765 1542 7203 3 5854 7309 8827 1 5993 4 991 4956 6376 7993 3 606 1798 8964 3 606 1091 2787 2 4023 5242 3 2451 6392 8259 5 703 3355 5892 7169 9239 +6 1 9033 3 1845 7713 8778 3 1285 1705 7890 3 4049 6908 7443 2 765 1739 2 3627 9693 +1 2 269 4701 +2 2 6273 7655 1 2654 +6 1 149 2 3533 9471 1 5758 1 1491 1 5024 1 3812 +8 3 3404 4764 6487 3 5210 7637 7771 3 1405 5501 9708 3 3572 3875 7705 3 2709 4167 5713 7 886 2870 6918 7963 8571 9125 9795 2 723 6970 2 625 5975 +4 1 7851 1 2053 2 5826 8595 1 1734 +6 2 7213 7771 1 5510 2 4652 9373 1 9928 2 6771 7774 2 3113 8769 +5 2 765 6075 1 5735 1 3541 1 2715 1 2104 diff --git a/Datasets/ten.pat b/Datasets/ten.pat new file mode 100644 index 0000000..4a2be20 --- /dev/null +++ b/Datasets/ten.pat @@ -0,0 +1,19 @@ +Number of customers in database = 10 +Average sequence length = 10 +Average transaction length = 2.5 +Number of items = 10000 +Repetition-level = 0 +Variation in repetition-level = 0.1 +Large Itemsets: + Number of patterns = 25000 + Average length of pattern = 1.25 + Correlation between consecutive patterns = 0.25 + Average confidence in a rule = 0.75 + Variation in the confidence = 0.1 +Large Sequences: + Number of patterns = 5000 + Average length of pattern = 4 + Correlation between consecutive patterns = 0.25 + Average confidence in a rule = 0.75 + Variation in the confidence = 0.1 + diff --git a/README.md b/README.md deleted file mode 100644 index 76047a7..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Sequential-Pattern-mining-using-TiW -Implementation of Sequential Pattern mining using Time interval weights diff --git a/final.py.ipynb b/final.py.ipynb new file mode 100644 index 0000000..c97cfef --- /dev/null +++ b/final.py.ipynb @@ -0,0 +1,132 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "pycharm": { + "name": "#%%", + "is_executing": false + } + }, + "outputs": [], + "source": [ + "import random\n", + "\n", + "def Randlist(start, end, num):\n", + "\tres = []\n", + "\n", + "\tfor j in range(num):\n", + "\t\tval=(random.uniform(start, end))\n", + "\t#\tval=int(val)\n", + "\t\tres.append(val)\n", + "\n", + "\tres.sort()\n", + "\treturn res" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "outputs": [ + { + "name": "stdout", + "text": [ + "\nInput :\n\n1 2 269 4701 \n\ndict_keys(['0', '1', '2', '4', '5', '6', '7', '8', '9'])\n" + ], + "output_type": "stream" + } + ], + "source": [ + "text_file= open(\"sample.data\",\"r\")\n", + "lines= text_file.readlines()\n", + "undelted_lines= lines\n", + "print(\"\\nInput :\\n\")\n", + "print(lines[3])\n", + "x = dict()\n", + "for i in range(len(lines)):\n", + "\tline1 = list(lines[i].split(\" \"))\n", + "\tline1.pop()\n", + "\tlength = int(line1[0])\n", + "\tline1.pop(0)\n", + "\tlst = []\n", + "\n", + "\tfor j in range(length):\n", + "\t\tsizeoflistoftime= int(line1[0])\n", + "\t\tline1.pop(0)\n", + "\t\tlistoftime=Randlist(0,1000,1)\n", + "\t\tfor k in range(sizeoflistoftime):\n", + "\t\t\tline1.pop(0)\n", + "\t\tlst.append(listoftime[0])\n", + "\tlst.sort()\n", + "\tx[i]=lst[:]\n", + "\n", + "x2 = dict()\n", + "\n", + "for i in range(len(undelted_lines)):\n", + "\tline1 = list(undelted_lines[i].split(\" \"))\n", + "\tline1.pop()\n", + "\tlength = int(line1[0])\n", + "\tline1.pop(0)\n", + "\tlistoftime=[]\n", + "\tfor j in range(length):\n", + "\t\tsizeoflistoftime= int(line1[0])\n", + "\t\tline1.pop(0)\n", + "\t\ttemp=\"\"\n", + "\t\tfor k in range(sizeoflistoftime):\n", + "\t\t\ttemp=temp+line1[0].zfill(4)\n", + "\t\t\tline1.pop(0)\n", + "\t\tlistoftime.append(temp)\n", + "\tx2[i]=listoftime\n", + "\n", + "database=dict()\n", + "for i in x.keys():\n", + " if len(x[i])>1:\n", + " database[str(i)]=[]\n", + " for j in range(len(x[i])):\n", + " database[str(i)].append([x2[i][j],x[i][j]])\n", + " \n", + "print(database.keys())\n", + " " + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%s\n", + "is_executing": false + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + }, + "pycharm": { + "stem_cell": { + "cell_type": "raw", + "source": [], + "metadata": { + "collapsed": false + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/plotting.py b/plotting.py new file mode 100644 index 0000000..2e6dd0f --- /dev/null +++ b/plotting.py @@ -0,0 +1,25 @@ +import matplotlib.pyplot as plt + +def is_none(l, length): + if l is None: + return [None for ii in range(length)] + else: + assert len(l), length + return l + +# no. pattern vs threshold for delta = 0.5 0.7 0.9 +def plt_graphs(xss, yss, labels=None, colors=None, markers=None, x_label="x - axis", y_label="y - axis"): + l = len(xss) + assert l, len(yss) + + labels = is_none(labels, l) + markers = is_none(markers, l) + colors = is_none(colors, l) + + for ll in range(l): + plt.plot(xss[ll], yss[ll], label=labels[ll], color=colors[ll], marker=markers[ll]) + plt.legend() + plt.show() + + +plt_graphs([[1, 2]], [[2, 2]])