Toggle navigation
Toggle navigation
This project
Loading...
Sign in
武翔
/
git
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
武翔
2016-11-04 11:07:52 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
0b5e237d0ea7f6cea9b9dd3f9b0bf86d03cf0f97
0b5e237d
1 parent
277372cf
add apriori and userfc
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1478 additions
and
0 deletions
Apriori.ipynb
user_FC.py
Apriori.ipynb
0 → 100644
View file @
0b5e237
{
"cells"
:
[
{
"cell_type"
:
"code"
,
"execution_count"
:
1
,
"metadata"
:
{
"collapsed"
:
true
},
"outputs"
:
[],
"source"
:
[
"dataSet = [[1,3,4],[2,3,5],[1,2,3,5],[2,5]]"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
2
,
"metadata"
:
{
"collapsed"
:
true
},
"outputs"
:
[],
"source"
:
[
"#对数据集中的每一项构建一个不变的集合,作为第一个候选项集\n"
,
"def createC1(dataSet):\n"
,
" c1 = []\n"
,
" for transaction in dataSet:\n"
,
" for item in transaction:\n"
,
" if not [item] in c1:\n"
,
" c1.append([item])\n"
,
" c1.sort()\n"
,
" return map(frozenset,c1)\n"
,
"\n"
,
"#找出满足最小支持度的频繁项集,Ck为候选项集列表,最开始为单个的候选项集,D表示数据集合\n"
,
"def scanD(D,Ck,minSupport):\n"
,
" ssCnt ={}\n"
,
" for tid in D:\n"
,
" for can in Ck:#遍历每一个候选项集\n"
,
" if can.issubset(tid):\n"
,
" if not ssCnt.has_key(can):\n"
,
" ssCnt[can]=1\n"
,
" else:\n"
,
" ssCnt[can]+=1\n"
,
" numItems = float(len(D))#数据集总共有多少项\n"
,
" retList = []\n"
,
" supportData = {}\n"
,
" for key in ssCnt:\n"
,
" support = ssCnt[key]/numItems\n"
,
" if support >= minSupport:\n"
,
" retList.insert(0,key)\n"
,
" supportData[key]=support\n"
,
" #supportData包含每一个候选项集的支持度\n"
,
" #retlist包含每一个满足最小支持度的项集\n"
,
" return retList,supportData\n"
,
"#生成频繁项集\n"
,
"\n"
,
"\n"
,
"#参数为频繁项集列表Lk和项集个数K,输出候选集\n"
,
"def aprioriGen(Lk, k):\n"
,
" retList = []\n"
,
" lenLk = len(Lk)#频繁项集个数\n"
,
" for i in range(lenLk):\n"
,
" for j in range(i+1,lenLk):\n"
,
" L1=list(Lk[i])[:k-2]\n"
,
" L2=list(Lk[j])[:k-2]\n"
,
" L1.sort(),L2.sort()\n"
,
" if L1==L2:\n"
,
" retList.append(Lk[i]|Lk[j])\n"
,
" return retList\n"
,
"\n"
,
"def apriori(dataSet,minSupport=0.5):\n"
,
" C1=createC1(dataSet)\n"
,
" D = map(set,dataSet)\n"
,
" L1, supportData = scanD(D,C1,minSupport)\n"
,
" L=[L1]\n"
,
" k=2\n"
,
" while (len(L[k-2])>0):\n"
,
" Ck = aprioriGen(L[k-2],k)#输出候选项集\n"
,
" Lk, supK = scanD(D,Ck,minSupport)#生成频繁项集\n"
,
" supportData.update(supK)#更每一个候选集的字典\n"
,
" L.append(Lk)\n"
,
" k += 1\n"
,
" return L, supportData\n"
,
"\n"
,
"\n"
,
"def generateRules(L,supportData,minConf=0.7):\n"
,
" bigRuleList=[]\n"
,
" for i in range(1,len(L)):\n"
,
" for freqSet in L[i]:\n"
,
" H1 = [frozenset([item]) for item in freqSet]\n"
,
" if(i>1):\n"
,
" rulesFromConseq(freqSet,H1,supportData,bigRuleList,minConf)\n"
,
" else:\n"
,
" calcConf(freqSet,H1,supportData,bigRuleList,minConf)\n"
,
" return bigRuleList\n"
,
"\n"
,
"def calcConf(freqSet,H,supportData,br1,minConf=0.7):\n"
,
" prunedH = []\n"
,
" for conseq in H:\n"
,
" conf = supportData[freqSet]/supportData[freqSet-conseq]\n"
,
" if conf >= minConf:\n"
,
" print (freqSet-conseq,'-->',conseq,'conf:',conf)\n"
,
" br1.append((freqSet-conseq,conseq,conf))\n"
,
" prunedH.append(conseq)\n"
,
" return prunedH\n"
,
"\n"
,
"def rulesFromConseq(freqSet,H,supportData,br1,minConf=0.7):\n"
,
" m=len(H[0])\n"
,
" if (len(freqSet)>(m+1)):\n"
,
" Hmp1=aprioriGen(H,m+1)\n"
,
" Hmp1=calcConf(freqSet,Hmp1,supportData,br1,minConf)\n"
,
" if (len(Hmp1)>1):\n"
,
" rulesFromConseq(freqSet,Hmp1,supportData,br1,minConf)"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
4
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[],
"source"
:
[
"#和上面函数功能一致,用列表表达式标书\n"
,
"# C1 = []\n"
,
"# [[C1.append([item]) for item in transaction if [item] not in C1]for transaction in DataSet]\n"
,
"# C1.sort()\n"
,
"# map(frozenset,C1)"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
5
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[],
"source"
:
[
"# C1=createC1(DataSet)\n"
,
"# D=map(set,DataSet)\n"
,
"# L1,suppData0=scanD(D,C1,0.5)\n"
,
"# L1"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
6
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[],
"source"
:
[
"# #it's a test!\n"
,
"# for i in range(4):\n"
,
"# for j in range(i+1,4):\n"
,
"# print (i,j)\n"
,
"# #把0、1、2、3共四个数两两进行组合"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
7
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[
{
"data"
:
{
"text/plain"
:
[
"[[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]]"
]
},
"execution_count"
:
7
,
"metadata"
:
{},
"output_type"
:
"execute_result"
}
],
"source"
:
[
"dataSet"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
26
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[
{
"data"
:
{
"text/plain"
:
[
"[[frozenset({1}), frozenset({3}), frozenset({2}), frozenset({5})],\n"
,
" [frozenset({1, 3}), frozenset({2, 5}), frozenset({2, 3}), frozenset({3, 5})],\n"
,
" [frozenset({2, 3, 5})],\n"
,
" []]"
]
},
"execution_count"
:
26
,
"metadata"
:
{},
"output_type"
:
"execute_result"
}
],
"source"
:
[
"L,suppData=apriori(dataSet,minSupport=0.5)\n"
,
"# rules=generateRules(L,suppData,minConf=0.7)\n"
,
"L"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
27
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[
{
"data"
:
{
"text/plain"
:
[
"{frozenset({5}): 0.75,\n"
,
" frozenset({3}): 0.75,\n"
,
" frozenset({2, 3, 5}): 0.5,\n"
,
" frozenset({1, 2}): 0.25,\n"
,
" frozenset({1, 5}): 0.25,\n"
,
" frozenset({3, 5}): 0.5,\n"
,
" frozenset({4}): 0.25,\n"
,
" frozenset({2, 3}): 0.5,\n"
,
" frozenset({2, 5}): 0.75,\n"
,
" frozenset({1}): 0.5,\n"
,
" frozenset({1, 3}): 0.5,\n"
,
" frozenset({2}): 0.75}"
]
},
"execution_count"
:
27
,
"metadata"
:
{},
"output_type"
:
"execute_result"
}
],
"source"
:
[
"suppData"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
null
,
"metadata"
:
{
"collapsed"
:
true
},
"outputs"
:
[],
"source"
:
[]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
3
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[],
"source"
:
[
"import pandas as pd\n"
,
"import random\n"
,
"from pandas import DataFrame\n"
,
"import numpy as np\n"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
5
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[],
"source"
:
[
"df=pd.read_csv('tbl_books.csv')"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
12
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[],
"source"
:
[
"# random.randint(0,5001)"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
10
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[
{
"data"
:
{
"text/plain"
:
[
"0 新刊王氏脉经\n"
,
"1 处境特殊儿童心理\n"
,
"2 幼儿心理学\n"
,
"3 遇见德国\n"
,
"4 多民族国家的文学与文化\n"
,
"Name: title, dtype: object"
]
},
"execution_count"
:
10
,
"metadata"
:
{},
"output_type"
:
"execute_result"
}
],
"source"
:
[
"books=df.title\n"
,
"books[:5]"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
11
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[],
"source"
:
[
"data_value = []\n"
,
"data_title=[]\n"
,
"for index in range(500):\n"
,
" temp_value = []\n"
,
" temp_title = []\n"
,
" for random_value in range(random.randint(3,15)):\n"
,
" value_random=random.randint(0,20)\n"
,
" temp_value.append(value_random)\n"
,
" temp_title.append(books[value_random])\n"
,
" data_value.append(temp_value)\n"
,
" data_title.append(temp_title)"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
15
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[
{
"name"
:
"stdout"
,
"output_type"
:
"stream"
,
"text"
:
[
"<class 'pandas.core.frame.DataFrame'>\n"
,
"RangeIndex: 500 entries, 0 to 499\n"
,
"Data columns (total 15 columns):\n"
,
"0 500 non-null object\n"
,
"1 500 non-null object\n"
,
"2 500 non-null object\n"
,
"3 457 non-null object\n"
,
"4 421 non-null object\n"
,
"5 375 non-null object\n"
,
"6 340 non-null object\n"
,
"7 302 non-null object\n"
,
"8 261 non-null object\n"
,
"9 232 non-null object\n"
,
"10 194 non-null object\n"
,
"11 167 non-null object\n"
,
"12 123 non-null object\n"
,
"13 78 non-null object\n"
,
"14 40 non-null object\n"
,
"dtypes: object(15)\n"
,
"memory usage: 58.7+ KB\n"
]
},
{
"data"
:
{
"text/plain"
:
[
"(500, 15)"
]
},
"execution_count"
:
15
,
"metadata"
:
{},
"output_type"
:
"execute_result"
}
],
"source"
:
[
"df=DataFrame(data_title)#模拟展示用户收藏信息 模拟800个用户2000本书\n"
,
"df.info()\n"
,
"df.shape"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
46
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[
{
"data"
:
{
"text/plain"
:
[
"[[16, 4, 12, 18, 4, 5, 2, 14],\n"
,
" [0, 17, 7, 6, 20],\n"
,
" [20, 13, 6, 10, 19],\n"
,
" [12, 11, 18, 12],\n"
,
" [0, 17, 17, 8, 4, 17, 6],\n"
,
" [5, 4, 3, 0, 17, 18, 18, 8, 9],\n"
,
" [2, 8, 5, 14, 17, 4, 3, 1, 1],\n"
,
" [7, 11, 16, 11, 10],\n"
,
" [15, 10, 14, 15, 4, 9, 2, 14],\n"
,
" [1, 6, 18, 9],\n"
,
" [3, 10, 6, 15, 10, 17, 4, 20, 4],\n"
,
" [11, 14, 20, 7],\n"
,
" [12, 6, 14, 4, 9, 14, 20, 0],\n"
,
" [2, 13, 1, 5, 13, 6],\n"
,
" [16, 17, 0, 0],\n"
,
" [4, 0, 19, 20, 14, 12, 0, 18, 9, 18, 18, 11, 4, 20, 1],\n"
,
" [1, 10, 8, 18, 17, 8, 10],\n"
,
" [8, 14, 0, 14, 7, 3, 13, 19, 9, 10, 14, 14, 13, 9],\n"
,
" [7, 2, 10, 16, 4, 13, 15, 7, 9, 11, 2, 18, 9, 1, 13],\n"
,
" [11, 13, 14, 20, 2, 7, 19, 5, 16, 9, 6, 2, 14, 10],\n"
,
" [15, 11, 14, 14, 0, 4, 14, 17, 20, 19, 13, 13, 15],\n"
,
" [7, 8, 8, 5],\n"
,
" [4, 14, 19, 19, 11, 5, 14, 9, 17, 13, 7, 15],\n"
,
" [19, 16, 1, 15, 12, 5, 7, 18],\n"
,
" [11, 20, 12, 10],\n"
,
" [7, 10, 13, 3, 15, 14],\n"
,
" [3, 0, 19, 8, 4, 1, 6],\n"
,
" [20, 8, 20, 5, 12, 6],\n"
,
" [19, 19, 11, 18, 17, 8, 6, 3, 9, 2, 18, 15, 11],\n"
,
" [1, 2, 17, 14, 3, 14, 14, 16, 8, 11, 7, 11],\n"
,
" [8, 16, 10, 2, 8, 13, 4, 1, 4, 6, 2, 1, 20, 6, 19],\n"
,
" [9, 2, 4, 6, 0, 0],\n"
,
" [9, 1, 15, 8, 19, 12, 13, 13, 2, 4, 3, 17],\n"
,
" [13, 9, 14, 14, 11, 10],\n"
,
" [12, 9, 0, 5, 19, 10, 6, 20, 7, 5, 3, 5, 6],\n"
,
" [10, 12, 13, 19, 11, 16, 20, 9, 15, 6, 19, 2, 0, 16],\n"
,
" [5, 0, 3, 15, 14, 4, 17],\n"
,
" [17, 0, 14, 17, 17],\n"
,
" [1, 7, 11, 7, 10, 10, 20],\n"
,
" [11, 7, 6, 0, 3, 2, 5, 6, 4],\n"
,
" [4, 1, 18, 20, 9, 16, 7, 4, 6],\n"
,
" [7, 6, 14],\n"
,
" [8, 3, 3, 14, 16],\n"
,
" [17, 11, 2, 16, 10],\n"
,
" [3, 0, 15, 5, 5, 1, 11, 15, 3, 17, 20, 16, 1],\n"
,
" [13, 8, 12, 17],\n"
,
" [20, 9, 6, 3, 2, 14, 9, 1, 17, 6],\n"
,
" [19, 5, 1, 16, 19, 10, 5, 10],\n"
,
" [12, 8, 16, 2, 18, 15, 0, 5, 19],\n"
,
" [14, 7, 11, 18, 7, 3, 18, 1, 18, 19, 9, 12, 9],\n"
,
" [13, 6, 2],\n"
,
" [6, 1, 0, 9],\n"
,
" [2, 17, 20, 10, 1, 11, 16, 18, 3, 8, 5],\n"
,
" [19, 20, 3, 6, 19, 8, 4, 8, 5, 0, 3, 20, 3, 1],\n"
,
" [12, 10, 6],\n"
,
" [7, 0, 16, 14, 0, 7],\n"
,
" [20, 6, 3, 7, 4, 7, 9, 9, 18, 19, 14, 3, 20, 19, 17],\n"
,
" [10, 4, 0, 13, 10, 6, 0, 6, 0, 11, 20, 6],\n"
,
" [10, 4, 14, 5, 1],\n"
,
" [1, 11, 1, 10, 12, 13, 6, 17, 6, 9, 15],\n"
,
" [14, 13, 7, 15, 0, 3, 2, 3, 15],\n"
,
" [1, 10, 1, 17],\n"
,
" [2, 15, 0, 11, 12, 4, 1, 12, 6, 9, 19, 3, 20, 5],\n"
,
" [10, 2, 20, 10],\n"
,
" [7, 17, 5, 14, 15, 4, 13, 1, 17, 5, 2, 4, 4, 20],\n"
,
" [3, 6, 12, 7],\n"
,
" [10, 7, 10, 11, 16, 13, 1, 1, 9, 14, 16],\n"
,
" [4, 19, 15, 17],\n"
,
" [20, 9, 18, 11, 20, 14],\n"
,
" [2, 2, 0, 13, 7, 9, 4, 16, 3, 5, 9, 17],\n"
,
" [0, 9, 19, 12, 12, 3, 18, 6, 8, 8, 4],\n"
,
" [11, 1, 2, 18, 6, 14, 4, 10, 17, 20, 1, 16],\n"
,
" [2, 13, 17, 12, 7, 16, 6, 1, 4, 11, 10],\n"
,
" [0, 15, 19],\n"
,
" [15, 2, 18, 2, 0, 16, 2, 13, 15, 9, 14, 19, 20, 10],\n"
,
" [10, 19, 5, 12, 18, 3, 17, 7],\n"
,
" [18, 5, 15, 16, 20, 9, 18, 13, 0],\n"
,
" [2, 11, 4, 15, 15],\n"
,
" [17, 5, 12, 9, 15, 7, 5, 5, 11],\n"
,
" [3, 15, 14, 15, 0],\n"
,
" [3, 18, 3, 17, 17, 3, 11, 1, 4, 7, 1, 19],\n"
,
" [17, 13, 19, 7, 10, 17, 7, 19, 11, 13, 12],\n"
,
" [17, 2, 11, 7, 0, 12, 12, 20, 9, 20, 11, 7, 4, 1],\n"
,
" [5, 4, 19, 2],\n"
,
" [4, 10, 1, 0],\n"
,
" [0, 17, 17, 17, 4],\n"
,
" [9, 7, 10],\n"
,
" [7, 9, 20, 5, 3, 0, 2, 16, 6, 3, 14, 2],\n"
,
" [20, 18, 9, 12, 4, 17, 2, 4, 3],\n"
,
" [15, 0, 5, 3, 2, 5, 20, 20, 3, 9, 3, 12, 5, 13, 9],\n"
,
" [7, 16, 19, 1],\n"
,
" [7, 10, 12],\n"
,
" [7, 12, 9, 14, 6, 13, 16],\n"
,
" [11, 4, 16, 1, 3, 16, 6, 3, 4, 20, 15, 17, 10, 7],\n"
,
" [14, 8, 13],\n"
,
" [6, 14, 17, 0, 3, 13, 19, 2, 10],\n"
,
" [13, 8, 15, 17, 13, 10, 15, 6],\n"
,
" [6, 14, 8, 14, 11, 4, 6, 18, 10],\n"
,
" [18, 15, 4, 13, 6, 18],\n"
,
" [15, 5, 7, 20, 20, 7, 6, 6, 12, 16, 20, 8, 13],\n"
,
" [1, 11, 14],\n"
,
" [14, 6, 6],\n"
,
" [11, 5, 10, 16, 11, 11, 1, 14, 8, 2, 16, 14],\n"
,
" [3, 5, 6, 12, 17, 3, 15, 0, 19, 5, 6, 18, 10, 20, 16],\n"
,
" [16, 6, 15, 16, 14],\n"
,
" [1, 5, 5, 18, 4, 2, 4, 20, 18],\n"
,
" [6, 13, 0, 14, 3, 14, 13, 16, 2, 13],\n"
,
" [12, 6, 20, 11, 9, 12, 9, 5],\n"
,
" [15, 4, 5, 15, 13, 16, 3, 7, 12],\n"
,
" [9, 13, 0, 7, 17, 16, 9, 13],\n"
,
" [15, 20, 7, 12, 20, 7, 18, 4, 11, 15],\n"
,
" [17, 10, 6, 9, 4, 5],\n"
,
" [18, 9, 13, 13, 16],\n"
,
" [8, 2, 16, 5],\n"
,
" [9, 18, 17, 19, 13, 7],\n"
,
" [15, 3, 3, 8, 0, 7, 7, 3],\n"
,
" [15, 9, 18, 19, 7, 1, 7, 2, 6, 14],\n"
,
" [19, 1, 2, 14, 11, 8],\n"
,
" [9, 13, 14, 9, 1, 20, 7, 15, 4, 15, 6],\n"
,
" [13, 20, 8, 4, 12, 8, 6, 13, 7],\n"
,
" [20, 13, 8, 18, 9, 17],\n"
,
" [0, 10, 5, 5, 2, 10, 12, 5, 12, 15, 11, 10, 14],\n"
,
" [20, 19, 9, 16, 19, 16, 11, 3],\n"
,
" [9, 19, 4, 8, 20, 4, 13],\n"
,
" [15, 1, 6, 5, 9, 1],\n"
,
" [20, 15, 9, 10, 0, 1],\n"
,
" [0, 14, 10, 2, 7, 2, 2, 14, 13, 20, 12, 15],\n"
,
" [6, 20, 7, 5, 1, 14, 17, 17, 14, 18],\n"
,
" [6, 16, 10, 17, 8, 10, 9, 1, 18],\n"
,
" [15, 15, 20, 12, 8, 0],\n"
,
" [7, 9, 19, 0, 7, 19, 13, 8, 16, 15, 20],\n"
,
" [10, 15, 12, 6, 7, 19, 14, 19, 9, 20, 14, 6],\n"
,
" [3, 3, 5, 12, 14, 17, 20, 11, 6],\n"
,
" [12, 18, 11, 9, 4, 17, 4],\n"
,
" [7, 8, 19, 11, 13, 4, 4, 6, 7, 14, 12],\n"
,
" [8, 2, 5, 18, 18],\n"
,
" [20, 6, 4, 2, 15, 1, 15, 16],\n"
,
" [0, 12, 13],\n"
,
" [5, 6, 16, 19, 11, 11, 20, 10, 19, 14, 12, 7],\n"
,
" [3, 16, 18, 10, 2],\n"
,
" [11, 11, 16],\n"
,
" [20, 9, 18, 6, 10, 8, 6, 18, 16, 6],\n"
,
" [10, 0, 0, 13, 2, 16, 11, 2, 5, 17, 0],\n"
,
" [14, 3, 10, 7, 2, 16],\n"
,
" [7, 3, 11, 3, 11],\n"
,
" [11, 0, 17, 16],\n"
,
" [7, 8, 10, 16, 15, 14, 8, 20, 4, 3, 17, 7],\n"
,
" [14, 11, 17, 13, 11, 7, 19, 11, 17, 2, 13, 19, 3],\n"
,
" [5, 14, 14, 13, 6, 17, 4, 14, 11],\n"
,
" [15, 14, 20, 19, 3, 8, 16, 0, 4, 12, 6, 4, 1, 20, 2],\n"
,
" [8, 11, 20],\n"
,
" [16, 16, 5, 2, 8, 13, 12, 6, 8, 9, 5, 8, 5, 19],\n"
,
" [0, 5, 17, 15, 16, 11, 3, 4, 0, 3, 5],\n"
,
" [1, 4, 0, 1, 1, 15, 5, 8, 12, 10, 10, 1, 10, 10, 10],\n"
,
" [15, 14, 4, 7, 13, 19, 19, 15, 12, 14, 7, 8, 11, 19, 10],\n"
,
" [18, 12, 6, 11, 1, 2, 7],\n"
,
" [2, 12, 3, 20, 7, 0, 14, 15, 1, 4, 19],\n"
,
" [9, 0, 4, 19, 9, 20, 14, 1, 11],\n"
,
" [17, 8, 0, 1],\n"
,
" [13, 19, 1, 0, 1, 4, 19, 10],\n"
,
" [19, 9, 2, 18],\n"
,
" [6, 0, 4, 5, 7, 13, 3, 14, 17, 12, 7, 8, 19, 7],\n"
,
" [12, 10, 17, 6, 14, 19, 4, 19, 14, 16, 3],\n"
,
" [12, 15, 2, 0, 10, 16, 15, 10, 16, 2],\n"
,
" [20, 8, 13, 19, 17, 16, 0],\n"
,
" [7, 15, 10, 19, 14, 1, 18, 16, 5, 18, 17, 1],\n"
,
" [7, 0, 12, 4, 15, 19, 9, 17, 8, 9, 20, 16, 11, 13],\n"
,
" [3, 18, 13, 6, 10, 16, 19, 15, 19, 15, 15, 0, 5, 17],\n"
,
" [7, 5, 20, 2, 17, 16, 6, 2, 18],\n"
,
" [12, 0, 4],\n"
,
" [7, 14, 15, 8, 10, 2, 20, 7, 13, 17, 11, 2],\n"
,
" [14, 3, 10, 2, 15, 20, 4, 14, 18, 17, 1],\n"
,
" [11, 15, 2, 3, 20, 0, 18, 10, 20, 16, 14, 10, 15, 6, 1],\n"
,
" [6, 12, 11],\n"
,
" [18, 15, 3, 14, 19, 6],\n"
,
" [16, 4, 2, 18, 9, 19, 18, 2, 8, 11, 14],\n"
,
" [7, 12, 5, 5, 18, 4],\n"
,
" [11, 11, 11],\n"
,
" [17, 2, 9, 12],\n"
,
" [18, 3, 1, 8, 14, 13, 0],\n"
,
" [19, 11, 2, 8, 5, 1, 20, 18, 1, 2, 8, 2],\n"
,
" [19, 17, 12, 20, 10],\n"
,
" [20, 20, 3, 11],\n"
,
" [16, 14, 1, 3, 20, 0, 19, 14, 16, 15, 17, 6],\n"
,
" [9, 8, 18, 13, 12, 2, 9, 12, 7, 8, 19],\n"
,
" [1, 3, 8, 9, 2, 12, 5],\n"
,
" [19, 4, 7, 10, 18, 13, 10, 13],\n"
,
" [8, 1, 6, 19, 7, 8],\n"
,
" [10, 12, 9, 7, 2, 5, 4, 1, 20, 14, 0, 13],\n"
,
" [1, 2, 19, 7, 16, 19, 0, 15, 20, 0, 1, 6],\n"
,
" [1, 14, 15, 20, 3, 7],\n"
,
" [5, 3, 1, 8],\n"
,
" [8, 7, 9, 8, 6, 19, 7, 8, 10, 13, 17],\n"
,
" [0, 12, 6, 2, 6, 4, 20, 15, 10, 2, 10],\n"
,
" [16, 1, 16, 17, 15, 14, 16, 14, 4, 14, 0, 18, 2, 6, 5],\n"
,
" [14, 13, 5],\n"
,
" [6, 1, 20, 14, 11, 3, 12, 14, 3, 11, 11, 0],\n"
,
" [10, 14, 13, 20, 13, 13, 17],\n"
,
" [20, 0, 0, 14, 5, 15, 18, 10, 5, 16, 14, 12],\n"
,
" [5, 2, 1, 15, 6, 13, 15, 8, 7, 6, 10],\n"
,
" [2, 15, 8, 1, 4, 10, 1, 7],\n"
,
" [9, 7, 13, 12, 17, 20, 5, 15, 20],\n"
,
" [4, 3, 18, 6, 18, 4],\n"
,
" [3, 4, 10, 13, 1, 5, 20],\n"
,
" [14, 14, 1, 14, 9, 15, 2, 14, 2, 19, 11, 10, 4],\n"
,
" [9, 13, 2, 9, 3, 20, 10, 14],\n"
,
" [1, 20, 3],\n"
,
" [1, 17, 12, 19, 16, 14, 18, 5, 1],\n"
,
" [2, 14, 13, 9, 2, 10],\n"
,
" [8, 5, 4, 10, 12, 14, 15],\n"
,
" [20, 8, 16, 6, 20, 16, 4, 4, 7, 6, 19, 7, 9, 1],\n"
,
" [4, 8, 0, 14, 17],\n"
,
" [19, 7, 15, 16, 18, 19, 12, 4, 15, 1, 10, 16],\n"
,
" [20, 3, 2, 17, 8, 5, 20, 16, 10, 9, 10, 1],\n"
,
" [2, 12, 14, 13, 18, 7, 9, 13],\n"
,
" [4, 11, 12, 2, 14, 20, 5, 6, 0, 16, 3, 8],\n"
,
" [18, 12, 20, 14, 19, 18, 3, 6],\n"
,
" [12, 15, 2, 4, 20, 16, 16, 9, 19, 15, 3, 9, 9, 1, 9],\n"
,
" [18, 1, 7, 7, 18, 14, 2, 2, 15, 3, 13],\n"
,
" [5, 7, 2, 17, 13, 1, 9, 3, 15, 17, 18, 4, 20, 5],\n"
,
" [12, 4, 1, 17, 17, 0, 1],\n"
,
" [17, 16, 10, 7, 15, 8, 1, 6, 5, 17, 10, 15, 13, 15],\n"
,
" [9, 13, 12],\n"
,
" [15, 7, 6, 2, 1, 2, 10, 17, 8, 4, 14, 15, 15],\n"
,
" [16, 13, 7, 0, 12, 16, 19, 5],\n"
,
" [20, 10, 10],\n"
,
" [20, 3, 3, 16, 8, 17, 8, 16, 16, 8],\n"
,
" [3, 9, 1, 5, 6],\n"
,
" [15, 15, 1, 11, 15, 17, 1, 9, 7, 16, 20, 10],\n"
,
" [19, 3, 4, 7, 2],\n"
,
" [3, 7, 14, 8, 13, 3, 19, 9, 17, 2, 17, 0, 11, 19],\n"
,
" [3, 7, 10, 1, 8, 19, 9, 15, 17, 5, 20, 0],\n"
,
" [0, 2, 16, 2, 7, 0, 15, 17, 14, 15, 8, 10, 19, 19],\n"
,
" [3, 17, 6, 2, 4, 7, 5, 5, 8, 11, 10, 3, 1],\n"
,
" [1, 15, 4, 16, 17, 4, 7],\n"
,
" [10, 20, 16, 7, 2, 12],\n"
,
" [0, 13, 7, 1, 17, 12, 2, 16, 15, 3, 10, 17],\n"
,
" [1, 20, 1, 20, 10, 8],\n"
,
" [12, 5, 7, 5, 11, 13, 7, 8],\n"
,
" [18, 15, 18, 13, 17, 4],\n"
,
" [12, 14, 0, 15, 6, 1, 2],\n"
,
" [15, 17, 18, 0, 18, 4, 0, 11, 18],\n"
,
" [14, 5, 11, 18, 10, 8, 5, 3, 0, 15, 8, 1, 17],\n"
,
" [8, 4, 19, 6, 12, 8, 7, 4, 7, 1, 6, 3],\n"
,
" [17, 5, 14, 7, 16, 1, 5, 19, 13, 16, 17, 0],\n"
,
" [7, 8, 2, 5, 9, 10, 15, 10, 6, 5, 18, 6, 19, 5, 11],\n"
,
" [8, 1, 10, 7, 3, 19, 11, 3],\n"
,
" [1, 16, 13, 20, 16, 8, 8, 5, 11, 6, 9],\n"
,
" [4, 15, 11, 10, 7, 14, 18, 4, 14, 12, 18, 7],\n"
,
" [0, 2, 19, 13, 6, 2, 13, 12, 4, 12, 15],\n"
,
" [5, 15, 15, 1, 10, 16, 7, 0, 7, 10, 3, 9],\n"
,
" [16, 12, 17, 16, 12, 7, 2, 20, 1],\n"
,
" [0, 11, 14, 7, 5, 9, 8, 10],\n"
,
" [1, 12, 11, 14, 19, 6, 15, 19, 1],\n"
,
" [10, 17, 1, 0, 18, 15, 16, 8],\n"
,
" [18, 9, 17, 13, 9, 8, 6, 10, 3, 10, 18, 10, 15],\n"
,
" [16, 0, 14, 3, 15, 5],\n"
,
" [11, 3, 0, 5, 6, 2, 18, 19, 3, 6],\n"
,
" [5, 11, 20, 1],\n"
,
" [13, 11, 18, 2, 0, 14, 15, 15, 16],\n"
,
" [15, 8, 6, 17, 3, 11, 9],\n"
,
" [2, 9, 1, 8, 16, 2, 5, 7],\n"
,
" [1, 11, 11, 5, 4, 11, 2, 9, 18, 4, 20, 4],\n"
,
" [0, 13, 16, 15, 19, 4, 7, 8, 2, 11],\n"
,
" [1, 6, 13, 6, 2],\n"
,
" [8, 13, 7, 18, 12, 0, 18, 5, 15, 2, 9, 9, 0],\n"
,
" [12, 12, 1, 0, 12, 7, 8, 4, 16, 17, 10, 13, 13],\n"
,
" [4, 12, 6, 12, 0, 5],\n"
,
" [4, 15, 12, 9, 20],\n"
,
" [17, 5, 6, 14, 12, 2, 0, 5, 4, 3, 19, 20, 0, 3],\n"
,
" [20, 18, 1, 9, 19, 14, 8],\n"
,
" [1, 4, 11, 2, 6, 20, 1, 0, 7, 16, 16, 19, 5, 20],\n"
,
" [14, 1, 1, 3, 16, 8, 5, 19],\n"
,
" [16, 4, 19, 9, 17, 13, 20, 7],\n"
,
" [0, 19, 6, 19, 4, 10, 11, 1, 13, 1],\n"
,
" [9, 3, 19, 11],\n"
,
" [16, 13, 12, 2, 15, 19],\n"
,
" [9, 15, 7, 20, 3, 15, 4, 10, 10, 19, 7, 20, 11],\n"
,
" [6, 12, 13, 2, 11, 13, 12, 6, 6, 12, 14],\n"
,
" [17, 10, 15, 17, 18, 14],\n"
,
" [5, 12, 2, 1, 19, 9, 17, 5, 0],\n"
,
" [15, 13, 1, 8, 15],\n"
,
" [7, 0, 7, 19, 17],\n"
,
" [7, 10, 13, 1, 2, 7, 13, 16, 10, 4, 18],\n"
,
" [20, 11, 11],\n"
,
" [4, 16, 0, 0, 7, 10, 17, 1, 17, 7],\n"
,
" [10, 4, 8, 7, 13, 9, 12, 2, 20, 16, 0],\n"
,
" [2, 3, 6, 3, 19, 20],\n"
,
" [12, 7, 13, 15, 18, 10, 14, 2],\n"
,
" [8, 0, 3],\n"
,
" [2, 17, 18, 13, 7, 17, 4, 0, 8, 18, 16],\n"
,
" [15, 4, 16, 3, 5, 14, 4, 15, 0, 8, 7, 18, 4, 0],\n"
,
" [9, 14, 0, 18, 0, 14, 5, 0, 4, 14, 3, 0],\n"
,
" [5, 12, 10, 12, 10, 19, 11, 2, 8, 1, 8, 4, 16, 0],\n"
,
" [11, 0, 10, 18, 10, 19, 19, 1, 0, 19, 8, 1],\n"
,
" [13, 5, 18, 3],\n"
,
" [1, 6, 10],\n"
,
" [1, 17, 18, 8, 3, 15, 4, 12, 8, 16, 1, 8, 16, 18],\n"
,
" [1, 2, 12, 11, 10, 7, 18, 2, 7, 11, 0, 7, 16, 2],\n"
,
" [15, 19, 15, 3, 11],\n"
,
" [19, 17, 0],\n"
,
" [0, 14, 9, 18, 1, 8, 12, 20, 18, 17, 6, 8],\n"
,
" [2, 14, 17, 19, 9, 5, 7, 10, 14, 8, 14, 18, 4],\n"
,
" [14, 7, 4, 9, 14, 5, 19, 6, 4],\n"
,
" [19, 3, 20, 18, 1, 3, 20],\n"
,
" [13, 18, 0, 18, 3, 9, 5, 0, 18],\n"
,
" [7, 13, 15, 20, 12, 6, 10, 0, 9, 15, 10],\n"
,
" [16, 0, 6],\n"
,
" [3, 15, 13, 19, 14, 15],\n"
,
" [0, 0, 15, 17, 3, 1, 9, 15, 20, 14, 16, 17, 2, 10],\n"
,
" [1, 14, 9, 4, 11, 2, 13, 2, 4],\n"
,
" [0, 7, 14, 3, 3, 20, 7, 17, 15, 5, 2],\n"
,
" [3, 17, 3, 0, 7, 4, 2, 0, 17, 3, 10, 4, 3, 14],\n"
,
" [7, 14, 15, 16, 7, 6],\n"
,
" [7, 10, 19],\n"
,
" [10, 12, 3, 4],\n"
,
" [20, 12, 20, 5, 4, 2, 14, 8, 14, 17, 11, 20, 2],\n"
,
" [18, 15, 14, 6, 8, 6, 15, 3, 9, 16, 4, 19, 8, 0],\n"
,
" [2, 4, 20, 14, 6],\n"
,
" [5, 4, 18, 17, 19, 16, 10, 12, 13, 2, 20, 8, 17, 4, 1],\n"
,
" [7, 7, 15, 10, 9, 14, 15, 12, 5, 5, 13, 5, 10, 16, 16],\n"
,
" [20, 19, 8],\n"
,
" [8, 13, 14, 8, 4, 4, 1, 20, 4, 19],\n"
,
" [3, 10, 2],\n"
,
" [20, 17, 12, 18, 2, 19, 6, 4, 17, 8, 16, 20, 12, 9],\n"
,
" [16, 20, 10, 7, 15, 20, 20, 12, 17, 14, 3],\n"
,
" [15, 4, 10, 2, 20, 14, 20, 11, 17],\n"
,
" [1, 10, 3, 5, 20],\n"
,
" [3, 13, 5],\n"
,
" [7, 18, 16, 16, 11, 3, 9, 7, 2],\n"
,
" [1, 8, 18, 17, 0, 17, 1, 17, 1, 6, 16],\n"
,
" [18, 12, 16, 3, 1, 2, 1, 11, 0, 2],\n"
,
" [5, 18, 16, 16, 7, 16, 11, 16, 16, 1, 2, 7, 9, 14],\n"
,
" [13, 11, 4],\n"
,
" [2, 20, 4, 19, 15, 5, 1, 16, 20],\n"
,
" [1, 16, 10, 8, 6, 20, 12, 20, 20, 7, 14, 10, 16, 3, 6],\n"
,
" [20, 12, 19],\n"
,
" [11, 15, 5, 15, 1, 14, 3, 16],\n"
,
" [14, 17, 14, 19, 2, 1, 7, 10, 16, 12],\n"
,
" [7, 2, 8, 6, 6],\n"
,
" [10, 16, 1, 19, 2, 14, 17, 9],\n"
,
" [3, 16, 4, 9, 15, 7, 9, 19],\n"
,
" [15, 6, 12, 16, 4, 17],\n"
,
" [17, 16, 18, 3, 14, 5, 4, 10, 6, 12, 10],\n"
,
" [17, 2, 7, 5],\n"
,
" [10, 10, 20, 12, 16, 6, 6],\n"
,
" [20, 0, 7, 16, 11, 9, 1, 8, 16, 6, 19],\n"
,
" [8, 10, 1, 16, 17, 19, 16, 17, 2, 16, 8, 4, 18, 4, 4],\n"
,
" [17, 0, 0, 2, 17, 17, 11, 18, 19, 6, 10, 3, 15, 9],\n"
,
" [18, 13, 10, 5, 6, 17, 4, 19, 18, 1, 14, 9, 14, 4],\n"
,
" [20, 10, 12, 3],\n"
,
" [7, 9, 15, 6, 15, 15, 9, 19, 11],\n"
,
" [10, 4, 18, 16, 14, 2],\n"
,
" [0, 16, 12, 3, 17, 4, 17, 5, 5, 8, 12, 18, 8, 11],\n"
,
" [18, 13, 13, 10, 2],\n"
,
" [17, 17, 16, 5, 7, 2, 16, 9],\n"
,
" [14, 2, 20, 1, 14, 5, 7, 4, 16, 13, 5, 0, 12, 2, 9],\n"
,
" [5, 5, 0, 1, 1, 11, 5, 19, 15, 2, 12, 7, 7, 7],\n"
,
" [10, 20, 10, 19, 8],\n"
,
" [5, 19, 8, 3, 17, 16, 10, 16, 20, 4, 2, 15, 9],\n"
,
" [1, 8, 15, 8, 19, 1, 14, 15, 3, 7, 13, 20, 0, 10],\n"
,
" [10, 4, 7, 20, 16, 12, 0],\n"
,
" [11, 3, 5, 15, 2, 14, 8, 2],\n"
,
" [1, 17, 6, 13, 19, 3],\n"
,
" [20, 0, 3, 7, 7],\n"
,
" [17, 1, 20, 7, 8, 18, 4, 10, 19, 1, 14, 6],\n"
,
" [5, 17, 20, 10, 1, 13, 19, 2, 3, 3],\n"
,
" [7, 8, 4, 20, 5, 13, 20, 5, 4, 19, 3, 2, 13, 19, 1],\n"
,
" [16, 20, 16],\n"
,
" [5, 17, 6, 2, 16, 1, 8],\n"
,
" [8, 5, 14, 0, 18, 15, 20, 20, 3, 15],\n"
,
" [12, 7, 2, 18, 4, 16, 20, 2, 4, 16],\n"
,
" [4, 7, 12, 13, 13],\n"
,
" [0, 1, 16, 7, 12, 15, 1, 12],\n"
,
" [4, 4, 9, 12],\n"
,
" [4, 14, 5],\n"
,
" [3, 9, 8, 14, 14, 20, 15, 8, 8, 11, 20, 12, 20],\n"
,
" [0, 18, 11, 17, 13, 18, 6, 18, 11, 10, 19, 2, 11, 7, 8],\n"
,
" [4, 11, 10, 12],\n"
,
" [3, 12, 8, 2, 6, 15],\n"
,
" [0, 6, 9, 14],\n"
,
" [15, 17, 16],\n"
,
" [13, 19, 2],\n"
,
" [0, 1, 13],\n"
,
" [13, 18, 16, 14, 16, 2, 5, 5],\n"
,
" [10, 1, 6, 15, 17, 19, 13, 8, 20, 1, 17, 16],\n"
,
" [13, 10, 4],\n"
,
" [0, 2, 4],\n"
,
" [3, 3, 5, 9, 14, 17, 12, 11, 2, 6, 5, 1, 15, 15],\n"
,
" [3, 4, 11, 1, 17, 16],\n"
,
" [11, 2, 18],\n"
,
" [3, 10, 19, 17, 12, 12, 10, 2, 9, 16, 9],\n"
,
" [8, 11, 15, 6, 19, 11, 19],\n"
,
" [4, 9, 7, 0, 6, 7, 12, 4, 9, 20, 12],\n"
,
" [6, 13, 16, 6, 18, 6, 11, 15, 17],\n"
,
" [4, 11, 16],\n"
,
" [7, 7, 15, 2],\n"
,
" [0, 11, 8, 5, 17, 13, 2, 9, 10, 3, 17, 17],\n"
,
" [10, 3, 6, 11, 17, 0, 18, 20, 0, 7, 2, 7, 5],\n"
,
" [16, 3, 1, 10, 11],\n"
,
" [16, 15, 5, 0, 16, 1, 6, 10, 6, 1, 7, 16, 13, 0],\n"
,
" [10, 17, 11, 18, 19, 12, 12],\n"
,
" [2, 7, 1, 11, 8, 3, 0, 16, 14, 16, 3, 11, 17],\n"
,
" [2, 11, 14, 16, 3, 0, 0, 17, 13, 20, 6, 12],\n"
,
" [15, 16, 20, 16, 2, 2, 3, 7, 1, 5],\n"
,
" [0, 15, 14, 12, 9, 16, 17, 5],\n"
,
" [7, 0, 8],\n"
,
" [13, 6, 18, 1, 15, 13, 4, 16, 13, 3],\n"
,
" [0, 15, 18, 3],\n"
,
" [6, 1, 6, 6],\n"
,
" [9, 18, 13, 7, 13, 2, 20, 14, 6, 20, 6, 6],\n"
,
" [13, 8, 12, 3, 6, 6, 11, 4, 9, 14, 6, 12, 1, 3, 5],\n"
,
" [14, 3, 2, 14, 4, 10],\n"
,
" [3, 0, 11, 12, 6, 9, 3, 13, 12, 2],\n"
,
" [15, 14, 2, 1, 1, 9, 17, 15, 15, 4, 13, 12, 1, 9],\n"
,
" [4, 11, 20, 0, 13, 18, 3, 0, 0, 17, 18],\n"
,
" [14, 16, 7],\n"
,
" [14, 8, 18, 4, 1, 0],\n"
,
" [7, 7, 0, 1, 16, 10, 1, 19, 9, 0],\n"
,
" [9, 14, 3, 19, 14, 10, 17, 13, 8, 19, 18, 19, 5],\n"
,
" [18, 6, 6, 0, 8, 3, 10, 4, 14],\n"
,
" [0, 3, 19, 10, 18],\n"
,
" [1, 18, 11, 2, 5, 3, 11, 5, 11, 4, 4, 16, 3],\n"
,
" [4, 2, 0, 9, 17, 3, 2, 16, 19, 3, 2, 8, 18],\n"
,
" [19, 11, 2, 10, 9, 0],\n"
,
" [7, 18, 3, 16, 10, 10],\n"
,
" [2, 19, 5, 11, 20, 15],\n"
,
" [17, 12, 0, 20, 9, 0, 15, 13, 15, 8, 11],\n"
,
" [6, 5, 7, 16, 5, 11, 15, 16],\n"
,
" [9, 15, 8, 16, 10, 13, 14, 2, 4, 7, 10, 3, 17],\n"
,
" [0, 6, 15, 6, 16, 10, 8, 9, 4, 14],\n"
,
" [12, 20, 3, 0, 17, 4, 8, 1, 8],\n"
,
" [20, 4, 8],\n"
,
" [17, 9, 10, 8, 8, 20, 0],\n"
,
" [7, 2, 14, 3, 2],\n"
,
" [9, 20, 10],\n"
,
" [15, 7, 16, 1, 18, 16, 20, 5, 14],\n"
,
" [12, 11, 8, 16, 1, 1, 10, 2, 20, 17],\n"
,
" [4, 8, 10, 14, 8],\n"
,
" [9, 13, 1, 0, 10, 0],\n"
,
" [10, 13, 7, 19, 0],\n"
,
" [5, 8, 5],\n"
,
" [4, 14, 16, 20, 18, 12, 9, 10, 5, 20, 0, 3, 15, 7],\n"
,
" [10, 6, 3, 6, 1, 19, 15, 10, 10, 13, 6, 20, 12, 5, 17],\n"
,
" [17, 17, 10, 8, 19, 14, 14, 19, 3, 4, 10, 5, 11, 20, 20],\n"
,
" [5, 11, 9, 14, 12, 11, 20, 13, 11, 16, 15, 0, 12, 20, 16],\n"
,
" [11, 16, 15, 8, 7, 9, 13, 10, 4, 18, 1, 1, 9, 0],\n"
,
" [12, 15, 18],\n"
,
" [14, 18, 6, 6, 1],\n"
,
" [16, 6, 12, 11],\n"
,
" [12, 19, 17, 0, 18, 10, 11, 2, 12, 4, 5, 16],\n"
,
" [8, 20, 15, 5, 16, 7, 20, 14, 15, 17, 1],\n"
,
" [5, 7, 5, 13, 2, 18, 5, 2, 2, 12, 20, 14],\n"
,
" [2, 11, 4, 9],\n"
,
" [2, 13, 1, 5, 4],\n"
,
" [11, 5, 5, 2, 17, 8, 5, 17, 13, 5, 9],\n"
,
" [20, 19, 6, 3, 10, 8, 6, 0],\n"
,
" [2, 20, 18, 6, 14, 15, 13, 12, 10, 12, 8, 20, 16, 4],\n"
,
" [14, 0, 13, 9],\n"
,
" [13, 20, 18, 1, 3, 5, 0, 18, 20],\n"
,
" [7, 14, 5, 12, 12, 8, 9, 6, 20, 16],\n"
,
" [18, 7, 12, 5, 5, 19, 19, 4, 10, 8, 11, 18, 17, 19, 6],\n"
,
" [2, 7, 17, 16, 19, 18, 7, 9, 12, 3, 6, 7, 10],\n"
,
" [6, 10, 11, 14, 3, 18, 10, 2, 13, 0, 20, 11, 20, 1],\n"
,
" [8, 12, 6, 5, 4, 20, 12, 8],\n"
,
" [7, 8, 1, 16, 10, 11, 19, 18],\n"
,
" [16, 0, 17, 1, 3, 18],\n"
,
" [3, 6, 17, 19, 17, 1, 13, 13, 13],\n"
,
" [2, 20, 16, 5, 19, 16, 6, 4, 2],\n"
,
" [17, 12, 15, 2, 11, 16, 19, 15, 3, 20],\n"
,
" [8, 20, 20, 9, 2, 4, 14, 1, 13],\n"
,
" [17, 0, 19, 7, 6, 10, 2, 5, 7, 17, 17, 4, 16],\n"
,
" [18, 17, 15, 20, 15, 0, 6, 7, 20],\n"
,
" [17, 13, 15, 15, 19, 11, 9, 10, 8],\n"
,
" [20, 20, 13, 15, 6, 16, 11, 14, 14, 6],\n"
,
" [2, 10, 3, 15, 3, 14, 4, 12, 19],\n"
,
" [1, 12, 8, 16],\n"
,
" [6, 10, 10, 9, 20, 1, 15, 3, 10, 5, 8, 0, 13, 7, 10],\n"
,
" [11, 15, 2],\n"
,
" [4, 4, 20, 4, 7, 7, 4, 7, 2, 9, 18, 4],\n"
,
" [13, 7, 1, 20],\n"
,
" [12, 14, 10, 18, 12, 13, 5, 13, 18, 16, 12, 4, 1, 16, 9],\n"
,
" [20, 7, 15],\n"
,
" [5, 14, 0, 7, 3, 1, 9, 15, 11, 10, 20, 2, 18, 6],\n"
,
" [11, 19, 12, 10, 1, 5, 20, 19, 8, 10, 14, 9, 14, 16, 3],\n"
,
" [5, 15, 18, 8, 2],\n"
,
" [7, 17, 20, 12],\n"
,
" [19, 14, 9, 3, 14, 4, 17, 15, 14, 12, 16],\n"
,
" [3, 18, 6, 15, 10, 3, 15, 11, 3, 5, 14],\n"
,
" [8, 15, 19, 16, 4],\n"
,
" [8, 12, 18, 0, 9],\n"
,
" [5, 4, 1, 7, 9, 5, 10, 14, 19, 7, 4, 0],\n"
,
" [1, 15, 11, 5, 11, 14, 12, 20, 17, 4, 13, 12],\n"
,
" [11, 9, 11, 18, 5],\n"
,
" [9, 18, 19, 0, 4, 1, 8, 0, 4, 7, 8, 19, 3],\n"
,
" [3, 9, 13, 4, 1, 11, 3],\n"
,
" [3, 4, 14, 15, 9, 2, 16, 0, 17, 8, 2, 3],\n"
,
" [11, 12, 18, 11, 11, 10, 19, 16, 10, 9],\n"
,
" [11, 19, 9, 3, 4, 18, 8, 15, 4, 3, 15, 17, 18, 1, 13],\n"
,
" [14, 20, 0, 1, 2, 19, 0, 4, 8, 2, 8, 11, 14]]"
]
},
"execution_count"
:
46
,
"metadata"
:
{},
"output_type"
:
"execute_result"
}
],
"source"
:
[
"data_value #模拟展示用户搜藏图书id"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
16
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[
{
"name"
:
"stdout"
,
"output_type"
:
"stream"
,
"text"
:
[
"563 房地产经济专业知识与实务历年真题及名师密押试卷\n"
,
"296 金博士一点全通\n"
,
"1236 会计电算化应用教程\n"
,
"Name: title, dtype: object\n"
]
}
],
"source"
:
[
"print books[[563,296,1236]] #验证id号和书名一一对应"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
53
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[
{
"data"
:
{
"text/plain"
:
[
"[[frozenset({9}),\n"
,
" frozenset({2}),\n"
,
" frozenset({12}),\n"
,
" frozenset({1}),\n"
,
" frozenset({16}),\n"
,
" frozenset({19}),\n"
,
" frozenset({4}),\n"
,
" frozenset({14}),\n"
,
" frozenset({8}),\n"
,
" frozenset({11}),\n"
,
" frozenset({18}),\n"
,
" frozenset({13}),\n"
,
" frozenset({15}),\n"
,
" frozenset({6}),\n"
,
" frozenset({17}),\n"
,
" frozenset({0}),\n"
,
" frozenset({3}),\n"
,
" frozenset({10}),\n"
,
" frozenset({5}),\n"
,
" frozenset({20}),\n"
,
" frozenset({7})],\n"
,
" [frozenset({3, 14}),\n"
,
" frozenset({1, 15}),\n"
,
" frozenset({4, 5}),\n"
,
" frozenset({9, 15}),\n"
,
" frozenset({4, 11}),\n"
,
" frozenset({6, 14}),\n"
,
" frozenset({5, 8}),\n"
,
" frozenset({11, 19}),\n"
,
" frozenset({5, 18}),\n"
,
" frozenset({6, 15}),\n"
,
" frozenset({2, 4}),\n"
,
" frozenset({5, 16}),\n"
,
" frozenset({4, 13}),\n"
,
" frozenset({0, 8}),\n"
,
" frozenset({7, 19}),\n"
,
" frozenset({1, 17}),\n"
,
" frozenset({9, 14}),\n"
,
" frozenset({9, 19}),\n"
,
" frozenset({8, 14}),\n"
,
" frozenset({7, 8}),\n"
,
" frozenset({10, 14}),\n"
,
" frozenset({2, 7}),\n"
,
" frozenset({11, 20}),\n"
,
" frozenset({2, 10}),\n"
,
" frozenset({13, 19}),\n"
,
" frozenset({11, 12}),\n"
,
" frozenset({3, 9}),\n"
,
" frozenset({17, 18}),\n"
,
" frozenset({12, 20}),\n"
,
" frozenset({10, 17}),\n"
,
" frozenset({0, 6}),\n"
,
" frozenset({7, 12}),\n"
,
" frozenset({9, 10}),\n"
,
" frozenset({17, 19}),\n"
,
" frozenset({7, 14}),\n"
,
" frozenset({12, 16}),\n"
,
" frozenset({4, 18}),\n"
,
" frozenset({0, 16}),\n"
,
" frozenset({0, 9}),\n"
,
" frozenset({2, 6}),\n"
,
" frozenset({1, 2}),\n"
,
" frozenset({13, 20}),\n"
,
" frozenset({7, 15}),\n"
,
" frozenset({0, 13}),\n"
,
" frozenset({3, 7}),\n"
,
" frozenset({7, 9}),\n"
,
" frozenset({12, 19}),\n"
,
" frozenset({6, 8}),\n"
,
" frozenset({19, 20}),\n"
,
" frozenset({0, 17}),\n"
,
" frozenset({4, 15}),\n"
,
" frozenset({17, 20}),\n"
,
" frozenset({1, 8}),\n"
,
" frozenset({11, 16}),\n"
,
" frozenset({12, 17}),\n"
,
" frozenset({13, 17}),\n"
,
" frozenset({2, 9}),\n"
,
" frozenset({16, 19}),\n"
,
" frozenset({10, 16}),\n"
,
" frozenset({2, 17}),\n"
,
" frozenset({4, 12}),\n"
,
" frozenset({3, 8}),\n"
,
" frozenset({16, 18}),\n"
,
" frozenset({4, 20}),\n"
,
" frozenset({15, 17}),\n"
,
" frozenset({0, 4}),\n"
,
" frozenset({0, 12}),\n"
,
" frozenset({0, 1}),\n"
,
" frozenset({7, 11}),\n"
,
" frozenset({14, 15}),\n"
,
" frozenset({2, 15}),\n"
,
" frozenset({1, 6}),\n"
,
" frozenset({2, 3}),\n"
,
" frozenset({1, 16}),\n"
,
" frozenset({3, 6}),\n"
,
" frozenset({9, 11}),\n"
,
" frozenset({3, 4}),\n"
,
" frozenset({1, 20}),\n"
,
" frozenset({4, 19}),\n"
,
" frozenset({11, 17}),\n"
,
" frozenset({1, 14}),\n"
,
" frozenset({14, 20}),\n"
,
" frozenset({5, 20}),\n"
,
" frozenset({4, 10}),\n"
,
" frozenset({6, 9}),\n"
,
" frozenset({2, 11}),\n"
,
" frozenset({1, 9}),\n"
,
" frozenset({3, 11}),\n"
,
" frozenset({8, 15}),\n"
,
" frozenset({3, 10}),\n"
,
" frozenset({5, 7}),\n"
,
" frozenset({8, 13}),\n"
,
" frozenset({1, 7}),\n"
,
" frozenset({4, 6}),\n"
,
" frozenset({7, 13}),\n"
,
" frozenset({14, 19}),\n"
,
" frozenset({8, 20}),\n"
,
" frozenset({1, 4}),\n"
,
" frozenset({8, 16}),\n"
,
" frozenset({3, 18}),\n"
,
" frozenset({2, 14}),\n"
,
" frozenset({10, 19}),\n"
,
" frozenset({3, 15}),\n"
,
" frozenset({13, 14}),\n"
,
" frozenset({8, 10}),\n"
,
" frozenset({6, 12}),\n"
,
" frozenset({12, 15}),\n"
,
" frozenset({5, 11}),\n"
,
" frozenset({4, 9}),\n"
,
" frozenset({4, 8}),\n"
,
" frozenset({0, 15}),\n"
,
" frozenset({15, 20}),\n"
,
" frozenset({5, 17}),\n"
,
" frozenset({7, 16}),\n"
,
" frozenset({2, 12}),\n"
,
" frozenset({0, 2}),\n"
,
" frozenset({5, 9}),\n"
,
" frozenset({2, 20}),\n"
,
" frozenset({3, 5}),\n"
,
" frozenset({5, 15}),\n"
,
" frozenset({11, 14}),\n"
,
" frozenset({7, 17}),\n"
,
" frozenset({6, 10}),\n"
,
" frozenset({16, 20}),\n"
,
" frozenset({3, 16}),\n"
,
" frozenset({6, 19}),\n"
,
" frozenset({4, 7}),\n"
,
" frozenset({0, 10}),\n"
,
" frozenset({14, 18}),\n"
,
" frozenset({0, 14}),\n"
,
" frozenset({10, 15}),\n"
,
" frozenset({3, 19}),\n"
,
" frozenset({14, 17}),\n"
,
" frozenset({2, 8}),\n"
,
" frozenset({1, 5}),\n"
,
" frozenset({5, 6}),\n"
,
" frozenset({3, 17}),\n"
,
" frozenset({9, 16}),\n"
,
" frozenset({10, 13}),\n"
,
" frozenset({2, 19}),\n"
,
" frozenset({1, 11}),\n"
,
" frozenset({16, 17}),\n"
,
" frozenset({0, 20}),\n"
,
" frozenset({8, 17}),\n"
,
" frozenset({9, 17}),\n"
,
" frozenset({7, 10}),\n"
,
" frozenset({0, 7}),\n"
,
" frozenset({15, 16}),\n"
,
" frozenset({10, 18}),\n"
,
" frozenset({7, 20}),\n"
,
" frozenset({1, 10}),\n"
,
" frozenset({0, 3}),\n"
,
" frozenset({4, 17}),\n"
,
" frozenset({1, 3}),\n"
,
" frozenset({12, 14}),\n"
,
" frozenset({10, 11}),\n"
,
" frozenset({0, 19}),\n"
,
" frozenset({10, 20}),\n"
,
" frozenset({3, 20}),\n"
,
" frozenset({6, 17}),\n"
,
" frozenset({10, 12}),\n"
,
" frozenset({8, 19}),\n"
,
" frozenset({9, 12}),\n"
,
" frozenset({4, 16}),\n"
,
" frozenset({1, 18}),\n"
,
" frozenset({9, 13}),\n"
,
" frozenset({2, 5}),\n"
,
" frozenset({9, 20}),\n"
,
" frozenset({11, 15}),\n"
,
" frozenset({5, 14}),\n"
,
" frozenset({5, 10}),\n"
,
" frozenset({2, 18}),\n"
,
" frozenset({1, 13}),\n"
,
" frozenset({0, 5}),\n"
,
" frozenset({15, 19}),\n"
,
" frozenset({5, 12}),\n"
,
" frozenset({6, 16}),\n"
,
" frozenset({6, 20}),\n"
,
" frozenset({1, 19}),\n"
,
" frozenset({9, 18}),\n"
,
" frozenset({8, 9}),\n"
,
" frozenset({2, 13}),\n"
,
" frozenset({6, 7}),\n"
,
" frozenset({4, 14}),\n"
,
" frozenset({14, 16}),\n"
,
" frozenset({2, 16}),\n"
,
" frozenset({13, 15})],\n"
,
" []]"
]
},
"execution_count"
:
53
,
"metadata"
:
{},
"output_type"
:
"execute_result"
}
],
"source"
:
[
"L,suppData=apriori(data_value,minSupport=0.1)\n"
,
"L\n"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
60
,
"metadata"
:
{
"collapsed"
:
false
},
"outputs"
:
[
{
"name"
:
"stdout"
,
"output_type"
:
"stream"
,
"text"
:
[
"(frozenset([14]), '-->', frozenset([3]), 'conf:', 0.4057142857142857)\n"
,
"(frozenset([3]), '-->', frozenset([14]), 'conf:', 0.41764705882352937)\n"
,
"(frozenset([4]), '-->', frozenset([2]), 'conf:', 0.41208791208791207)\n"
,
"(frozenset([2]), '-->', frozenset([4]), 'conf:', 0.4098360655737705)\n"
,
"(frozenset([5]), '-->', frozenset([16]), 'conf:', 0.4140127388535032)\n"
,
"(frozenset([19]), '-->', frozenset([7]), 'conf:', 0.4)\n"
,
"(frozenset([12]), '-->', frozenset([20]), 'conf:', 0.4267515923566879)\n"
,
"(frozenset([17]), '-->', frozenset([10]), 'conf:', 0.4285714285714285)\n"
,
"(frozenset([18]), '-->', frozenset([4]), 'conf:', 0.4)\n"
,
"(frozenset([15]), '-->', frozenset([7]), 'conf:', 0.4082840236686391)\n"
,
"(frozenset([9]), '-->', frozenset([7]), 'conf:', 0.4)\n"
,
"(frozenset([8]), '-->', frozenset([1]), 'conf:', 0.4276729559748428)\n"
,
"(frozenset([9]), '-->', frozenset([2]), 'conf:', 0.4)\n"
,
"(frozenset([10]), '-->', frozenset([16]), 'conf:', 0.41208791208791207)\n"
,
"(frozenset([16]), '-->', frozenset([10]), 'conf:', 0.41899441340782123)\n"
,
"(frozenset([12]), '-->', frozenset([4]), 'conf:', 0.42038216560509556)\n"
,
"(frozenset([18]), '-->', frozenset([16]), 'conf:', 0.4)\n"
,
"(frozenset([15]), '-->', frozenset([14]), 'conf:', 0.42603550295857984)\n"
,
"(frozenset([14]), '-->', frozenset([15]), 'conf:', 0.4114285714285714)\n"
,
"(frozenset([1]), '-->', frozenset([16]), 'conf:', 0.42391304347826086)\n"
,
"(frozenset([16]), '-->', frozenset([1]), 'conf:', 0.4357541899441341)\n"
,
"(frozenset([20]), '-->', frozenset([1]), 'conf:', 0.4157303370786517)\n"
,
"(frozenset([1]), '-->', frozenset([20]), 'conf:', 0.40217391304347827)\n"
,
"(frozenset([19]), '-->', frozenset([4]), 'conf:', 0.40625)\n"
,
"(frozenset([11]), '-->', frozenset([2]), 'conf:', 0.41935483870967744)\n"
,
"(frozenset([13]), '-->', frozenset([7]), 'conf:', 0.4155844155844156)\n"
,
"(frozenset([4]), '-->', frozenset([1]), 'conf:', 0.4065934065934066)\n"
,
"(frozenset([1]), '-->', frozenset([4]), 'conf:', 0.40217391304347827)\n"
,
"(frozenset([14]), '-->', frozenset([2]), 'conf:', 0.41714285714285715)\n"
,
"(frozenset([19]), '-->', frozenset([10]), 'conf:', 0.41875)\n"
,
"(frozenset([8]), '-->', frozenset([4]), 'conf:', 0.4088050314465409)\n"
,
"(frozenset([7]), '-->', frozenset([16]), 'conf:', 0.4357541899441341)\n"
,
"(frozenset([16]), '-->', frozenset([7]), 'conf:', 0.4357541899441341)\n"
,
"(frozenset([5]), '-->', frozenset([3]), 'conf:', 0.40764331210191085)\n"
,
"(frozenset([5]), '-->', frozenset([1]), 'conf:', 0.43312101910828027)\n"
,
"(frozenset([3]), '-->', frozenset([17]), 'conf:', 0.411764705882353)\n"
,
"(frozenset([17]), '-->', frozenset([3]), 'conf:', 0.4166666666666667)\n"
,
"(frozenset([17]), '-->', frozenset([16]), 'conf:', 0.4345238095238095)\n"
,
"(frozenset([16]), '-->', frozenset([17]), 'conf:', 0.40782122905027934)\n"
,
"(frozenset([8]), '-->', frozenset([17]), 'conf:', 0.4025157232704403)\n"
,
"(frozenset([7]), '-->', frozenset([10]), 'conf:', 0.41899441340782123)\n"
,
"(frozenset([10]), '-->', frozenset([7]), 'conf:', 0.41208791208791207)\n"
,
"(frozenset([15]), '-->', frozenset([16]), 'conf:', 0.4319526627218934)\n"
,
"(frozenset([16]), '-->', frozenset([15]), 'conf:', 0.40782122905027934)\n"
,
"(frozenset([10]), '-->', frozenset([1]), 'conf:', 0.4065934065934066)\n"
,
"(frozenset([1]), '-->', frozenset([10]), 'conf:', 0.40217391304347827)\n"
,
"(frozenset([3]), '-->', frozenset([0]), 'conf:', 0.41764705882352937)\n"
,
"(frozenset([0]), '-->', frozenset([3]), 'conf:', 0.4127906976744186)\n"
,
"(frozenset([17]), '-->', frozenset([4]), 'conf:', 0.4166666666666667)\n"
,
"(frozenset([3]), '-->', frozenset([1]), 'conf:', 0.4)\n"
,
"(frozenset([13]), '-->', frozenset([9]), 'conf:', 0.4090909090909091)\n"
,
"(frozenset([5]), '-->', frozenset([2]), 'conf:', 0.4394904458598726)\n"
,
"(frozenset([9]), '-->', frozenset([20]), 'conf:', 0.4)\n"
,
"(frozenset([18]), '-->', frozenset([2]), 'conf:', 0.4068965517241379)\n"
,
"(frozenset([6]), '-->', frozenset([20]), 'conf:', 0.42138364779874216)\n"
,
"(frozenset([19]), '-->', frozenset([1]), 'conf:', 0.4)\n"
,
"(frozenset([13]), '-->', frozenset([2]), 'conf:', 0.4025974025974026)\n"
,
"(frozenset([14]), '-->', frozenset([4]), 'conf:', 0.4000000000000001)\n"
,
"(frozenset([2]), '-->', frozenset([16]), 'conf:', 0.42622950819672134)\n"
,
"(frozenset([16]), '-->', frozenset([2]), 'conf:', 0.4357541899441341)\n"
]
},
{
"data"
:
{
"text/plain"
:
[
"[(frozenset({14}), frozenset({3}), 0.4057142857142857),\n"
,
" (frozenset({3}), frozenset({14}), 0.41764705882352937),\n"
,
" (frozenset({4}), frozenset({2}), 0.41208791208791207),\n"
,
" (frozenset({2}), frozenset({4}), 0.4098360655737705),\n"
,
" (frozenset({5}), frozenset({16}), 0.4140127388535032),\n"
,
" (frozenset({19}), frozenset({7}), 0.4),\n"
,
" (frozenset({12}), frozenset({20}), 0.4267515923566879),\n"
,
" (frozenset({17}), frozenset({10}), 0.4285714285714285),\n"
,
" (frozenset({18}), frozenset({4}), 0.4),\n"
,
" (frozenset({15}), frozenset({7}), 0.4082840236686391),\n"
,
" (frozenset({9}), frozenset({7}), 0.4),\n"
,
" (frozenset({8}), frozenset({1}), 0.4276729559748428),\n"
,
" (frozenset({9}), frozenset({2}), 0.4),\n"
,
" (frozenset({10}), frozenset({16}), 0.41208791208791207),\n"
,
" (frozenset({16}), frozenset({10}), 0.41899441340782123),\n"
,
" (frozenset({12}), frozenset({4}), 0.42038216560509556),\n"
,
" (frozenset({18}), frozenset({16}), 0.4),\n"
,
" (frozenset({15}), frozenset({14}), 0.42603550295857984),\n"
,
" (frozenset({14}), frozenset({15}), 0.4114285714285714),\n"
,
" (frozenset({1}), frozenset({16}), 0.42391304347826086),\n"
,
" (frozenset({16}), frozenset({1}), 0.4357541899441341),\n"
,
" (frozenset({20}), frozenset({1}), 0.4157303370786517),\n"
,
" (frozenset({1}), frozenset({20}), 0.40217391304347827),\n"
,
" (frozenset({19}), frozenset({4}), 0.40625),\n"
,
" (frozenset({11}), frozenset({2}), 0.41935483870967744),\n"
,
" (frozenset({13}), frozenset({7}), 0.4155844155844156),\n"
,
" (frozenset({4}), frozenset({1}), 0.4065934065934066),\n"
,
" (frozenset({1}), frozenset({4}), 0.40217391304347827),\n"
,
" (frozenset({14}), frozenset({2}), 0.41714285714285715),\n"
,
" (frozenset({19}), frozenset({10}), 0.41875),\n"
,
" (frozenset({8}), frozenset({4}), 0.4088050314465409),\n"
,
" (frozenset({7}), frozenset({16}), 0.4357541899441341),\n"
,
" (frozenset({16}), frozenset({7}), 0.4357541899441341),\n"
,
" (frozenset({5}), frozenset({3}), 0.40764331210191085),\n"
,
" (frozenset({5}), frozenset({1}), 0.43312101910828027),\n"
,
" (frozenset({3}), frozenset({17}), 0.411764705882353),\n"
,
" (frozenset({17}), frozenset({3}), 0.4166666666666667),\n"
,
" (frozenset({17}), frozenset({16}), 0.4345238095238095),\n"
,
" (frozenset({16}), frozenset({17}), 0.40782122905027934),\n"
,
" (frozenset({8}), frozenset({17}), 0.4025157232704403),\n"
,
" (frozenset({7}), frozenset({10}), 0.41899441340782123),\n"
,
" (frozenset({10}), frozenset({7}), 0.41208791208791207),\n"
,
" (frozenset({15}), frozenset({16}), 0.4319526627218934),\n"
,
" (frozenset({16}), frozenset({15}), 0.40782122905027934),\n"
,
" (frozenset({10}), frozenset({1}), 0.4065934065934066),\n"
,
" (frozenset({1}), frozenset({10}), 0.40217391304347827),\n"
,
" (frozenset({3}), frozenset({0}), 0.41764705882352937),\n"
,
" (frozenset({0}), frozenset({3}), 0.4127906976744186),\n"
,
" (frozenset({17}), frozenset({4}), 0.4166666666666667),\n"
,
" (frozenset({3}), frozenset({1}), 0.4),\n"
,
" (frozenset({13}), frozenset({9}), 0.4090909090909091),\n"
,
" (frozenset({5}), frozenset({2}), 0.4394904458598726),\n"
,
" (frozenset({9}), frozenset({20}), 0.4),\n"
,
" (frozenset({18}), frozenset({2}), 0.4068965517241379),\n"
,
" (frozenset({6}), frozenset({20}), 0.42138364779874216),\n"
,
" (frozenset({19}), frozenset({1}), 0.4),\n"
,
" (frozenset({13}), frozenset({2}), 0.4025974025974026),\n"
,
" (frozenset({14}), frozenset({4}), 0.4000000000000001),\n"
,
" (frozenset({2}), frozenset({16}), 0.42622950819672134),\n"
,
" (frozenset({16}), frozenset({2}), 0.4357541899441341)]"
]
},
"execution_count"
:
60
,
"metadata"
:
{},
"output_type"
:
"execute_result"
}
],
"source"
:
[
"rules=generateRules(L,suppData,minConf=0.4)\n"
,
"rules"
]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
null
,
"metadata"
:
{
"collapsed"
:
true
},
"outputs"
:
[],
"source"
:
[]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
null
,
"metadata"
:
{
"collapsed"
:
true
},
"outputs"
:
[],
"source"
:
[]
},
{
"cell_type"
:
"code"
,
"execution_count"
:
null
,
"metadata"
:
{
"collapsed"
:
true
},
"outputs"
:
[],
"source"
:
[]
}
],
"metadata"
:
{
"anaconda-cloud"
:
{},
"kernelspec"
:
{
"display_name"
:
"Python [Root]"
,
"language"
:
"python"
,
"name"
:
"Python [Root]"
},
"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.12"
}
},
"nbformat"
:
4
,
"nbformat_minor"
:
0
}
user_FC.py
0 → 100644
View file @
0b5e237
import
math
#!usr/bin/python
def
readFile
(
file_name
):
contents_lines
=
[]
f
=
open
(
file_name
,
'r'
)
contents_lines
=
f
.
readlines
()
f
.
close
()
return
contents_lines
def
getBooksList
(
file_name
):
books_contents
=
readFile
(
file_name
)
books_info
=
{}
for
book
in
books_contents
:
book_info
=
book
.
split
(
"|"
)
books_info
[
int
(
book_info
[
0
])]
=
book_info
[
1
:]
return
books_info
def
getRatingInformation
(
ratings
):
rates
=
[]
for
line
in
ratings
:
rate
=
line
.
split
(
'
\t
'
)
rates
.
append
([
int
(
rate
[
0
]),
int
(
rate
[
1
]),
int
(
rate
[
2
])])
return
rates
def
createUserRankDic
(
rates
):
user_rate_dic
=
{}
item_to_user
=
{}
for
i
in
rates
:
user_rank
=
(
i
[
1
],
i
[
2
])
if
i
[
0
]
in
user_rate_dic
:
user_rate_dic
[
i
[
0
]]
.
append
(
user_rank
)
else
:
user_rate_dic
[
i
[
0
]]
=
[
user_rank
]
if
i
[
1
]
in
item_to_user
:
item_to_user
[
i
[
1
]]
.
append
(
i
[
0
])
else
:
item_to_user
[
i
[
1
]]
=
[
i
[
0
]]
return
user_rate_dic
,
item_to_user
def
clacSimlaryCosDist
(
user1
,
user2
):
sum_x
=
0.0
sum_y
=
0.0
sum_xy
=
0.0
avg_x
=
0.0
avg_y
=
0.0
for
key
in
user1
:
avg_x
+=
key
[
1
]
avg_x
=
avg_x
/
len
(
user1
)
for
key
in
user2
:
avg_y
+=
key
[
1
]
avg_y
=
avg_y
/
len
(
user2
)
for
key1
in
user1
:
for
key2
in
user2
:
if
key1
[
0
]
==
key2
[
0
]:
sum_xy
+=
(
key1
[
1
]
-
avg_x
)
*
(
key2
[
1
]
-
avg_y
)
sum_x
+=
(
key1
[
1
]
-
avg_x
)
*
(
key1
[
1
]
-
avg_x
)
for
key2
in
user2
:
sum_y
+=
(
key2
[
1
]
-
avg_y
)
*
(
key2
[
1
]
-
avg_y
)
# print sum_x,sum_y,sum_xy
if
sum_xy
==
0.0
:
return
0
sx_sy
=
math
.
sqrt
(
sum_x
*
sum_y
)
return
sum_xy
/
sx_sy
def
calcNearestNeighbor
(
userid
,
users_dic
,
item_dic
):
neighbors
=
[]
for
item
in
users_dic
[
userid
]:
for
neighbor
in
item_dic
[
item
[
0
]]:
if
neighbor
!=
userid
and
neighbor
not
in
neighbors
:
neighbors
.
append
(
neighbor
)
neighbors_dist
=
[]
for
neighbor
in
neighbors
:
dist
=
clacSimlaryCosDist
(
users_dic
[
userid
],
users_dic
[
neighbor
])
neighbors_dist
.
append
([
dist
,
neighbor
])
neighbors_dist
.
sort
(
reverse
=
True
)
return
neighbors_dist
def
recommendByUserFC
(
file_name
,
userid
,
k
=
5
):
test_contents
=
readFile
(
file_name
)
test_rates
=
getRatingInformation
(
test_contents
)
test_dic
,
test_item_to_user
=
createUserRankDic
(
test_rates
)
neighbors
=
calcNearestNeighbor
(
userid
,
test_dic
,
test_item_to_user
)[:
k
]
recommend_dic
=
{}
for
neighbor
in
neighbors
:
neighbor_user_id
=
neighbor
[
1
]
books
=
test_dic
[
neighbor_user_id
]
for
book
in
books
:
if
book
[
0
]
not
in
recommend_dic
:
recommend_dic
[
book
[
0
]]
=
neighbor
[
0
]
else
:
recommend_dic
[
book
[
0
]]
+=
neighbor
[
0
]
recommend_list
=
[]
for
key
in
recommend_dic
:
recommend_list
.
append
([
recommend_dic
[
key
],
key
])
recommend_list
.
sort
(
reverse
=
True
)
user_books
=
[
i
[
0
]
for
i
in
test_dic
[
userid
]]
return
[
i
[
1
]
for
i
in
recommend_list
],
user_books
,
neighbors
if
__name__
==
'__main__'
:
books
=
readFile
(
'u.data'
)
rates
=
getRatingInformation
(
books
)
recommend_list
,
user_movie
,
neighbors
=
recommendByUserFC
(
"u.data"
,
222
)
print
recommend_list
[:
5
]
Please
register
or
login
to post a comment