武翔

add apriori and userfc

{
"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
}
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]