Showing
2 changed files
with
1478 additions
and
0 deletions
Apriori.ipynb
0 → 100644
| 1 | +{ | ||
| 2 | + "cells": [ | ||
| 3 | + { | ||
| 4 | + "cell_type": "code", | ||
| 5 | + "execution_count": 1, | ||
| 6 | + "metadata": { | ||
| 7 | + "collapsed": true | ||
| 8 | + }, | ||
| 9 | + "outputs": [], | ||
| 10 | + "source": [ | ||
| 11 | + "dataSet = [[1,3,4],[2,3,5],[1,2,3,5],[2,5]]" | ||
| 12 | + ] | ||
| 13 | + }, | ||
| 14 | + { | ||
| 15 | + "cell_type": "code", | ||
| 16 | + "execution_count": 2, | ||
| 17 | + "metadata": { | ||
| 18 | + "collapsed": true | ||
| 19 | + }, | ||
| 20 | + "outputs": [], | ||
| 21 | + "source": [ | ||
| 22 | + "#对数据集中的每一项构建一个不变的集合,作为第一个候选项集\n", | ||
| 23 | + "def createC1(dataSet):\n", | ||
| 24 | + " c1 = []\n", | ||
| 25 | + " for transaction in dataSet:\n", | ||
| 26 | + " for item in transaction:\n", | ||
| 27 | + " if not [item] in c1:\n", | ||
| 28 | + " c1.append([item])\n", | ||
| 29 | + " c1.sort()\n", | ||
| 30 | + " return map(frozenset,c1)\n", | ||
| 31 | + "\n", | ||
| 32 | + "#找出满足最小支持度的频繁项集,Ck为候选项集列表,最开始为单个的候选项集,D表示数据集合\n", | ||
| 33 | + "def scanD(D,Ck,minSupport):\n", | ||
| 34 | + " ssCnt ={}\n", | ||
| 35 | + " for tid in D:\n", | ||
| 36 | + " for can in Ck:#遍历每一个候选项集\n", | ||
| 37 | + " if can.issubset(tid):\n", | ||
| 38 | + " if not ssCnt.has_key(can):\n", | ||
| 39 | + " ssCnt[can]=1\n", | ||
| 40 | + " else:\n", | ||
| 41 | + " ssCnt[can]+=1\n", | ||
| 42 | + " numItems = float(len(D))#数据集总共有多少项\n", | ||
| 43 | + " retList = []\n", | ||
| 44 | + " supportData = {}\n", | ||
| 45 | + " for key in ssCnt:\n", | ||
| 46 | + " support = ssCnt[key]/numItems\n", | ||
| 47 | + " if support >= minSupport:\n", | ||
| 48 | + " retList.insert(0,key)\n", | ||
| 49 | + " supportData[key]=support\n", | ||
| 50 | + " #supportData包含每一个候选项集的支持度\n", | ||
| 51 | + " #retlist包含每一个满足最小支持度的项集\n", | ||
| 52 | + " return retList,supportData\n", | ||
| 53 | + "#生成频繁项集\n", | ||
| 54 | + "\n", | ||
| 55 | + "\n", | ||
| 56 | + "#参数为频繁项集列表Lk和项集个数K,输出候选集\n", | ||
| 57 | + "def aprioriGen(Lk, k):\n", | ||
| 58 | + " retList = []\n", | ||
| 59 | + " lenLk = len(Lk)#频繁项集个数\n", | ||
| 60 | + " for i in range(lenLk):\n", | ||
| 61 | + " for j in range(i+1,lenLk):\n", | ||
| 62 | + " L1=list(Lk[i])[:k-2]\n", | ||
| 63 | + " L2=list(Lk[j])[:k-2]\n", | ||
| 64 | + " L1.sort(),L2.sort()\n", | ||
| 65 | + " if L1==L2:\n", | ||
| 66 | + " retList.append(Lk[i]|Lk[j])\n", | ||
| 67 | + " return retList\n", | ||
| 68 | + "\n", | ||
| 69 | + "def apriori(dataSet,minSupport=0.5):\n", | ||
| 70 | + " C1=createC1(dataSet)\n", | ||
| 71 | + " D = map(set,dataSet)\n", | ||
| 72 | + " L1, supportData = scanD(D,C1,minSupport)\n", | ||
| 73 | + " L=[L1]\n", | ||
| 74 | + " k=2\n", | ||
| 75 | + " while (len(L[k-2])>0):\n", | ||
| 76 | + " Ck = aprioriGen(L[k-2],k)#输出候选项集\n", | ||
| 77 | + " Lk, supK = scanD(D,Ck,minSupport)#生成频繁项集\n", | ||
| 78 | + " supportData.update(supK)#更每一个候选集的字典\n", | ||
| 79 | + " L.append(Lk)\n", | ||
| 80 | + " k += 1\n", | ||
| 81 | + " return L, supportData\n", | ||
| 82 | + "\n", | ||
| 83 | + "\n", | ||
| 84 | + "def generateRules(L,supportData,minConf=0.7):\n", | ||
| 85 | + " bigRuleList=[]\n", | ||
| 86 | + " for i in range(1,len(L)):\n", | ||
| 87 | + " for freqSet in L[i]:\n", | ||
| 88 | + " H1 = [frozenset([item]) for item in freqSet]\n", | ||
| 89 | + " if(i>1):\n", | ||
| 90 | + " rulesFromConseq(freqSet,H1,supportData,bigRuleList,minConf)\n", | ||
| 91 | + " else:\n", | ||
| 92 | + " calcConf(freqSet,H1,supportData,bigRuleList,minConf)\n", | ||
| 93 | + " return bigRuleList\n", | ||
| 94 | + "\n", | ||
| 95 | + "def calcConf(freqSet,H,supportData,br1,minConf=0.7):\n", | ||
| 96 | + " prunedH = []\n", | ||
| 97 | + " for conseq in H:\n", | ||
| 98 | + " conf = supportData[freqSet]/supportData[freqSet-conseq]\n", | ||
| 99 | + " if conf >= minConf:\n", | ||
| 100 | + " print (freqSet-conseq,'-->',conseq,'conf:',conf)\n", | ||
| 101 | + " br1.append((freqSet-conseq,conseq,conf))\n", | ||
| 102 | + " prunedH.append(conseq)\n", | ||
| 103 | + " return prunedH\n", | ||
| 104 | + "\n", | ||
| 105 | + "def rulesFromConseq(freqSet,H,supportData,br1,minConf=0.7):\n", | ||
| 106 | + " m=len(H[0])\n", | ||
| 107 | + " if (len(freqSet)>(m+1)):\n", | ||
| 108 | + " Hmp1=aprioriGen(H,m+1)\n", | ||
| 109 | + " Hmp1=calcConf(freqSet,Hmp1,supportData,br1,minConf)\n", | ||
| 110 | + " if (len(Hmp1)>1):\n", | ||
| 111 | + " rulesFromConseq(freqSet,Hmp1,supportData,br1,minConf)" | ||
| 112 | + ] | ||
| 113 | + }, | ||
| 114 | + { | ||
| 115 | + "cell_type": "code", | ||
| 116 | + "execution_count": 4, | ||
| 117 | + "metadata": { | ||
| 118 | + "collapsed": false | ||
| 119 | + }, | ||
| 120 | + "outputs": [], | ||
| 121 | + "source": [ | ||
| 122 | + "#和上面函数功能一致,用列表表达式标书\n", | ||
| 123 | + "# C1 = []\n", | ||
| 124 | + "# [[C1.append([item]) for item in transaction if [item] not in C1]for transaction in DataSet]\n", | ||
| 125 | + "# C1.sort()\n", | ||
| 126 | + "# map(frozenset,C1)" | ||
| 127 | + ] | ||
| 128 | + }, | ||
| 129 | + { | ||
| 130 | + "cell_type": "code", | ||
| 131 | + "execution_count": 5, | ||
| 132 | + "metadata": { | ||
| 133 | + "collapsed": false | ||
| 134 | + }, | ||
| 135 | + "outputs": [], | ||
| 136 | + "source": [ | ||
| 137 | + "# C1=createC1(DataSet)\n", | ||
| 138 | + "# D=map(set,DataSet)\n", | ||
| 139 | + "# L1,suppData0=scanD(D,C1,0.5)\n", | ||
| 140 | + "# L1" | ||
| 141 | + ] | ||
| 142 | + }, | ||
| 143 | + { | ||
| 144 | + "cell_type": "code", | ||
| 145 | + "execution_count": 6, | ||
| 146 | + "metadata": { | ||
| 147 | + "collapsed": false | ||
| 148 | + }, | ||
| 149 | + "outputs": [], | ||
| 150 | + "source": [ | ||
| 151 | + "# #it's a test!\n", | ||
| 152 | + "# for i in range(4):\n", | ||
| 153 | + "# for j in range(i+1,4):\n", | ||
| 154 | + "# print (i,j)\n", | ||
| 155 | + "# #把0、1、2、3共四个数两两进行组合" | ||
| 156 | + ] | ||
| 157 | + }, | ||
| 158 | + { | ||
| 159 | + "cell_type": "code", | ||
| 160 | + "execution_count": 7, | ||
| 161 | + "metadata": { | ||
| 162 | + "collapsed": false | ||
| 163 | + }, | ||
| 164 | + "outputs": [ | ||
| 165 | + { | ||
| 166 | + "data": { | ||
| 167 | + "text/plain": [ | ||
| 168 | + "[[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]]" | ||
| 169 | + ] | ||
| 170 | + }, | ||
| 171 | + "execution_count": 7, | ||
| 172 | + "metadata": {}, | ||
| 173 | + "output_type": "execute_result" | ||
| 174 | + } | ||
| 175 | + ], | ||
| 176 | + "source": [ | ||
| 177 | + "dataSet" | ||
| 178 | + ] | ||
| 179 | + }, | ||
| 180 | + { | ||
| 181 | + "cell_type": "code", | ||
| 182 | + "execution_count": 26, | ||
| 183 | + "metadata": { | ||
| 184 | + "collapsed": false | ||
| 185 | + }, | ||
| 186 | + "outputs": [ | ||
| 187 | + { | ||
| 188 | + "data": { | ||
| 189 | + "text/plain": [ | ||
| 190 | + "[[frozenset({1}), frozenset({3}), frozenset({2}), frozenset({5})],\n", | ||
| 191 | + " [frozenset({1, 3}), frozenset({2, 5}), frozenset({2, 3}), frozenset({3, 5})],\n", | ||
| 192 | + " [frozenset({2, 3, 5})],\n", | ||
| 193 | + " []]" | ||
| 194 | + ] | ||
| 195 | + }, | ||
| 196 | + "execution_count": 26, | ||
| 197 | + "metadata": {}, | ||
| 198 | + "output_type": "execute_result" | ||
| 199 | + } | ||
| 200 | + ], | ||
| 201 | + "source": [ | ||
| 202 | + "L,suppData=apriori(dataSet,minSupport=0.5)\n", | ||
| 203 | + "# rules=generateRules(L,suppData,minConf=0.7)\n", | ||
| 204 | + "L" | ||
| 205 | + ] | ||
| 206 | + }, | ||
| 207 | + { | ||
| 208 | + "cell_type": "code", | ||
| 209 | + "execution_count": 27, | ||
| 210 | + "metadata": { | ||
| 211 | + "collapsed": false | ||
| 212 | + }, | ||
| 213 | + "outputs": [ | ||
| 214 | + { | ||
| 215 | + "data": { | ||
| 216 | + "text/plain": [ | ||
| 217 | + "{frozenset({5}): 0.75,\n", | ||
| 218 | + " frozenset({3}): 0.75,\n", | ||
| 219 | + " frozenset({2, 3, 5}): 0.5,\n", | ||
| 220 | + " frozenset({1, 2}): 0.25,\n", | ||
| 221 | + " frozenset({1, 5}): 0.25,\n", | ||
| 222 | + " frozenset({3, 5}): 0.5,\n", | ||
| 223 | + " frozenset({4}): 0.25,\n", | ||
| 224 | + " frozenset({2, 3}): 0.5,\n", | ||
| 225 | + " frozenset({2, 5}): 0.75,\n", | ||
| 226 | + " frozenset({1}): 0.5,\n", | ||
| 227 | + " frozenset({1, 3}): 0.5,\n", | ||
| 228 | + " frozenset({2}): 0.75}" | ||
| 229 | + ] | ||
| 230 | + }, | ||
| 231 | + "execution_count": 27, | ||
| 232 | + "metadata": {}, | ||
| 233 | + "output_type": "execute_result" | ||
| 234 | + } | ||
| 235 | + ], | ||
| 236 | + "source": [ | ||
| 237 | + "suppData" | ||
| 238 | + ] | ||
| 239 | + }, | ||
| 240 | + { | ||
| 241 | + "cell_type": "code", | ||
| 242 | + "execution_count": null, | ||
| 243 | + "metadata": { | ||
| 244 | + "collapsed": true | ||
| 245 | + }, | ||
| 246 | + "outputs": [], | ||
| 247 | + "source": [] | ||
| 248 | + }, | ||
| 249 | + { | ||
| 250 | + "cell_type": "code", | ||
| 251 | + "execution_count": 3, | ||
| 252 | + "metadata": { | ||
| 253 | + "collapsed": false | ||
| 254 | + }, | ||
| 255 | + "outputs": [], | ||
| 256 | + "source": [ | ||
| 257 | + "import pandas as pd\n", | ||
| 258 | + "import random\n", | ||
| 259 | + "from pandas import DataFrame\n", | ||
| 260 | + "import numpy as np\n" | ||
| 261 | + ] | ||
| 262 | + }, | ||
| 263 | + { | ||
| 264 | + "cell_type": "code", | ||
| 265 | + "execution_count": 5, | ||
| 266 | + "metadata": { | ||
| 267 | + "collapsed": false | ||
| 268 | + }, | ||
| 269 | + "outputs": [], | ||
| 270 | + "source": [ | ||
| 271 | + "df=pd.read_csv('tbl_books.csv')" | ||
| 272 | + ] | ||
| 273 | + }, | ||
| 274 | + { | ||
| 275 | + "cell_type": "code", | ||
| 276 | + "execution_count": 12, | ||
| 277 | + "metadata": { | ||
| 278 | + "collapsed": false | ||
| 279 | + }, | ||
| 280 | + "outputs": [], | ||
| 281 | + "source": [ | ||
| 282 | + "# random.randint(0,5001)" | ||
| 283 | + ] | ||
| 284 | + }, | ||
| 285 | + { | ||
| 286 | + "cell_type": "code", | ||
| 287 | + "execution_count": 10, | ||
| 288 | + "metadata": { | ||
| 289 | + "collapsed": false | ||
| 290 | + }, | ||
| 291 | + "outputs": [ | ||
| 292 | + { | ||
| 293 | + "data": { | ||
| 294 | + "text/plain": [ | ||
| 295 | + "0 新刊王氏脉经\n", | ||
| 296 | + "1 处境特殊儿童心理\n", | ||
| 297 | + "2 幼儿心理学\n", | ||
| 298 | + "3 遇见德国\n", | ||
| 299 | + "4 多民族国家的文学与文化\n", | ||
| 300 | + "Name: title, dtype: object" | ||
| 301 | + ] | ||
| 302 | + }, | ||
| 303 | + "execution_count": 10, | ||
| 304 | + "metadata": {}, | ||
| 305 | + "output_type": "execute_result" | ||
| 306 | + } | ||
| 307 | + ], | ||
| 308 | + "source": [ | ||
| 309 | + "books=df.title\n", | ||
| 310 | + "books[:5]" | ||
| 311 | + ] | ||
| 312 | + }, | ||
| 313 | + { | ||
| 314 | + "cell_type": "code", | ||
| 315 | + "execution_count": 11, | ||
| 316 | + "metadata": { | ||
| 317 | + "collapsed": false | ||
| 318 | + }, | ||
| 319 | + "outputs": [], | ||
| 320 | + "source": [ | ||
| 321 | + "data_value = []\n", | ||
| 322 | + "data_title=[]\n", | ||
| 323 | + "for index in range(500):\n", | ||
| 324 | + " temp_value = []\n", | ||
| 325 | + " temp_title = []\n", | ||
| 326 | + " for random_value in range(random.randint(3,15)):\n", | ||
| 327 | + " value_random=random.randint(0,20)\n", | ||
| 328 | + " temp_value.append(value_random)\n", | ||
| 329 | + " temp_title.append(books[value_random])\n", | ||
| 330 | + " data_value.append(temp_value)\n", | ||
| 331 | + " data_title.append(temp_title)" | ||
| 332 | + ] | ||
| 333 | + }, | ||
| 334 | + { | ||
| 335 | + "cell_type": "code", | ||
| 336 | + "execution_count": 15, | ||
| 337 | + "metadata": { | ||
| 338 | + "collapsed": false | ||
| 339 | + }, | ||
| 340 | + "outputs": [ | ||
| 341 | + { | ||
| 342 | + "name": "stdout", | ||
| 343 | + "output_type": "stream", | ||
| 344 | + "text": [ | ||
| 345 | + "<class 'pandas.core.frame.DataFrame'>\n", | ||
| 346 | + "RangeIndex: 500 entries, 0 to 499\n", | ||
| 347 | + "Data columns (total 15 columns):\n", | ||
| 348 | + "0 500 non-null object\n", | ||
| 349 | + "1 500 non-null object\n", | ||
| 350 | + "2 500 non-null object\n", | ||
| 351 | + "3 457 non-null object\n", | ||
| 352 | + "4 421 non-null object\n", | ||
| 353 | + "5 375 non-null object\n", | ||
| 354 | + "6 340 non-null object\n", | ||
| 355 | + "7 302 non-null object\n", | ||
| 356 | + "8 261 non-null object\n", | ||
| 357 | + "9 232 non-null object\n", | ||
| 358 | + "10 194 non-null object\n", | ||
| 359 | + "11 167 non-null object\n", | ||
| 360 | + "12 123 non-null object\n", | ||
| 361 | + "13 78 non-null object\n", | ||
| 362 | + "14 40 non-null object\n", | ||
| 363 | + "dtypes: object(15)\n", | ||
| 364 | + "memory usage: 58.7+ KB\n" | ||
| 365 | + ] | ||
| 366 | + }, | ||
| 367 | + { | ||
| 368 | + "data": { | ||
| 369 | + "text/plain": [ | ||
| 370 | + "(500, 15)" | ||
| 371 | + ] | ||
| 372 | + }, | ||
| 373 | + "execution_count": 15, | ||
| 374 | + "metadata": {}, | ||
| 375 | + "output_type": "execute_result" | ||
| 376 | + } | ||
| 377 | + ], | ||
| 378 | + "source": [ | ||
| 379 | + "df=DataFrame(data_title)#模拟展示用户收藏信息 模拟800个用户2000本书\n", | ||
| 380 | + "df.info()\n", | ||
| 381 | + "df.shape" | ||
| 382 | + ] | ||
| 383 | + }, | ||
| 384 | + { | ||
| 385 | + "cell_type": "code", | ||
| 386 | + "execution_count": 46, | ||
| 387 | + "metadata": { | ||
| 388 | + "collapsed": false | ||
| 389 | + }, | ||
| 390 | + "outputs": [ | ||
| 391 | + { | ||
| 392 | + "data": { | ||
| 393 | + "text/plain": [ | ||
| 394 | + "[[16, 4, 12, 18, 4, 5, 2, 14],\n", | ||
| 395 | + " [0, 17, 7, 6, 20],\n", | ||
| 396 | + " [20, 13, 6, 10, 19],\n", | ||
| 397 | + " [12, 11, 18, 12],\n", | ||
| 398 | + " [0, 17, 17, 8, 4, 17, 6],\n", | ||
| 399 | + " [5, 4, 3, 0, 17, 18, 18, 8, 9],\n", | ||
| 400 | + " [2, 8, 5, 14, 17, 4, 3, 1, 1],\n", | ||
| 401 | + " [7, 11, 16, 11, 10],\n", | ||
| 402 | + " [15, 10, 14, 15, 4, 9, 2, 14],\n", | ||
| 403 | + " [1, 6, 18, 9],\n", | ||
| 404 | + " [3, 10, 6, 15, 10, 17, 4, 20, 4],\n", | ||
| 405 | + " [11, 14, 20, 7],\n", | ||
| 406 | + " [12, 6, 14, 4, 9, 14, 20, 0],\n", | ||
| 407 | + " [2, 13, 1, 5, 13, 6],\n", | ||
| 408 | + " [16, 17, 0, 0],\n", | ||
| 409 | + " [4, 0, 19, 20, 14, 12, 0, 18, 9, 18, 18, 11, 4, 20, 1],\n", | ||
| 410 | + " [1, 10, 8, 18, 17, 8, 10],\n", | ||
| 411 | + " [8, 14, 0, 14, 7, 3, 13, 19, 9, 10, 14, 14, 13, 9],\n", | ||
| 412 | + " [7, 2, 10, 16, 4, 13, 15, 7, 9, 11, 2, 18, 9, 1, 13],\n", | ||
| 413 | + " [11, 13, 14, 20, 2, 7, 19, 5, 16, 9, 6, 2, 14, 10],\n", | ||
| 414 | + " [15, 11, 14, 14, 0, 4, 14, 17, 20, 19, 13, 13, 15],\n", | ||
| 415 | + " [7, 8, 8, 5],\n", | ||
| 416 | + " [4, 14, 19, 19, 11, 5, 14, 9, 17, 13, 7, 15],\n", | ||
| 417 | + " [19, 16, 1, 15, 12, 5, 7, 18],\n", | ||
| 418 | + " [11, 20, 12, 10],\n", | ||
| 419 | + " [7, 10, 13, 3, 15, 14],\n", | ||
| 420 | + " [3, 0, 19, 8, 4, 1, 6],\n", | ||
| 421 | + " [20, 8, 20, 5, 12, 6],\n", | ||
| 422 | + " [19, 19, 11, 18, 17, 8, 6, 3, 9, 2, 18, 15, 11],\n", | ||
| 423 | + " [1, 2, 17, 14, 3, 14, 14, 16, 8, 11, 7, 11],\n", | ||
| 424 | + " [8, 16, 10, 2, 8, 13, 4, 1, 4, 6, 2, 1, 20, 6, 19],\n", | ||
| 425 | + " [9, 2, 4, 6, 0, 0],\n", | ||
| 426 | + " [9, 1, 15, 8, 19, 12, 13, 13, 2, 4, 3, 17],\n", | ||
| 427 | + " [13, 9, 14, 14, 11, 10],\n", | ||
| 428 | + " [12, 9, 0, 5, 19, 10, 6, 20, 7, 5, 3, 5, 6],\n", | ||
| 429 | + " [10, 12, 13, 19, 11, 16, 20, 9, 15, 6, 19, 2, 0, 16],\n", | ||
| 430 | + " [5, 0, 3, 15, 14, 4, 17],\n", | ||
| 431 | + " [17, 0, 14, 17, 17],\n", | ||
| 432 | + " [1, 7, 11, 7, 10, 10, 20],\n", | ||
| 433 | + " [11, 7, 6, 0, 3, 2, 5, 6, 4],\n", | ||
| 434 | + " [4, 1, 18, 20, 9, 16, 7, 4, 6],\n", | ||
| 435 | + " [7, 6, 14],\n", | ||
| 436 | + " [8, 3, 3, 14, 16],\n", | ||
| 437 | + " [17, 11, 2, 16, 10],\n", | ||
| 438 | + " [3, 0, 15, 5, 5, 1, 11, 15, 3, 17, 20, 16, 1],\n", | ||
| 439 | + " [13, 8, 12, 17],\n", | ||
| 440 | + " [20, 9, 6, 3, 2, 14, 9, 1, 17, 6],\n", | ||
| 441 | + " [19, 5, 1, 16, 19, 10, 5, 10],\n", | ||
| 442 | + " [12, 8, 16, 2, 18, 15, 0, 5, 19],\n", | ||
| 443 | + " [14, 7, 11, 18, 7, 3, 18, 1, 18, 19, 9, 12, 9],\n", | ||
| 444 | + " [13, 6, 2],\n", | ||
| 445 | + " [6, 1, 0, 9],\n", | ||
| 446 | + " [2, 17, 20, 10, 1, 11, 16, 18, 3, 8, 5],\n", | ||
| 447 | + " [19, 20, 3, 6, 19, 8, 4, 8, 5, 0, 3, 20, 3, 1],\n", | ||
| 448 | + " [12, 10, 6],\n", | ||
| 449 | + " [7, 0, 16, 14, 0, 7],\n", | ||
| 450 | + " [20, 6, 3, 7, 4, 7, 9, 9, 18, 19, 14, 3, 20, 19, 17],\n", | ||
| 451 | + " [10, 4, 0, 13, 10, 6, 0, 6, 0, 11, 20, 6],\n", | ||
| 452 | + " [10, 4, 14, 5, 1],\n", | ||
| 453 | + " [1, 11, 1, 10, 12, 13, 6, 17, 6, 9, 15],\n", | ||
| 454 | + " [14, 13, 7, 15, 0, 3, 2, 3, 15],\n", | ||
| 455 | + " [1, 10, 1, 17],\n", | ||
| 456 | + " [2, 15, 0, 11, 12, 4, 1, 12, 6, 9, 19, 3, 20, 5],\n", | ||
| 457 | + " [10, 2, 20, 10],\n", | ||
| 458 | + " [7, 17, 5, 14, 15, 4, 13, 1, 17, 5, 2, 4, 4, 20],\n", | ||
| 459 | + " [3, 6, 12, 7],\n", | ||
| 460 | + " [10, 7, 10, 11, 16, 13, 1, 1, 9, 14, 16],\n", | ||
| 461 | + " [4, 19, 15, 17],\n", | ||
| 462 | + " [20, 9, 18, 11, 20, 14],\n", | ||
| 463 | + " [2, 2, 0, 13, 7, 9, 4, 16, 3, 5, 9, 17],\n", | ||
| 464 | + " [0, 9, 19, 12, 12, 3, 18, 6, 8, 8, 4],\n", | ||
| 465 | + " [11, 1, 2, 18, 6, 14, 4, 10, 17, 20, 1, 16],\n", | ||
| 466 | + " [2, 13, 17, 12, 7, 16, 6, 1, 4, 11, 10],\n", | ||
| 467 | + " [0, 15, 19],\n", | ||
| 468 | + " [15, 2, 18, 2, 0, 16, 2, 13, 15, 9, 14, 19, 20, 10],\n", | ||
| 469 | + " [10, 19, 5, 12, 18, 3, 17, 7],\n", | ||
| 470 | + " [18, 5, 15, 16, 20, 9, 18, 13, 0],\n", | ||
| 471 | + " [2, 11, 4, 15, 15],\n", | ||
| 472 | + " [17, 5, 12, 9, 15, 7, 5, 5, 11],\n", | ||
| 473 | + " [3, 15, 14, 15, 0],\n", | ||
| 474 | + " [3, 18, 3, 17, 17, 3, 11, 1, 4, 7, 1, 19],\n", | ||
| 475 | + " [17, 13, 19, 7, 10, 17, 7, 19, 11, 13, 12],\n", | ||
| 476 | + " [17, 2, 11, 7, 0, 12, 12, 20, 9, 20, 11, 7, 4, 1],\n", | ||
| 477 | + " [5, 4, 19, 2],\n", | ||
| 478 | + " [4, 10, 1, 0],\n", | ||
| 479 | + " [0, 17, 17, 17, 4],\n", | ||
| 480 | + " [9, 7, 10],\n", | ||
| 481 | + " [7, 9, 20, 5, 3, 0, 2, 16, 6, 3, 14, 2],\n", | ||
| 482 | + " [20, 18, 9, 12, 4, 17, 2, 4, 3],\n", | ||
| 483 | + " [15, 0, 5, 3, 2, 5, 20, 20, 3, 9, 3, 12, 5, 13, 9],\n", | ||
| 484 | + " [7, 16, 19, 1],\n", | ||
| 485 | + " [7, 10, 12],\n", | ||
| 486 | + " [7, 12, 9, 14, 6, 13, 16],\n", | ||
| 487 | + " [11, 4, 16, 1, 3, 16, 6, 3, 4, 20, 15, 17, 10, 7],\n", | ||
| 488 | + " [14, 8, 13],\n", | ||
| 489 | + " [6, 14, 17, 0, 3, 13, 19, 2, 10],\n", | ||
| 490 | + " [13, 8, 15, 17, 13, 10, 15, 6],\n", | ||
| 491 | + " [6, 14, 8, 14, 11, 4, 6, 18, 10],\n", | ||
| 492 | + " [18, 15, 4, 13, 6, 18],\n", | ||
| 493 | + " [15, 5, 7, 20, 20, 7, 6, 6, 12, 16, 20, 8, 13],\n", | ||
| 494 | + " [1, 11, 14],\n", | ||
| 495 | + " [14, 6, 6],\n", | ||
| 496 | + " [11, 5, 10, 16, 11, 11, 1, 14, 8, 2, 16, 14],\n", | ||
| 497 | + " [3, 5, 6, 12, 17, 3, 15, 0, 19, 5, 6, 18, 10, 20, 16],\n", | ||
| 498 | + " [16, 6, 15, 16, 14],\n", | ||
| 499 | + " [1, 5, 5, 18, 4, 2, 4, 20, 18],\n", | ||
| 500 | + " [6, 13, 0, 14, 3, 14, 13, 16, 2, 13],\n", | ||
| 501 | + " [12, 6, 20, 11, 9, 12, 9, 5],\n", | ||
| 502 | + " [15, 4, 5, 15, 13, 16, 3, 7, 12],\n", | ||
| 503 | + " [9, 13, 0, 7, 17, 16, 9, 13],\n", | ||
| 504 | + " [15, 20, 7, 12, 20, 7, 18, 4, 11, 15],\n", | ||
| 505 | + " [17, 10, 6, 9, 4, 5],\n", | ||
| 506 | + " [18, 9, 13, 13, 16],\n", | ||
| 507 | + " [8, 2, 16, 5],\n", | ||
| 508 | + " [9, 18, 17, 19, 13, 7],\n", | ||
| 509 | + " [15, 3, 3, 8, 0, 7, 7, 3],\n", | ||
| 510 | + " [15, 9, 18, 19, 7, 1, 7, 2, 6, 14],\n", | ||
| 511 | + " [19, 1, 2, 14, 11, 8],\n", | ||
| 512 | + " [9, 13, 14, 9, 1, 20, 7, 15, 4, 15, 6],\n", | ||
| 513 | + " [13, 20, 8, 4, 12, 8, 6, 13, 7],\n", | ||
| 514 | + " [20, 13, 8, 18, 9, 17],\n", | ||
| 515 | + " [0, 10, 5, 5, 2, 10, 12, 5, 12, 15, 11, 10, 14],\n", | ||
| 516 | + " [20, 19, 9, 16, 19, 16, 11, 3],\n", | ||
| 517 | + " [9, 19, 4, 8, 20, 4, 13],\n", | ||
| 518 | + " [15, 1, 6, 5, 9, 1],\n", | ||
| 519 | + " [20, 15, 9, 10, 0, 1],\n", | ||
| 520 | + " [0, 14, 10, 2, 7, 2, 2, 14, 13, 20, 12, 15],\n", | ||
| 521 | + " [6, 20, 7, 5, 1, 14, 17, 17, 14, 18],\n", | ||
| 522 | + " [6, 16, 10, 17, 8, 10, 9, 1, 18],\n", | ||
| 523 | + " [15, 15, 20, 12, 8, 0],\n", | ||
| 524 | + " [7, 9, 19, 0, 7, 19, 13, 8, 16, 15, 20],\n", | ||
| 525 | + " [10, 15, 12, 6, 7, 19, 14, 19, 9, 20, 14, 6],\n", | ||
| 526 | + " [3, 3, 5, 12, 14, 17, 20, 11, 6],\n", | ||
| 527 | + " [12, 18, 11, 9, 4, 17, 4],\n", | ||
| 528 | + " [7, 8, 19, 11, 13, 4, 4, 6, 7, 14, 12],\n", | ||
| 529 | + " [8, 2, 5, 18, 18],\n", | ||
| 530 | + " [20, 6, 4, 2, 15, 1, 15, 16],\n", | ||
| 531 | + " [0, 12, 13],\n", | ||
| 532 | + " [5, 6, 16, 19, 11, 11, 20, 10, 19, 14, 12, 7],\n", | ||
| 533 | + " [3, 16, 18, 10, 2],\n", | ||
| 534 | + " [11, 11, 16],\n", | ||
| 535 | + " [20, 9, 18, 6, 10, 8, 6, 18, 16, 6],\n", | ||
| 536 | + " [10, 0, 0, 13, 2, 16, 11, 2, 5, 17, 0],\n", | ||
| 537 | + " [14, 3, 10, 7, 2, 16],\n", | ||
| 538 | + " [7, 3, 11, 3, 11],\n", | ||
| 539 | + " [11, 0, 17, 16],\n", | ||
| 540 | + " [7, 8, 10, 16, 15, 14, 8, 20, 4, 3, 17, 7],\n", | ||
| 541 | + " [14, 11, 17, 13, 11, 7, 19, 11, 17, 2, 13, 19, 3],\n", | ||
| 542 | + " [5, 14, 14, 13, 6, 17, 4, 14, 11],\n", | ||
| 543 | + " [15, 14, 20, 19, 3, 8, 16, 0, 4, 12, 6, 4, 1, 20, 2],\n", | ||
| 544 | + " [8, 11, 20],\n", | ||
| 545 | + " [16, 16, 5, 2, 8, 13, 12, 6, 8, 9, 5, 8, 5, 19],\n", | ||
| 546 | + " [0, 5, 17, 15, 16, 11, 3, 4, 0, 3, 5],\n", | ||
| 547 | + " [1, 4, 0, 1, 1, 15, 5, 8, 12, 10, 10, 1, 10, 10, 10],\n", | ||
| 548 | + " [15, 14, 4, 7, 13, 19, 19, 15, 12, 14, 7, 8, 11, 19, 10],\n", | ||
| 549 | + " [18, 12, 6, 11, 1, 2, 7],\n", | ||
| 550 | + " [2, 12, 3, 20, 7, 0, 14, 15, 1, 4, 19],\n", | ||
| 551 | + " [9, 0, 4, 19, 9, 20, 14, 1, 11],\n", | ||
| 552 | + " [17, 8, 0, 1],\n", | ||
| 553 | + " [13, 19, 1, 0, 1, 4, 19, 10],\n", | ||
| 554 | + " [19, 9, 2, 18],\n", | ||
| 555 | + " [6, 0, 4, 5, 7, 13, 3, 14, 17, 12, 7, 8, 19, 7],\n", | ||
| 556 | + " [12, 10, 17, 6, 14, 19, 4, 19, 14, 16, 3],\n", | ||
| 557 | + " [12, 15, 2, 0, 10, 16, 15, 10, 16, 2],\n", | ||
| 558 | + " [20, 8, 13, 19, 17, 16, 0],\n", | ||
| 559 | + " [7, 15, 10, 19, 14, 1, 18, 16, 5, 18, 17, 1],\n", | ||
| 560 | + " [7, 0, 12, 4, 15, 19, 9, 17, 8, 9, 20, 16, 11, 13],\n", | ||
| 561 | + " [3, 18, 13, 6, 10, 16, 19, 15, 19, 15, 15, 0, 5, 17],\n", | ||
| 562 | + " [7, 5, 20, 2, 17, 16, 6, 2, 18],\n", | ||
| 563 | + " [12, 0, 4],\n", | ||
| 564 | + " [7, 14, 15, 8, 10, 2, 20, 7, 13, 17, 11, 2],\n", | ||
| 565 | + " [14, 3, 10, 2, 15, 20, 4, 14, 18, 17, 1],\n", | ||
| 566 | + " [11, 15, 2, 3, 20, 0, 18, 10, 20, 16, 14, 10, 15, 6, 1],\n", | ||
| 567 | + " [6, 12, 11],\n", | ||
| 568 | + " [18, 15, 3, 14, 19, 6],\n", | ||
| 569 | + " [16, 4, 2, 18, 9, 19, 18, 2, 8, 11, 14],\n", | ||
| 570 | + " [7, 12, 5, 5, 18, 4],\n", | ||
| 571 | + " [11, 11, 11],\n", | ||
| 572 | + " [17, 2, 9, 12],\n", | ||
| 573 | + " [18, 3, 1, 8, 14, 13, 0],\n", | ||
| 574 | + " [19, 11, 2, 8, 5, 1, 20, 18, 1, 2, 8, 2],\n", | ||
| 575 | + " [19, 17, 12, 20, 10],\n", | ||
| 576 | + " [20, 20, 3, 11],\n", | ||
| 577 | + " [16, 14, 1, 3, 20, 0, 19, 14, 16, 15, 17, 6],\n", | ||
| 578 | + " [9, 8, 18, 13, 12, 2, 9, 12, 7, 8, 19],\n", | ||
| 579 | + " [1, 3, 8, 9, 2, 12, 5],\n", | ||
| 580 | + " [19, 4, 7, 10, 18, 13, 10, 13],\n", | ||
| 581 | + " [8, 1, 6, 19, 7, 8],\n", | ||
| 582 | + " [10, 12, 9, 7, 2, 5, 4, 1, 20, 14, 0, 13],\n", | ||
| 583 | + " [1, 2, 19, 7, 16, 19, 0, 15, 20, 0, 1, 6],\n", | ||
| 584 | + " [1, 14, 15, 20, 3, 7],\n", | ||
| 585 | + " [5, 3, 1, 8],\n", | ||
| 586 | + " [8, 7, 9, 8, 6, 19, 7, 8, 10, 13, 17],\n", | ||
| 587 | + " [0, 12, 6, 2, 6, 4, 20, 15, 10, 2, 10],\n", | ||
| 588 | + " [16, 1, 16, 17, 15, 14, 16, 14, 4, 14, 0, 18, 2, 6, 5],\n", | ||
| 589 | + " [14, 13, 5],\n", | ||
| 590 | + " [6, 1, 20, 14, 11, 3, 12, 14, 3, 11, 11, 0],\n", | ||
| 591 | + " [10, 14, 13, 20, 13, 13, 17],\n", | ||
| 592 | + " [20, 0, 0, 14, 5, 15, 18, 10, 5, 16, 14, 12],\n", | ||
| 593 | + " [5, 2, 1, 15, 6, 13, 15, 8, 7, 6, 10],\n", | ||
| 594 | + " [2, 15, 8, 1, 4, 10, 1, 7],\n", | ||
| 595 | + " [9, 7, 13, 12, 17, 20, 5, 15, 20],\n", | ||
| 596 | + " [4, 3, 18, 6, 18, 4],\n", | ||
| 597 | + " [3, 4, 10, 13, 1, 5, 20],\n", | ||
| 598 | + " [14, 14, 1, 14, 9, 15, 2, 14, 2, 19, 11, 10, 4],\n", | ||
| 599 | + " [9, 13, 2, 9, 3, 20, 10, 14],\n", | ||
| 600 | + " [1, 20, 3],\n", | ||
| 601 | + " [1, 17, 12, 19, 16, 14, 18, 5, 1],\n", | ||
| 602 | + " [2, 14, 13, 9, 2, 10],\n", | ||
| 603 | + " [8, 5, 4, 10, 12, 14, 15],\n", | ||
| 604 | + " [20, 8, 16, 6, 20, 16, 4, 4, 7, 6, 19, 7, 9, 1],\n", | ||
| 605 | + " [4, 8, 0, 14, 17],\n", | ||
| 606 | + " [19, 7, 15, 16, 18, 19, 12, 4, 15, 1, 10, 16],\n", | ||
| 607 | + " [20, 3, 2, 17, 8, 5, 20, 16, 10, 9, 10, 1],\n", | ||
| 608 | + " [2, 12, 14, 13, 18, 7, 9, 13],\n", | ||
| 609 | + " [4, 11, 12, 2, 14, 20, 5, 6, 0, 16, 3, 8],\n", | ||
| 610 | + " [18, 12, 20, 14, 19, 18, 3, 6],\n", | ||
| 611 | + " [12, 15, 2, 4, 20, 16, 16, 9, 19, 15, 3, 9, 9, 1, 9],\n", | ||
| 612 | + " [18, 1, 7, 7, 18, 14, 2, 2, 15, 3, 13],\n", | ||
| 613 | + " [5, 7, 2, 17, 13, 1, 9, 3, 15, 17, 18, 4, 20, 5],\n", | ||
| 614 | + " [12, 4, 1, 17, 17, 0, 1],\n", | ||
| 615 | + " [17, 16, 10, 7, 15, 8, 1, 6, 5, 17, 10, 15, 13, 15],\n", | ||
| 616 | + " [9, 13, 12],\n", | ||
| 617 | + " [15, 7, 6, 2, 1, 2, 10, 17, 8, 4, 14, 15, 15],\n", | ||
| 618 | + " [16, 13, 7, 0, 12, 16, 19, 5],\n", | ||
| 619 | + " [20, 10, 10],\n", | ||
| 620 | + " [20, 3, 3, 16, 8, 17, 8, 16, 16, 8],\n", | ||
| 621 | + " [3, 9, 1, 5, 6],\n", | ||
| 622 | + " [15, 15, 1, 11, 15, 17, 1, 9, 7, 16, 20, 10],\n", | ||
| 623 | + " [19, 3, 4, 7, 2],\n", | ||
| 624 | + " [3, 7, 14, 8, 13, 3, 19, 9, 17, 2, 17, 0, 11, 19],\n", | ||
| 625 | + " [3, 7, 10, 1, 8, 19, 9, 15, 17, 5, 20, 0],\n", | ||
| 626 | + " [0, 2, 16, 2, 7, 0, 15, 17, 14, 15, 8, 10, 19, 19],\n", | ||
| 627 | + " [3, 17, 6, 2, 4, 7, 5, 5, 8, 11, 10, 3, 1],\n", | ||
| 628 | + " [1, 15, 4, 16, 17, 4, 7],\n", | ||
| 629 | + " [10, 20, 16, 7, 2, 12],\n", | ||
| 630 | + " [0, 13, 7, 1, 17, 12, 2, 16, 15, 3, 10, 17],\n", | ||
| 631 | + " [1, 20, 1, 20, 10, 8],\n", | ||
| 632 | + " [12, 5, 7, 5, 11, 13, 7, 8],\n", | ||
| 633 | + " [18, 15, 18, 13, 17, 4],\n", | ||
| 634 | + " [12, 14, 0, 15, 6, 1, 2],\n", | ||
| 635 | + " [15, 17, 18, 0, 18, 4, 0, 11, 18],\n", | ||
| 636 | + " [14, 5, 11, 18, 10, 8, 5, 3, 0, 15, 8, 1, 17],\n", | ||
| 637 | + " [8, 4, 19, 6, 12, 8, 7, 4, 7, 1, 6, 3],\n", | ||
| 638 | + " [17, 5, 14, 7, 16, 1, 5, 19, 13, 16, 17, 0],\n", | ||
| 639 | + " [7, 8, 2, 5, 9, 10, 15, 10, 6, 5, 18, 6, 19, 5, 11],\n", | ||
| 640 | + " [8, 1, 10, 7, 3, 19, 11, 3],\n", | ||
| 641 | + " [1, 16, 13, 20, 16, 8, 8, 5, 11, 6, 9],\n", | ||
| 642 | + " [4, 15, 11, 10, 7, 14, 18, 4, 14, 12, 18, 7],\n", | ||
| 643 | + " [0, 2, 19, 13, 6, 2, 13, 12, 4, 12, 15],\n", | ||
| 644 | + " [5, 15, 15, 1, 10, 16, 7, 0, 7, 10, 3, 9],\n", | ||
| 645 | + " [16, 12, 17, 16, 12, 7, 2, 20, 1],\n", | ||
| 646 | + " [0, 11, 14, 7, 5, 9, 8, 10],\n", | ||
| 647 | + " [1, 12, 11, 14, 19, 6, 15, 19, 1],\n", | ||
| 648 | + " [10, 17, 1, 0, 18, 15, 16, 8],\n", | ||
| 649 | + " [18, 9, 17, 13, 9, 8, 6, 10, 3, 10, 18, 10, 15],\n", | ||
| 650 | + " [16, 0, 14, 3, 15, 5],\n", | ||
| 651 | + " [11, 3, 0, 5, 6, 2, 18, 19, 3, 6],\n", | ||
| 652 | + " [5, 11, 20, 1],\n", | ||
| 653 | + " [13, 11, 18, 2, 0, 14, 15, 15, 16],\n", | ||
| 654 | + " [15, 8, 6, 17, 3, 11, 9],\n", | ||
| 655 | + " [2, 9, 1, 8, 16, 2, 5, 7],\n", | ||
| 656 | + " [1, 11, 11, 5, 4, 11, 2, 9, 18, 4, 20, 4],\n", | ||
| 657 | + " [0, 13, 16, 15, 19, 4, 7, 8, 2, 11],\n", | ||
| 658 | + " [1, 6, 13, 6, 2],\n", | ||
| 659 | + " [8, 13, 7, 18, 12, 0, 18, 5, 15, 2, 9, 9, 0],\n", | ||
| 660 | + " [12, 12, 1, 0, 12, 7, 8, 4, 16, 17, 10, 13, 13],\n", | ||
| 661 | + " [4, 12, 6, 12, 0, 5],\n", | ||
| 662 | + " [4, 15, 12, 9, 20],\n", | ||
| 663 | + " [17, 5, 6, 14, 12, 2, 0, 5, 4, 3, 19, 20, 0, 3],\n", | ||
| 664 | + " [20, 18, 1, 9, 19, 14, 8],\n", | ||
| 665 | + " [1, 4, 11, 2, 6, 20, 1, 0, 7, 16, 16, 19, 5, 20],\n", | ||
| 666 | + " [14, 1, 1, 3, 16, 8, 5, 19],\n", | ||
| 667 | + " [16, 4, 19, 9, 17, 13, 20, 7],\n", | ||
| 668 | + " [0, 19, 6, 19, 4, 10, 11, 1, 13, 1],\n", | ||
| 669 | + " [9, 3, 19, 11],\n", | ||
| 670 | + " [16, 13, 12, 2, 15, 19],\n", | ||
| 671 | + " [9, 15, 7, 20, 3, 15, 4, 10, 10, 19, 7, 20, 11],\n", | ||
| 672 | + " [6, 12, 13, 2, 11, 13, 12, 6, 6, 12, 14],\n", | ||
| 673 | + " [17, 10, 15, 17, 18, 14],\n", | ||
| 674 | + " [5, 12, 2, 1, 19, 9, 17, 5, 0],\n", | ||
| 675 | + " [15, 13, 1, 8, 15],\n", | ||
| 676 | + " [7, 0, 7, 19, 17],\n", | ||
| 677 | + " [7, 10, 13, 1, 2, 7, 13, 16, 10, 4, 18],\n", | ||
| 678 | + " [20, 11, 11],\n", | ||
| 679 | + " [4, 16, 0, 0, 7, 10, 17, 1, 17, 7],\n", | ||
| 680 | + " [10, 4, 8, 7, 13, 9, 12, 2, 20, 16, 0],\n", | ||
| 681 | + " [2, 3, 6, 3, 19, 20],\n", | ||
| 682 | + " [12, 7, 13, 15, 18, 10, 14, 2],\n", | ||
| 683 | + " [8, 0, 3],\n", | ||
| 684 | + " [2, 17, 18, 13, 7, 17, 4, 0, 8, 18, 16],\n", | ||
| 685 | + " [15, 4, 16, 3, 5, 14, 4, 15, 0, 8, 7, 18, 4, 0],\n", | ||
| 686 | + " [9, 14, 0, 18, 0, 14, 5, 0, 4, 14, 3, 0],\n", | ||
| 687 | + " [5, 12, 10, 12, 10, 19, 11, 2, 8, 1, 8, 4, 16, 0],\n", | ||
| 688 | + " [11, 0, 10, 18, 10, 19, 19, 1, 0, 19, 8, 1],\n", | ||
| 689 | + " [13, 5, 18, 3],\n", | ||
| 690 | + " [1, 6, 10],\n", | ||
| 691 | + " [1, 17, 18, 8, 3, 15, 4, 12, 8, 16, 1, 8, 16, 18],\n", | ||
| 692 | + " [1, 2, 12, 11, 10, 7, 18, 2, 7, 11, 0, 7, 16, 2],\n", | ||
| 693 | + " [15, 19, 15, 3, 11],\n", | ||
| 694 | + " [19, 17, 0],\n", | ||
| 695 | + " [0, 14, 9, 18, 1, 8, 12, 20, 18, 17, 6, 8],\n", | ||
| 696 | + " [2, 14, 17, 19, 9, 5, 7, 10, 14, 8, 14, 18, 4],\n", | ||
| 697 | + " [14, 7, 4, 9, 14, 5, 19, 6, 4],\n", | ||
| 698 | + " [19, 3, 20, 18, 1, 3, 20],\n", | ||
| 699 | + " [13, 18, 0, 18, 3, 9, 5, 0, 18],\n", | ||
| 700 | + " [7, 13, 15, 20, 12, 6, 10, 0, 9, 15, 10],\n", | ||
| 701 | + " [16, 0, 6],\n", | ||
| 702 | + " [3, 15, 13, 19, 14, 15],\n", | ||
| 703 | + " [0, 0, 15, 17, 3, 1, 9, 15, 20, 14, 16, 17, 2, 10],\n", | ||
| 704 | + " [1, 14, 9, 4, 11, 2, 13, 2, 4],\n", | ||
| 705 | + " [0, 7, 14, 3, 3, 20, 7, 17, 15, 5, 2],\n", | ||
| 706 | + " [3, 17, 3, 0, 7, 4, 2, 0, 17, 3, 10, 4, 3, 14],\n", | ||
| 707 | + " [7, 14, 15, 16, 7, 6],\n", | ||
| 708 | + " [7, 10, 19],\n", | ||
| 709 | + " [10, 12, 3, 4],\n", | ||
| 710 | + " [20, 12, 20, 5, 4, 2, 14, 8, 14, 17, 11, 20, 2],\n", | ||
| 711 | + " [18, 15, 14, 6, 8, 6, 15, 3, 9, 16, 4, 19, 8, 0],\n", | ||
| 712 | + " [2, 4, 20, 14, 6],\n", | ||
| 713 | + " [5, 4, 18, 17, 19, 16, 10, 12, 13, 2, 20, 8, 17, 4, 1],\n", | ||
| 714 | + " [7, 7, 15, 10, 9, 14, 15, 12, 5, 5, 13, 5, 10, 16, 16],\n", | ||
| 715 | + " [20, 19, 8],\n", | ||
| 716 | + " [8, 13, 14, 8, 4, 4, 1, 20, 4, 19],\n", | ||
| 717 | + " [3, 10, 2],\n", | ||
| 718 | + " [20, 17, 12, 18, 2, 19, 6, 4, 17, 8, 16, 20, 12, 9],\n", | ||
| 719 | + " [16, 20, 10, 7, 15, 20, 20, 12, 17, 14, 3],\n", | ||
| 720 | + " [15, 4, 10, 2, 20, 14, 20, 11, 17],\n", | ||
| 721 | + " [1, 10, 3, 5, 20],\n", | ||
| 722 | + " [3, 13, 5],\n", | ||
| 723 | + " [7, 18, 16, 16, 11, 3, 9, 7, 2],\n", | ||
| 724 | + " [1, 8, 18, 17, 0, 17, 1, 17, 1, 6, 16],\n", | ||
| 725 | + " [18, 12, 16, 3, 1, 2, 1, 11, 0, 2],\n", | ||
| 726 | + " [5, 18, 16, 16, 7, 16, 11, 16, 16, 1, 2, 7, 9, 14],\n", | ||
| 727 | + " [13, 11, 4],\n", | ||
| 728 | + " [2, 20, 4, 19, 15, 5, 1, 16, 20],\n", | ||
| 729 | + " [1, 16, 10, 8, 6, 20, 12, 20, 20, 7, 14, 10, 16, 3, 6],\n", | ||
| 730 | + " [20, 12, 19],\n", | ||
| 731 | + " [11, 15, 5, 15, 1, 14, 3, 16],\n", | ||
| 732 | + " [14, 17, 14, 19, 2, 1, 7, 10, 16, 12],\n", | ||
| 733 | + " [7, 2, 8, 6, 6],\n", | ||
| 734 | + " [10, 16, 1, 19, 2, 14, 17, 9],\n", | ||
| 735 | + " [3, 16, 4, 9, 15, 7, 9, 19],\n", | ||
| 736 | + " [15, 6, 12, 16, 4, 17],\n", | ||
| 737 | + " [17, 16, 18, 3, 14, 5, 4, 10, 6, 12, 10],\n", | ||
| 738 | + " [17, 2, 7, 5],\n", | ||
| 739 | + " [10, 10, 20, 12, 16, 6, 6],\n", | ||
| 740 | + " [20, 0, 7, 16, 11, 9, 1, 8, 16, 6, 19],\n", | ||
| 741 | + " [8, 10, 1, 16, 17, 19, 16, 17, 2, 16, 8, 4, 18, 4, 4],\n", | ||
| 742 | + " [17, 0, 0, 2, 17, 17, 11, 18, 19, 6, 10, 3, 15, 9],\n", | ||
| 743 | + " [18, 13, 10, 5, 6, 17, 4, 19, 18, 1, 14, 9, 14, 4],\n", | ||
| 744 | + " [20, 10, 12, 3],\n", | ||
| 745 | + " [7, 9, 15, 6, 15, 15, 9, 19, 11],\n", | ||
| 746 | + " [10, 4, 18, 16, 14, 2],\n", | ||
| 747 | + " [0, 16, 12, 3, 17, 4, 17, 5, 5, 8, 12, 18, 8, 11],\n", | ||
| 748 | + " [18, 13, 13, 10, 2],\n", | ||
| 749 | + " [17, 17, 16, 5, 7, 2, 16, 9],\n", | ||
| 750 | + " [14, 2, 20, 1, 14, 5, 7, 4, 16, 13, 5, 0, 12, 2, 9],\n", | ||
| 751 | + " [5, 5, 0, 1, 1, 11, 5, 19, 15, 2, 12, 7, 7, 7],\n", | ||
| 752 | + " [10, 20, 10, 19, 8],\n", | ||
| 753 | + " [5, 19, 8, 3, 17, 16, 10, 16, 20, 4, 2, 15, 9],\n", | ||
| 754 | + " [1, 8, 15, 8, 19, 1, 14, 15, 3, 7, 13, 20, 0, 10],\n", | ||
| 755 | + " [10, 4, 7, 20, 16, 12, 0],\n", | ||
| 756 | + " [11, 3, 5, 15, 2, 14, 8, 2],\n", | ||
| 757 | + " [1, 17, 6, 13, 19, 3],\n", | ||
| 758 | + " [20, 0, 3, 7, 7],\n", | ||
| 759 | + " [17, 1, 20, 7, 8, 18, 4, 10, 19, 1, 14, 6],\n", | ||
| 760 | + " [5, 17, 20, 10, 1, 13, 19, 2, 3, 3],\n", | ||
| 761 | + " [7, 8, 4, 20, 5, 13, 20, 5, 4, 19, 3, 2, 13, 19, 1],\n", | ||
| 762 | + " [16, 20, 16],\n", | ||
| 763 | + " [5, 17, 6, 2, 16, 1, 8],\n", | ||
| 764 | + " [8, 5, 14, 0, 18, 15, 20, 20, 3, 15],\n", | ||
| 765 | + " [12, 7, 2, 18, 4, 16, 20, 2, 4, 16],\n", | ||
| 766 | + " [4, 7, 12, 13, 13],\n", | ||
| 767 | + " [0, 1, 16, 7, 12, 15, 1, 12],\n", | ||
| 768 | + " [4, 4, 9, 12],\n", | ||
| 769 | + " [4, 14, 5],\n", | ||
| 770 | + " [3, 9, 8, 14, 14, 20, 15, 8, 8, 11, 20, 12, 20],\n", | ||
| 771 | + " [0, 18, 11, 17, 13, 18, 6, 18, 11, 10, 19, 2, 11, 7, 8],\n", | ||
| 772 | + " [4, 11, 10, 12],\n", | ||
| 773 | + " [3, 12, 8, 2, 6, 15],\n", | ||
| 774 | + " [0, 6, 9, 14],\n", | ||
| 775 | + " [15, 17, 16],\n", | ||
| 776 | + " [13, 19, 2],\n", | ||
| 777 | + " [0, 1, 13],\n", | ||
| 778 | + " [13, 18, 16, 14, 16, 2, 5, 5],\n", | ||
| 779 | + " [10, 1, 6, 15, 17, 19, 13, 8, 20, 1, 17, 16],\n", | ||
| 780 | + " [13, 10, 4],\n", | ||
| 781 | + " [0, 2, 4],\n", | ||
| 782 | + " [3, 3, 5, 9, 14, 17, 12, 11, 2, 6, 5, 1, 15, 15],\n", | ||
| 783 | + " [3, 4, 11, 1, 17, 16],\n", | ||
| 784 | + " [11, 2, 18],\n", | ||
| 785 | + " [3, 10, 19, 17, 12, 12, 10, 2, 9, 16, 9],\n", | ||
| 786 | + " [8, 11, 15, 6, 19, 11, 19],\n", | ||
| 787 | + " [4, 9, 7, 0, 6, 7, 12, 4, 9, 20, 12],\n", | ||
| 788 | + " [6, 13, 16, 6, 18, 6, 11, 15, 17],\n", | ||
| 789 | + " [4, 11, 16],\n", | ||
| 790 | + " [7, 7, 15, 2],\n", | ||
| 791 | + " [0, 11, 8, 5, 17, 13, 2, 9, 10, 3, 17, 17],\n", | ||
| 792 | + " [10, 3, 6, 11, 17, 0, 18, 20, 0, 7, 2, 7, 5],\n", | ||
| 793 | + " [16, 3, 1, 10, 11],\n", | ||
| 794 | + " [16, 15, 5, 0, 16, 1, 6, 10, 6, 1, 7, 16, 13, 0],\n", | ||
| 795 | + " [10, 17, 11, 18, 19, 12, 12],\n", | ||
| 796 | + " [2, 7, 1, 11, 8, 3, 0, 16, 14, 16, 3, 11, 17],\n", | ||
| 797 | + " [2, 11, 14, 16, 3, 0, 0, 17, 13, 20, 6, 12],\n", | ||
| 798 | + " [15, 16, 20, 16, 2, 2, 3, 7, 1, 5],\n", | ||
| 799 | + " [0, 15, 14, 12, 9, 16, 17, 5],\n", | ||
| 800 | + " [7, 0, 8],\n", | ||
| 801 | + " [13, 6, 18, 1, 15, 13, 4, 16, 13, 3],\n", | ||
| 802 | + " [0, 15, 18, 3],\n", | ||
| 803 | + " [6, 1, 6, 6],\n", | ||
| 804 | + " [9, 18, 13, 7, 13, 2, 20, 14, 6, 20, 6, 6],\n", | ||
| 805 | + " [13, 8, 12, 3, 6, 6, 11, 4, 9, 14, 6, 12, 1, 3, 5],\n", | ||
| 806 | + " [14, 3, 2, 14, 4, 10],\n", | ||
| 807 | + " [3, 0, 11, 12, 6, 9, 3, 13, 12, 2],\n", | ||
| 808 | + " [15, 14, 2, 1, 1, 9, 17, 15, 15, 4, 13, 12, 1, 9],\n", | ||
| 809 | + " [4, 11, 20, 0, 13, 18, 3, 0, 0, 17, 18],\n", | ||
| 810 | + " [14, 16, 7],\n", | ||
| 811 | + " [14, 8, 18, 4, 1, 0],\n", | ||
| 812 | + " [7, 7, 0, 1, 16, 10, 1, 19, 9, 0],\n", | ||
| 813 | + " [9, 14, 3, 19, 14, 10, 17, 13, 8, 19, 18, 19, 5],\n", | ||
| 814 | + " [18, 6, 6, 0, 8, 3, 10, 4, 14],\n", | ||
| 815 | + " [0, 3, 19, 10, 18],\n", | ||
| 816 | + " [1, 18, 11, 2, 5, 3, 11, 5, 11, 4, 4, 16, 3],\n", | ||
| 817 | + " [4, 2, 0, 9, 17, 3, 2, 16, 19, 3, 2, 8, 18],\n", | ||
| 818 | + " [19, 11, 2, 10, 9, 0],\n", | ||
| 819 | + " [7, 18, 3, 16, 10, 10],\n", | ||
| 820 | + " [2, 19, 5, 11, 20, 15],\n", | ||
| 821 | + " [17, 12, 0, 20, 9, 0, 15, 13, 15, 8, 11],\n", | ||
| 822 | + " [6, 5, 7, 16, 5, 11, 15, 16],\n", | ||
| 823 | + " [9, 15, 8, 16, 10, 13, 14, 2, 4, 7, 10, 3, 17],\n", | ||
| 824 | + " [0, 6, 15, 6, 16, 10, 8, 9, 4, 14],\n", | ||
| 825 | + " [12, 20, 3, 0, 17, 4, 8, 1, 8],\n", | ||
| 826 | + " [20, 4, 8],\n", | ||
| 827 | + " [17, 9, 10, 8, 8, 20, 0],\n", | ||
| 828 | + " [7, 2, 14, 3, 2],\n", | ||
| 829 | + " [9, 20, 10],\n", | ||
| 830 | + " [15, 7, 16, 1, 18, 16, 20, 5, 14],\n", | ||
| 831 | + " [12, 11, 8, 16, 1, 1, 10, 2, 20, 17],\n", | ||
| 832 | + " [4, 8, 10, 14, 8],\n", | ||
| 833 | + " [9, 13, 1, 0, 10, 0],\n", | ||
| 834 | + " [10, 13, 7, 19, 0],\n", | ||
| 835 | + " [5, 8, 5],\n", | ||
| 836 | + " [4, 14, 16, 20, 18, 12, 9, 10, 5, 20, 0, 3, 15, 7],\n", | ||
| 837 | + " [10, 6, 3, 6, 1, 19, 15, 10, 10, 13, 6, 20, 12, 5, 17],\n", | ||
| 838 | + " [17, 17, 10, 8, 19, 14, 14, 19, 3, 4, 10, 5, 11, 20, 20],\n", | ||
| 839 | + " [5, 11, 9, 14, 12, 11, 20, 13, 11, 16, 15, 0, 12, 20, 16],\n", | ||
| 840 | + " [11, 16, 15, 8, 7, 9, 13, 10, 4, 18, 1, 1, 9, 0],\n", | ||
| 841 | + " [12, 15, 18],\n", | ||
| 842 | + " [14, 18, 6, 6, 1],\n", | ||
| 843 | + " [16, 6, 12, 11],\n", | ||
| 844 | + " [12, 19, 17, 0, 18, 10, 11, 2, 12, 4, 5, 16],\n", | ||
| 845 | + " [8, 20, 15, 5, 16, 7, 20, 14, 15, 17, 1],\n", | ||
| 846 | + " [5, 7, 5, 13, 2, 18, 5, 2, 2, 12, 20, 14],\n", | ||
| 847 | + " [2, 11, 4, 9],\n", | ||
| 848 | + " [2, 13, 1, 5, 4],\n", | ||
| 849 | + " [11, 5, 5, 2, 17, 8, 5, 17, 13, 5, 9],\n", | ||
| 850 | + " [20, 19, 6, 3, 10, 8, 6, 0],\n", | ||
| 851 | + " [2, 20, 18, 6, 14, 15, 13, 12, 10, 12, 8, 20, 16, 4],\n", | ||
| 852 | + " [14, 0, 13, 9],\n", | ||
| 853 | + " [13, 20, 18, 1, 3, 5, 0, 18, 20],\n", | ||
| 854 | + " [7, 14, 5, 12, 12, 8, 9, 6, 20, 16],\n", | ||
| 855 | + " [18, 7, 12, 5, 5, 19, 19, 4, 10, 8, 11, 18, 17, 19, 6],\n", | ||
| 856 | + " [2, 7, 17, 16, 19, 18, 7, 9, 12, 3, 6, 7, 10],\n", | ||
| 857 | + " [6, 10, 11, 14, 3, 18, 10, 2, 13, 0, 20, 11, 20, 1],\n", | ||
| 858 | + " [8, 12, 6, 5, 4, 20, 12, 8],\n", | ||
| 859 | + " [7, 8, 1, 16, 10, 11, 19, 18],\n", | ||
| 860 | + " [16, 0, 17, 1, 3, 18],\n", | ||
| 861 | + " [3, 6, 17, 19, 17, 1, 13, 13, 13],\n", | ||
| 862 | + " [2, 20, 16, 5, 19, 16, 6, 4, 2],\n", | ||
| 863 | + " [17, 12, 15, 2, 11, 16, 19, 15, 3, 20],\n", | ||
| 864 | + " [8, 20, 20, 9, 2, 4, 14, 1, 13],\n", | ||
| 865 | + " [17, 0, 19, 7, 6, 10, 2, 5, 7, 17, 17, 4, 16],\n", | ||
| 866 | + " [18, 17, 15, 20, 15, 0, 6, 7, 20],\n", | ||
| 867 | + " [17, 13, 15, 15, 19, 11, 9, 10, 8],\n", | ||
| 868 | + " [20, 20, 13, 15, 6, 16, 11, 14, 14, 6],\n", | ||
| 869 | + " [2, 10, 3, 15, 3, 14, 4, 12, 19],\n", | ||
| 870 | + " [1, 12, 8, 16],\n", | ||
| 871 | + " [6, 10, 10, 9, 20, 1, 15, 3, 10, 5, 8, 0, 13, 7, 10],\n", | ||
| 872 | + " [11, 15, 2],\n", | ||
| 873 | + " [4, 4, 20, 4, 7, 7, 4, 7, 2, 9, 18, 4],\n", | ||
| 874 | + " [13, 7, 1, 20],\n", | ||
| 875 | + " [12, 14, 10, 18, 12, 13, 5, 13, 18, 16, 12, 4, 1, 16, 9],\n", | ||
| 876 | + " [20, 7, 15],\n", | ||
| 877 | + " [5, 14, 0, 7, 3, 1, 9, 15, 11, 10, 20, 2, 18, 6],\n", | ||
| 878 | + " [11, 19, 12, 10, 1, 5, 20, 19, 8, 10, 14, 9, 14, 16, 3],\n", | ||
| 879 | + " [5, 15, 18, 8, 2],\n", | ||
| 880 | + " [7, 17, 20, 12],\n", | ||
| 881 | + " [19, 14, 9, 3, 14, 4, 17, 15, 14, 12, 16],\n", | ||
| 882 | + " [3, 18, 6, 15, 10, 3, 15, 11, 3, 5, 14],\n", | ||
| 883 | + " [8, 15, 19, 16, 4],\n", | ||
| 884 | + " [8, 12, 18, 0, 9],\n", | ||
| 885 | + " [5, 4, 1, 7, 9, 5, 10, 14, 19, 7, 4, 0],\n", | ||
| 886 | + " [1, 15, 11, 5, 11, 14, 12, 20, 17, 4, 13, 12],\n", | ||
| 887 | + " [11, 9, 11, 18, 5],\n", | ||
| 888 | + " [9, 18, 19, 0, 4, 1, 8, 0, 4, 7, 8, 19, 3],\n", | ||
| 889 | + " [3, 9, 13, 4, 1, 11, 3],\n", | ||
| 890 | + " [3, 4, 14, 15, 9, 2, 16, 0, 17, 8, 2, 3],\n", | ||
| 891 | + " [11, 12, 18, 11, 11, 10, 19, 16, 10, 9],\n", | ||
| 892 | + " [11, 19, 9, 3, 4, 18, 8, 15, 4, 3, 15, 17, 18, 1, 13],\n", | ||
| 893 | + " [14, 20, 0, 1, 2, 19, 0, 4, 8, 2, 8, 11, 14]]" | ||
| 894 | + ] | ||
| 895 | + }, | ||
| 896 | + "execution_count": 46, | ||
| 897 | + "metadata": {}, | ||
| 898 | + "output_type": "execute_result" | ||
| 899 | + } | ||
| 900 | + ], | ||
| 901 | + "source": [ | ||
| 902 | + "data_value #模拟展示用户搜藏图书id" | ||
| 903 | + ] | ||
| 904 | + }, | ||
| 905 | + { | ||
| 906 | + "cell_type": "code", | ||
| 907 | + "execution_count": 16, | ||
| 908 | + "metadata": { | ||
| 909 | + "collapsed": false | ||
| 910 | + }, | ||
| 911 | + "outputs": [ | ||
| 912 | + { | ||
| 913 | + "name": "stdout", | ||
| 914 | + "output_type": "stream", | ||
| 915 | + "text": [ | ||
| 916 | + "563 房地产经济专业知识与实务历年真题及名师密押试卷\n", | ||
| 917 | + "296 金博士一点全通\n", | ||
| 918 | + "1236 会计电算化应用教程\n", | ||
| 919 | + "Name: title, dtype: object\n" | ||
| 920 | + ] | ||
| 921 | + } | ||
| 922 | + ], | ||
| 923 | + "source": [ | ||
| 924 | + "print books[[563,296,1236]] #验证id号和书名一一对应" | ||
| 925 | + ] | ||
| 926 | + }, | ||
| 927 | + { | ||
| 928 | + "cell_type": "code", | ||
| 929 | + "execution_count": 53, | ||
| 930 | + "metadata": { | ||
| 931 | + "collapsed": false | ||
| 932 | + }, | ||
| 933 | + "outputs": [ | ||
| 934 | + { | ||
| 935 | + "data": { | ||
| 936 | + "text/plain": [ | ||
| 937 | + "[[frozenset({9}),\n", | ||
| 938 | + " frozenset({2}),\n", | ||
| 939 | + " frozenset({12}),\n", | ||
| 940 | + " frozenset({1}),\n", | ||
| 941 | + " frozenset({16}),\n", | ||
| 942 | + " frozenset({19}),\n", | ||
| 943 | + " frozenset({4}),\n", | ||
| 944 | + " frozenset({14}),\n", | ||
| 945 | + " frozenset({8}),\n", | ||
| 946 | + " frozenset({11}),\n", | ||
| 947 | + " frozenset({18}),\n", | ||
| 948 | + " frozenset({13}),\n", | ||
| 949 | + " frozenset({15}),\n", | ||
| 950 | + " frozenset({6}),\n", | ||
| 951 | + " frozenset({17}),\n", | ||
| 952 | + " frozenset({0}),\n", | ||
| 953 | + " frozenset({3}),\n", | ||
| 954 | + " frozenset({10}),\n", | ||
| 955 | + " frozenset({5}),\n", | ||
| 956 | + " frozenset({20}),\n", | ||
| 957 | + " frozenset({7})],\n", | ||
| 958 | + " [frozenset({3, 14}),\n", | ||
| 959 | + " frozenset({1, 15}),\n", | ||
| 960 | + " frozenset({4, 5}),\n", | ||
| 961 | + " frozenset({9, 15}),\n", | ||
| 962 | + " frozenset({4, 11}),\n", | ||
| 963 | + " frozenset({6, 14}),\n", | ||
| 964 | + " frozenset({5, 8}),\n", | ||
| 965 | + " frozenset({11, 19}),\n", | ||
| 966 | + " frozenset({5, 18}),\n", | ||
| 967 | + " frozenset({6, 15}),\n", | ||
| 968 | + " frozenset({2, 4}),\n", | ||
| 969 | + " frozenset({5, 16}),\n", | ||
| 970 | + " frozenset({4, 13}),\n", | ||
| 971 | + " frozenset({0, 8}),\n", | ||
| 972 | + " frozenset({7, 19}),\n", | ||
| 973 | + " frozenset({1, 17}),\n", | ||
| 974 | + " frozenset({9, 14}),\n", | ||
| 975 | + " frozenset({9, 19}),\n", | ||
| 976 | + " frozenset({8, 14}),\n", | ||
| 977 | + " frozenset({7, 8}),\n", | ||
| 978 | + " frozenset({10, 14}),\n", | ||
| 979 | + " frozenset({2, 7}),\n", | ||
| 980 | + " frozenset({11, 20}),\n", | ||
| 981 | + " frozenset({2, 10}),\n", | ||
| 982 | + " frozenset({13, 19}),\n", | ||
| 983 | + " frozenset({11, 12}),\n", | ||
| 984 | + " frozenset({3, 9}),\n", | ||
| 985 | + " frozenset({17, 18}),\n", | ||
| 986 | + " frozenset({12, 20}),\n", | ||
| 987 | + " frozenset({10, 17}),\n", | ||
| 988 | + " frozenset({0, 6}),\n", | ||
| 989 | + " frozenset({7, 12}),\n", | ||
| 990 | + " frozenset({9, 10}),\n", | ||
| 991 | + " frozenset({17, 19}),\n", | ||
| 992 | + " frozenset({7, 14}),\n", | ||
| 993 | + " frozenset({12, 16}),\n", | ||
| 994 | + " frozenset({4, 18}),\n", | ||
| 995 | + " frozenset({0, 16}),\n", | ||
| 996 | + " frozenset({0, 9}),\n", | ||
| 997 | + " frozenset({2, 6}),\n", | ||
| 998 | + " frozenset({1, 2}),\n", | ||
| 999 | + " frozenset({13, 20}),\n", | ||
| 1000 | + " frozenset({7, 15}),\n", | ||
| 1001 | + " frozenset({0, 13}),\n", | ||
| 1002 | + " frozenset({3, 7}),\n", | ||
| 1003 | + " frozenset({7, 9}),\n", | ||
| 1004 | + " frozenset({12, 19}),\n", | ||
| 1005 | + " frozenset({6, 8}),\n", | ||
| 1006 | + " frozenset({19, 20}),\n", | ||
| 1007 | + " frozenset({0, 17}),\n", | ||
| 1008 | + " frozenset({4, 15}),\n", | ||
| 1009 | + " frozenset({17, 20}),\n", | ||
| 1010 | + " frozenset({1, 8}),\n", | ||
| 1011 | + " frozenset({11, 16}),\n", | ||
| 1012 | + " frozenset({12, 17}),\n", | ||
| 1013 | + " frozenset({13, 17}),\n", | ||
| 1014 | + " frozenset({2, 9}),\n", | ||
| 1015 | + " frozenset({16, 19}),\n", | ||
| 1016 | + " frozenset({10, 16}),\n", | ||
| 1017 | + " frozenset({2, 17}),\n", | ||
| 1018 | + " frozenset({4, 12}),\n", | ||
| 1019 | + " frozenset({3, 8}),\n", | ||
| 1020 | + " frozenset({16, 18}),\n", | ||
| 1021 | + " frozenset({4, 20}),\n", | ||
| 1022 | + " frozenset({15, 17}),\n", | ||
| 1023 | + " frozenset({0, 4}),\n", | ||
| 1024 | + " frozenset({0, 12}),\n", | ||
| 1025 | + " frozenset({0, 1}),\n", | ||
| 1026 | + " frozenset({7, 11}),\n", | ||
| 1027 | + " frozenset({14, 15}),\n", | ||
| 1028 | + " frozenset({2, 15}),\n", | ||
| 1029 | + " frozenset({1, 6}),\n", | ||
| 1030 | + " frozenset({2, 3}),\n", | ||
| 1031 | + " frozenset({1, 16}),\n", | ||
| 1032 | + " frozenset({3, 6}),\n", | ||
| 1033 | + " frozenset({9, 11}),\n", | ||
| 1034 | + " frozenset({3, 4}),\n", | ||
| 1035 | + " frozenset({1, 20}),\n", | ||
| 1036 | + " frozenset({4, 19}),\n", | ||
| 1037 | + " frozenset({11, 17}),\n", | ||
| 1038 | + " frozenset({1, 14}),\n", | ||
| 1039 | + " frozenset({14, 20}),\n", | ||
| 1040 | + " frozenset({5, 20}),\n", | ||
| 1041 | + " frozenset({4, 10}),\n", | ||
| 1042 | + " frozenset({6, 9}),\n", | ||
| 1043 | + " frozenset({2, 11}),\n", | ||
| 1044 | + " frozenset({1, 9}),\n", | ||
| 1045 | + " frozenset({3, 11}),\n", | ||
| 1046 | + " frozenset({8, 15}),\n", | ||
| 1047 | + " frozenset({3, 10}),\n", | ||
| 1048 | + " frozenset({5, 7}),\n", | ||
| 1049 | + " frozenset({8, 13}),\n", | ||
| 1050 | + " frozenset({1, 7}),\n", | ||
| 1051 | + " frozenset({4, 6}),\n", | ||
| 1052 | + " frozenset({7, 13}),\n", | ||
| 1053 | + " frozenset({14, 19}),\n", | ||
| 1054 | + " frozenset({8, 20}),\n", | ||
| 1055 | + " frozenset({1, 4}),\n", | ||
| 1056 | + " frozenset({8, 16}),\n", | ||
| 1057 | + " frozenset({3, 18}),\n", | ||
| 1058 | + " frozenset({2, 14}),\n", | ||
| 1059 | + " frozenset({10, 19}),\n", | ||
| 1060 | + " frozenset({3, 15}),\n", | ||
| 1061 | + " frozenset({13, 14}),\n", | ||
| 1062 | + " frozenset({8, 10}),\n", | ||
| 1063 | + " frozenset({6, 12}),\n", | ||
| 1064 | + " frozenset({12, 15}),\n", | ||
| 1065 | + " frozenset({5, 11}),\n", | ||
| 1066 | + " frozenset({4, 9}),\n", | ||
| 1067 | + " frozenset({4, 8}),\n", | ||
| 1068 | + " frozenset({0, 15}),\n", | ||
| 1069 | + " frozenset({15, 20}),\n", | ||
| 1070 | + " frozenset({5, 17}),\n", | ||
| 1071 | + " frozenset({7, 16}),\n", | ||
| 1072 | + " frozenset({2, 12}),\n", | ||
| 1073 | + " frozenset({0, 2}),\n", | ||
| 1074 | + " frozenset({5, 9}),\n", | ||
| 1075 | + " frozenset({2, 20}),\n", | ||
| 1076 | + " frozenset({3, 5}),\n", | ||
| 1077 | + " frozenset({5, 15}),\n", | ||
| 1078 | + " frozenset({11, 14}),\n", | ||
| 1079 | + " frozenset({7, 17}),\n", | ||
| 1080 | + " frozenset({6, 10}),\n", | ||
| 1081 | + " frozenset({16, 20}),\n", | ||
| 1082 | + " frozenset({3, 16}),\n", | ||
| 1083 | + " frozenset({6, 19}),\n", | ||
| 1084 | + " frozenset({4, 7}),\n", | ||
| 1085 | + " frozenset({0, 10}),\n", | ||
| 1086 | + " frozenset({14, 18}),\n", | ||
| 1087 | + " frozenset({0, 14}),\n", | ||
| 1088 | + " frozenset({10, 15}),\n", | ||
| 1089 | + " frozenset({3, 19}),\n", | ||
| 1090 | + " frozenset({14, 17}),\n", | ||
| 1091 | + " frozenset({2, 8}),\n", | ||
| 1092 | + " frozenset({1, 5}),\n", | ||
| 1093 | + " frozenset({5, 6}),\n", | ||
| 1094 | + " frozenset({3, 17}),\n", | ||
| 1095 | + " frozenset({9, 16}),\n", | ||
| 1096 | + " frozenset({10, 13}),\n", | ||
| 1097 | + " frozenset({2, 19}),\n", | ||
| 1098 | + " frozenset({1, 11}),\n", | ||
| 1099 | + " frozenset({16, 17}),\n", | ||
| 1100 | + " frozenset({0, 20}),\n", | ||
| 1101 | + " frozenset({8, 17}),\n", | ||
| 1102 | + " frozenset({9, 17}),\n", | ||
| 1103 | + " frozenset({7, 10}),\n", | ||
| 1104 | + " frozenset({0, 7}),\n", | ||
| 1105 | + " frozenset({15, 16}),\n", | ||
| 1106 | + " frozenset({10, 18}),\n", | ||
| 1107 | + " frozenset({7, 20}),\n", | ||
| 1108 | + " frozenset({1, 10}),\n", | ||
| 1109 | + " frozenset({0, 3}),\n", | ||
| 1110 | + " frozenset({4, 17}),\n", | ||
| 1111 | + " frozenset({1, 3}),\n", | ||
| 1112 | + " frozenset({12, 14}),\n", | ||
| 1113 | + " frozenset({10, 11}),\n", | ||
| 1114 | + " frozenset({0, 19}),\n", | ||
| 1115 | + " frozenset({10, 20}),\n", | ||
| 1116 | + " frozenset({3, 20}),\n", | ||
| 1117 | + " frozenset({6, 17}),\n", | ||
| 1118 | + " frozenset({10, 12}),\n", | ||
| 1119 | + " frozenset({8, 19}),\n", | ||
| 1120 | + " frozenset({9, 12}),\n", | ||
| 1121 | + " frozenset({4, 16}),\n", | ||
| 1122 | + " frozenset({1, 18}),\n", | ||
| 1123 | + " frozenset({9, 13}),\n", | ||
| 1124 | + " frozenset({2, 5}),\n", | ||
| 1125 | + " frozenset({9, 20}),\n", | ||
| 1126 | + " frozenset({11, 15}),\n", | ||
| 1127 | + " frozenset({5, 14}),\n", | ||
| 1128 | + " frozenset({5, 10}),\n", | ||
| 1129 | + " frozenset({2, 18}),\n", | ||
| 1130 | + " frozenset({1, 13}),\n", | ||
| 1131 | + " frozenset({0, 5}),\n", | ||
| 1132 | + " frozenset({15, 19}),\n", | ||
| 1133 | + " frozenset({5, 12}),\n", | ||
| 1134 | + " frozenset({6, 16}),\n", | ||
| 1135 | + " frozenset({6, 20}),\n", | ||
| 1136 | + " frozenset({1, 19}),\n", | ||
| 1137 | + " frozenset({9, 18}),\n", | ||
| 1138 | + " frozenset({8, 9}),\n", | ||
| 1139 | + " frozenset({2, 13}),\n", | ||
| 1140 | + " frozenset({6, 7}),\n", | ||
| 1141 | + " frozenset({4, 14}),\n", | ||
| 1142 | + " frozenset({14, 16}),\n", | ||
| 1143 | + " frozenset({2, 16}),\n", | ||
| 1144 | + " frozenset({13, 15})],\n", | ||
| 1145 | + " []]" | ||
| 1146 | + ] | ||
| 1147 | + }, | ||
| 1148 | + "execution_count": 53, | ||
| 1149 | + "metadata": {}, | ||
| 1150 | + "output_type": "execute_result" | ||
| 1151 | + } | ||
| 1152 | + ], | ||
| 1153 | + "source": [ | ||
| 1154 | + "L,suppData=apriori(data_value,minSupport=0.1)\n", | ||
| 1155 | + "L\n" | ||
| 1156 | + ] | ||
| 1157 | + }, | ||
| 1158 | + { | ||
| 1159 | + "cell_type": "code", | ||
| 1160 | + "execution_count": 60, | ||
| 1161 | + "metadata": { | ||
| 1162 | + "collapsed": false | ||
| 1163 | + }, | ||
| 1164 | + "outputs": [ | ||
| 1165 | + { | ||
| 1166 | + "name": "stdout", | ||
| 1167 | + "output_type": "stream", | ||
| 1168 | + "text": [ | ||
| 1169 | + "(frozenset([14]), '-->', frozenset([3]), 'conf:', 0.4057142857142857)\n", | ||
| 1170 | + "(frozenset([3]), '-->', frozenset([14]), 'conf:', 0.41764705882352937)\n", | ||
| 1171 | + "(frozenset([4]), '-->', frozenset([2]), 'conf:', 0.41208791208791207)\n", | ||
| 1172 | + "(frozenset([2]), '-->', frozenset([4]), 'conf:', 0.4098360655737705)\n", | ||
| 1173 | + "(frozenset([5]), '-->', frozenset([16]), 'conf:', 0.4140127388535032)\n", | ||
| 1174 | + "(frozenset([19]), '-->', frozenset([7]), 'conf:', 0.4)\n", | ||
| 1175 | + "(frozenset([12]), '-->', frozenset([20]), 'conf:', 0.4267515923566879)\n", | ||
| 1176 | + "(frozenset([17]), '-->', frozenset([10]), 'conf:', 0.4285714285714285)\n", | ||
| 1177 | + "(frozenset([18]), '-->', frozenset([4]), 'conf:', 0.4)\n", | ||
| 1178 | + "(frozenset([15]), '-->', frozenset([7]), 'conf:', 0.4082840236686391)\n", | ||
| 1179 | + "(frozenset([9]), '-->', frozenset([7]), 'conf:', 0.4)\n", | ||
| 1180 | + "(frozenset([8]), '-->', frozenset([1]), 'conf:', 0.4276729559748428)\n", | ||
| 1181 | + "(frozenset([9]), '-->', frozenset([2]), 'conf:', 0.4)\n", | ||
| 1182 | + "(frozenset([10]), '-->', frozenset([16]), 'conf:', 0.41208791208791207)\n", | ||
| 1183 | + "(frozenset([16]), '-->', frozenset([10]), 'conf:', 0.41899441340782123)\n", | ||
| 1184 | + "(frozenset([12]), '-->', frozenset([4]), 'conf:', 0.42038216560509556)\n", | ||
| 1185 | + "(frozenset([18]), '-->', frozenset([16]), 'conf:', 0.4)\n", | ||
| 1186 | + "(frozenset([15]), '-->', frozenset([14]), 'conf:', 0.42603550295857984)\n", | ||
| 1187 | + "(frozenset([14]), '-->', frozenset([15]), 'conf:', 0.4114285714285714)\n", | ||
| 1188 | + "(frozenset([1]), '-->', frozenset([16]), 'conf:', 0.42391304347826086)\n", | ||
| 1189 | + "(frozenset([16]), '-->', frozenset([1]), 'conf:', 0.4357541899441341)\n", | ||
| 1190 | + "(frozenset([20]), '-->', frozenset([1]), 'conf:', 0.4157303370786517)\n", | ||
| 1191 | + "(frozenset([1]), '-->', frozenset([20]), 'conf:', 0.40217391304347827)\n", | ||
| 1192 | + "(frozenset([19]), '-->', frozenset([4]), 'conf:', 0.40625)\n", | ||
| 1193 | + "(frozenset([11]), '-->', frozenset([2]), 'conf:', 0.41935483870967744)\n", | ||
| 1194 | + "(frozenset([13]), '-->', frozenset([7]), 'conf:', 0.4155844155844156)\n", | ||
| 1195 | + "(frozenset([4]), '-->', frozenset([1]), 'conf:', 0.4065934065934066)\n", | ||
| 1196 | + "(frozenset([1]), '-->', frozenset([4]), 'conf:', 0.40217391304347827)\n", | ||
| 1197 | + "(frozenset([14]), '-->', frozenset([2]), 'conf:', 0.41714285714285715)\n", | ||
| 1198 | + "(frozenset([19]), '-->', frozenset([10]), 'conf:', 0.41875)\n", | ||
| 1199 | + "(frozenset([8]), '-->', frozenset([4]), 'conf:', 0.4088050314465409)\n", | ||
| 1200 | + "(frozenset([7]), '-->', frozenset([16]), 'conf:', 0.4357541899441341)\n", | ||
| 1201 | + "(frozenset([16]), '-->', frozenset([7]), 'conf:', 0.4357541899441341)\n", | ||
| 1202 | + "(frozenset([5]), '-->', frozenset([3]), 'conf:', 0.40764331210191085)\n", | ||
| 1203 | + "(frozenset([5]), '-->', frozenset([1]), 'conf:', 0.43312101910828027)\n", | ||
| 1204 | + "(frozenset([3]), '-->', frozenset([17]), 'conf:', 0.411764705882353)\n", | ||
| 1205 | + "(frozenset([17]), '-->', frozenset([3]), 'conf:', 0.4166666666666667)\n", | ||
| 1206 | + "(frozenset([17]), '-->', frozenset([16]), 'conf:', 0.4345238095238095)\n", | ||
| 1207 | + "(frozenset([16]), '-->', frozenset([17]), 'conf:', 0.40782122905027934)\n", | ||
| 1208 | + "(frozenset([8]), '-->', frozenset([17]), 'conf:', 0.4025157232704403)\n", | ||
| 1209 | + "(frozenset([7]), '-->', frozenset([10]), 'conf:', 0.41899441340782123)\n", | ||
| 1210 | + "(frozenset([10]), '-->', frozenset([7]), 'conf:', 0.41208791208791207)\n", | ||
| 1211 | + "(frozenset([15]), '-->', frozenset([16]), 'conf:', 0.4319526627218934)\n", | ||
| 1212 | + "(frozenset([16]), '-->', frozenset([15]), 'conf:', 0.40782122905027934)\n", | ||
| 1213 | + "(frozenset([10]), '-->', frozenset([1]), 'conf:', 0.4065934065934066)\n", | ||
| 1214 | + "(frozenset([1]), '-->', frozenset([10]), 'conf:', 0.40217391304347827)\n", | ||
| 1215 | + "(frozenset([3]), '-->', frozenset([0]), 'conf:', 0.41764705882352937)\n", | ||
| 1216 | + "(frozenset([0]), '-->', frozenset([3]), 'conf:', 0.4127906976744186)\n", | ||
| 1217 | + "(frozenset([17]), '-->', frozenset([4]), 'conf:', 0.4166666666666667)\n", | ||
| 1218 | + "(frozenset([3]), '-->', frozenset([1]), 'conf:', 0.4)\n", | ||
| 1219 | + "(frozenset([13]), '-->', frozenset([9]), 'conf:', 0.4090909090909091)\n", | ||
| 1220 | + "(frozenset([5]), '-->', frozenset([2]), 'conf:', 0.4394904458598726)\n", | ||
| 1221 | + "(frozenset([9]), '-->', frozenset([20]), 'conf:', 0.4)\n", | ||
| 1222 | + "(frozenset([18]), '-->', frozenset([2]), 'conf:', 0.4068965517241379)\n", | ||
| 1223 | + "(frozenset([6]), '-->', frozenset([20]), 'conf:', 0.42138364779874216)\n", | ||
| 1224 | + "(frozenset([19]), '-->', frozenset([1]), 'conf:', 0.4)\n", | ||
| 1225 | + "(frozenset([13]), '-->', frozenset([2]), 'conf:', 0.4025974025974026)\n", | ||
| 1226 | + "(frozenset([14]), '-->', frozenset([4]), 'conf:', 0.4000000000000001)\n", | ||
| 1227 | + "(frozenset([2]), '-->', frozenset([16]), 'conf:', 0.42622950819672134)\n", | ||
| 1228 | + "(frozenset([16]), '-->', frozenset([2]), 'conf:', 0.4357541899441341)\n" | ||
| 1229 | + ] | ||
| 1230 | + }, | ||
| 1231 | + { | ||
| 1232 | + "data": { | ||
| 1233 | + "text/plain": [ | ||
| 1234 | + "[(frozenset({14}), frozenset({3}), 0.4057142857142857),\n", | ||
| 1235 | + " (frozenset({3}), frozenset({14}), 0.41764705882352937),\n", | ||
| 1236 | + " (frozenset({4}), frozenset({2}), 0.41208791208791207),\n", | ||
| 1237 | + " (frozenset({2}), frozenset({4}), 0.4098360655737705),\n", | ||
| 1238 | + " (frozenset({5}), frozenset({16}), 0.4140127388535032),\n", | ||
| 1239 | + " (frozenset({19}), frozenset({7}), 0.4),\n", | ||
| 1240 | + " (frozenset({12}), frozenset({20}), 0.4267515923566879),\n", | ||
| 1241 | + " (frozenset({17}), frozenset({10}), 0.4285714285714285),\n", | ||
| 1242 | + " (frozenset({18}), frozenset({4}), 0.4),\n", | ||
| 1243 | + " (frozenset({15}), frozenset({7}), 0.4082840236686391),\n", | ||
| 1244 | + " (frozenset({9}), frozenset({7}), 0.4),\n", | ||
| 1245 | + " (frozenset({8}), frozenset({1}), 0.4276729559748428),\n", | ||
| 1246 | + " (frozenset({9}), frozenset({2}), 0.4),\n", | ||
| 1247 | + " (frozenset({10}), frozenset({16}), 0.41208791208791207),\n", | ||
| 1248 | + " (frozenset({16}), frozenset({10}), 0.41899441340782123),\n", | ||
| 1249 | + " (frozenset({12}), frozenset({4}), 0.42038216560509556),\n", | ||
| 1250 | + " (frozenset({18}), frozenset({16}), 0.4),\n", | ||
| 1251 | + " (frozenset({15}), frozenset({14}), 0.42603550295857984),\n", | ||
| 1252 | + " (frozenset({14}), frozenset({15}), 0.4114285714285714),\n", | ||
| 1253 | + " (frozenset({1}), frozenset({16}), 0.42391304347826086),\n", | ||
| 1254 | + " (frozenset({16}), frozenset({1}), 0.4357541899441341),\n", | ||
| 1255 | + " (frozenset({20}), frozenset({1}), 0.4157303370786517),\n", | ||
| 1256 | + " (frozenset({1}), frozenset({20}), 0.40217391304347827),\n", | ||
| 1257 | + " (frozenset({19}), frozenset({4}), 0.40625),\n", | ||
| 1258 | + " (frozenset({11}), frozenset({2}), 0.41935483870967744),\n", | ||
| 1259 | + " (frozenset({13}), frozenset({7}), 0.4155844155844156),\n", | ||
| 1260 | + " (frozenset({4}), frozenset({1}), 0.4065934065934066),\n", | ||
| 1261 | + " (frozenset({1}), frozenset({4}), 0.40217391304347827),\n", | ||
| 1262 | + " (frozenset({14}), frozenset({2}), 0.41714285714285715),\n", | ||
| 1263 | + " (frozenset({19}), frozenset({10}), 0.41875),\n", | ||
| 1264 | + " (frozenset({8}), frozenset({4}), 0.4088050314465409),\n", | ||
| 1265 | + " (frozenset({7}), frozenset({16}), 0.4357541899441341),\n", | ||
| 1266 | + " (frozenset({16}), frozenset({7}), 0.4357541899441341),\n", | ||
| 1267 | + " (frozenset({5}), frozenset({3}), 0.40764331210191085),\n", | ||
| 1268 | + " (frozenset({5}), frozenset({1}), 0.43312101910828027),\n", | ||
| 1269 | + " (frozenset({3}), frozenset({17}), 0.411764705882353),\n", | ||
| 1270 | + " (frozenset({17}), frozenset({3}), 0.4166666666666667),\n", | ||
| 1271 | + " (frozenset({17}), frozenset({16}), 0.4345238095238095),\n", | ||
| 1272 | + " (frozenset({16}), frozenset({17}), 0.40782122905027934),\n", | ||
| 1273 | + " (frozenset({8}), frozenset({17}), 0.4025157232704403),\n", | ||
| 1274 | + " (frozenset({7}), frozenset({10}), 0.41899441340782123),\n", | ||
| 1275 | + " (frozenset({10}), frozenset({7}), 0.41208791208791207),\n", | ||
| 1276 | + " (frozenset({15}), frozenset({16}), 0.4319526627218934),\n", | ||
| 1277 | + " (frozenset({16}), frozenset({15}), 0.40782122905027934),\n", | ||
| 1278 | + " (frozenset({10}), frozenset({1}), 0.4065934065934066),\n", | ||
| 1279 | + " (frozenset({1}), frozenset({10}), 0.40217391304347827),\n", | ||
| 1280 | + " (frozenset({3}), frozenset({0}), 0.41764705882352937),\n", | ||
| 1281 | + " (frozenset({0}), frozenset({3}), 0.4127906976744186),\n", | ||
| 1282 | + " (frozenset({17}), frozenset({4}), 0.4166666666666667),\n", | ||
| 1283 | + " (frozenset({3}), frozenset({1}), 0.4),\n", | ||
| 1284 | + " (frozenset({13}), frozenset({9}), 0.4090909090909091),\n", | ||
| 1285 | + " (frozenset({5}), frozenset({2}), 0.4394904458598726),\n", | ||
| 1286 | + " (frozenset({9}), frozenset({20}), 0.4),\n", | ||
| 1287 | + " (frozenset({18}), frozenset({2}), 0.4068965517241379),\n", | ||
| 1288 | + " (frozenset({6}), frozenset({20}), 0.42138364779874216),\n", | ||
| 1289 | + " (frozenset({19}), frozenset({1}), 0.4),\n", | ||
| 1290 | + " (frozenset({13}), frozenset({2}), 0.4025974025974026),\n", | ||
| 1291 | + " (frozenset({14}), frozenset({4}), 0.4000000000000001),\n", | ||
| 1292 | + " (frozenset({2}), frozenset({16}), 0.42622950819672134),\n", | ||
| 1293 | + " (frozenset({16}), frozenset({2}), 0.4357541899441341)]" | ||
| 1294 | + ] | ||
| 1295 | + }, | ||
| 1296 | + "execution_count": 60, | ||
| 1297 | + "metadata": {}, | ||
| 1298 | + "output_type": "execute_result" | ||
| 1299 | + } | ||
| 1300 | + ], | ||
| 1301 | + "source": [ | ||
| 1302 | + "rules=generateRules(L,suppData,minConf=0.4)\n", | ||
| 1303 | + "rules" | ||
| 1304 | + ] | ||
| 1305 | + }, | ||
| 1306 | + { | ||
| 1307 | + "cell_type": "code", | ||
| 1308 | + "execution_count": null, | ||
| 1309 | + "metadata": { | ||
| 1310 | + "collapsed": true | ||
| 1311 | + }, | ||
| 1312 | + "outputs": [], | ||
| 1313 | + "source": [] | ||
| 1314 | + }, | ||
| 1315 | + { | ||
| 1316 | + "cell_type": "code", | ||
| 1317 | + "execution_count": null, | ||
| 1318 | + "metadata": { | ||
| 1319 | + "collapsed": true | ||
| 1320 | + }, | ||
| 1321 | + "outputs": [], | ||
| 1322 | + "source": [] | ||
| 1323 | + }, | ||
| 1324 | + { | ||
| 1325 | + "cell_type": "code", | ||
| 1326 | + "execution_count": null, | ||
| 1327 | + "metadata": { | ||
| 1328 | + "collapsed": true | ||
| 1329 | + }, | ||
| 1330 | + "outputs": [], | ||
| 1331 | + "source": [] | ||
| 1332 | + } | ||
| 1333 | + ], | ||
| 1334 | + "metadata": { | ||
| 1335 | + "anaconda-cloud": {}, | ||
| 1336 | + "kernelspec": { | ||
| 1337 | + "display_name": "Python [Root]", | ||
| 1338 | + "language": "python", | ||
| 1339 | + "name": "Python [Root]" | ||
| 1340 | + }, | ||
| 1341 | + "language_info": { | ||
| 1342 | + "codemirror_mode": { | ||
| 1343 | + "name": "ipython", | ||
| 1344 | + "version": 2 | ||
| 1345 | + }, | ||
| 1346 | + "file_extension": ".py", | ||
| 1347 | + "mimetype": "text/x-python", | ||
| 1348 | + "name": "python", | ||
| 1349 | + "nbconvert_exporter": "python", | ||
| 1350 | + "pygments_lexer": "ipython2", | ||
| 1351 | + "version": "2.7.12" | ||
| 1352 | + } | ||
| 1353 | + }, | ||
| 1354 | + "nbformat": 4, | ||
| 1355 | + "nbformat_minor": 0 | ||
| 1356 | +} |
user_FC.py
0 → 100644
| 1 | +import math | ||
| 2 | +#!usr/bin/python | ||
| 3 | + | ||
| 4 | + | ||
| 5 | + | ||
| 6 | +def readFile(file_name): | ||
| 7 | + contents_lines=[] | ||
| 8 | + f = open(file_name,'r') | ||
| 9 | + contents_lines=f.readlines() | ||
| 10 | + f.close() | ||
| 11 | + return contents_lines | ||
| 12 | + | ||
| 13 | +def getBooksList(file_name): | ||
| 14 | + books_contents=readFile(file_name) | ||
| 15 | + books_info={} | ||
| 16 | + for book in books_contents: | ||
| 17 | + book_info=book.split("|") | ||
| 18 | + books_info[int(book_info[0])]=book_info[1:] | ||
| 19 | + return books_info | ||
| 20 | + | ||
| 21 | + | ||
| 22 | + | ||
| 23 | +def getRatingInformation(ratings): | ||
| 24 | + rates=[] | ||
| 25 | + for line in ratings: | ||
| 26 | + rate = line.split('\t') | ||
| 27 | + rates.append([int(rate[0]),int(rate[1]),int(rate[2])]) | ||
| 28 | + return rates | ||
| 29 | + | ||
| 30 | +def createUserRankDic(rates): | ||
| 31 | + user_rate_dic={} | ||
| 32 | + item_to_user={} | ||
| 33 | + for i in rates: | ||
| 34 | + user_rank=(i[1],i[2]) | ||
| 35 | + if i[0] in user_rate_dic: | ||
| 36 | + user_rate_dic[i[0]].append(user_rank) | ||
| 37 | + else: | ||
| 38 | + user_rate_dic[i[0]]=[user_rank] | ||
| 39 | + | ||
| 40 | + if i[1] in item_to_user: | ||
| 41 | + item_to_user[i[1]].append(i[0]) | ||
| 42 | + else: | ||
| 43 | + item_to_user[i[1]]=[i[0]] | ||
| 44 | + return user_rate_dic,item_to_user | ||
| 45 | + | ||
| 46 | +def clacSimlaryCosDist(user1,user2): | ||
| 47 | + sum_x=0.0 | ||
| 48 | + sum_y=0.0 | ||
| 49 | + sum_xy=0.0 | ||
| 50 | + avg_x=0.0 | ||
| 51 | + avg_y=0.0 | ||
| 52 | + for key in user1: | ||
| 53 | + avg_x+=key[1] | ||
| 54 | + avg_x=avg_x/len(user1) | ||
| 55 | + | ||
| 56 | + for key in user2: | ||
| 57 | + avg_y+=key[1] | ||
| 58 | + avg_y=avg_y/len(user2) | ||
| 59 | + | ||
| 60 | + for key1 in user1: | ||
| 61 | + for key2 in user2: | ||
| 62 | + if key1[0]==key2[0]: | ||
| 63 | + sum_xy+=(key1[1]-avg_x)*(key2[1]-avg_y) | ||
| 64 | + sum_x+=(key1[1]-avg_x)*(key1[1]-avg_x) | ||
| 65 | + for key2 in user2: | ||
| 66 | + sum_y+=(key2[1]-avg_y)*(key2[1]-avg_y) | ||
| 67 | + # print sum_x,sum_y,sum_xy | ||
| 68 | + if sum_xy ==0.0: | ||
| 69 | + return 0 | ||
| 70 | + sx_sy=math.sqrt(sum_x*sum_y) | ||
| 71 | + return sum_xy/sx_sy | ||
| 72 | + | ||
| 73 | + | ||
| 74 | + | ||
| 75 | +def calcNearestNeighbor(userid,users_dic,item_dic): | ||
| 76 | + neighbors=[] | ||
| 77 | + for item in users_dic[userid]: | ||
| 78 | + for neighbor in item_dic[item[0]]: | ||
| 79 | + if neighbor != userid and neighbor not in neighbors: | ||
| 80 | + neighbors.append(neighbor) | ||
| 81 | + | ||
| 82 | + neighbors_dist=[] | ||
| 83 | + for neighbor in neighbors: | ||
| 84 | + dist=clacSimlaryCosDist(users_dic[userid],users_dic[neighbor]) | ||
| 85 | + neighbors_dist.append([dist,neighbor]) | ||
| 86 | + neighbors_dist.sort(reverse=True) | ||
| 87 | + return neighbors_dist | ||
| 88 | + | ||
| 89 | + | ||
| 90 | +def recommendByUserFC(file_name,userid,k=5): | ||
| 91 | + test_contents=readFile(file_name) | ||
| 92 | + test_rates = getRatingInformation(test_contents) | ||
| 93 | + test_dic,test_item_to_user=createUserRankDic(test_rates) | ||
| 94 | + | ||
| 95 | + neighbors=calcNearestNeighbor(userid,test_dic,test_item_to_user)[:k] | ||
| 96 | + | ||
| 97 | + recommend_dic={} | ||
| 98 | + for neighbor in neighbors: | ||
| 99 | + neighbor_user_id=neighbor[1] | ||
| 100 | + books=test_dic[neighbor_user_id] | ||
| 101 | + for book in books: | ||
| 102 | + if book[0] not in recommend_dic: | ||
| 103 | + recommend_dic[book[0]]=neighbor[0] | ||
| 104 | + else: | ||
| 105 | + recommend_dic[book[0]]+=neighbor[0] | ||
| 106 | + recommend_list=[] | ||
| 107 | + for key in recommend_dic: | ||
| 108 | + recommend_list.append([recommend_dic[key],key]) | ||
| 109 | + | ||
| 110 | + recommend_list.sort(reverse=True) | ||
| 111 | + user_books = [i[0] for i in test_dic[userid]] | ||
| 112 | + | ||
| 113 | + return [i[1] for i in recommend_list],user_books,neighbors | ||
| 114 | + | ||
| 115 | + | ||
| 116 | +if __name__ == '__main__': | ||
| 117 | + books = readFile('u.data') | ||
| 118 | + rates = getRatingInformation(books) | ||
| 119 | + recommend_list,user_movie,neighbors=recommendByUserFC("u.data",222) | ||
| 120 | + | ||
| 121 | + print recommend_list[:5] | ||
| 122 | + |
-
Please register or login to post a comment