▶ 오늘은 https://github.com/juno-hwang/juno-dkt에 있는 코드를 실행해보면 학생들의 문항응답을 원-핫인코딩으로 바꾸는 과정을 이해해보았음
▶ 이해한 과정은 코드 옆에 주석으로 메모하였음!
1. 필요한 패키지 및 모듈 설치
! pip install juno-dkt
import numpy as np
import pandas as pd
import networkx as nx
from tqdm.auto import tqdm
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, roc_auc_score
import torch
from torch import nn, optim
from torch.nn import functional as F
from torch.utils.data import DataLoader, Dataset
from juno_dkt.utils import *
2. 데이터 불러오기
df = pd.read_csv('dataset.csv')
df.info()
df.head()
-----------------------------------------------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 122626 entries, 0 to 122625
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 user_id 122626 non-null int64
1 log_id 122626 non-null int64
2 sequence_id 122625 non-null float64
3 correct 122625 non-null float64
dtypes: float64(2), int64(2)
memory usage: 3.7 MB
user_id log_id sequence_id correct
0 50121 167478035 7014.0 0.0
1 50121 167478043 7014.0 1.0
2 50121 167478053 7014.0 1.0
3 50121 167478069 7014.0 1.0
4 50964 167478041 7014.0 1.0
3. one_hot_encode 함수 확인
### transform input 확인해서 넣어주기
students = df.user_id
items = df.sequence_id
answers = df.correct
print("학생: {}, 문항: {}, 응답 수: {}".format(len(students), len(items), len(answers)))
-----------------------------------------------
학생: 122626, 문항: 122626, 응답 수: 122626
idx = np.floor(answers) == answers ### correct가 결측인 데이터 제외하기 위해 만든 변수 같음
students = np.array(students[idx])
items = np.array(items[idx])
answers = np.array(answers[idx])
print("학생: {}, 문항: {}, 응답 수: {}".format(len(students), len(items), len(answers)))
-----------------------------------------------
학생: 121588, 문항: 121588, 응답 수: 121588
### one_hot_encode 함수 확인하기
### 문항별로 index 부여
n_items = len(list(set(items)))
item_ids = list(set(items))
item_id_to_idx = {}
for iid in item_ids:
item_id_to_idx[iid] = item_ids.index(iid)
print(item_id_to_idx)
-----------------------------------------------
{9222.0: 0, 10763.0: 1, 7179.0: 2, 10765.0: 3, 7182.0: 4, 10767.0: 5, 7184.0: 6, 7183.0: 7, 10264.0: 8, 10265.0: 9, 7192.0: 10, 7195.0: 11, 7196.0: 12, 31260.0: 13, 9244.0: 14, 9245.0: 15, 8741.0: 16, 31277.0: 17, 10293.0: 18, 11829.0: 19, 11831.0: 20, 31825.0: 21, 10833.0: 22, 37980.0: 23, 14442.0: 24, 24173.0: 25, 13935.0: 26, 11893.0: 27, 11898.0: 28, 11899.0: 29, 37002.0: 30, 164496.0: 31, 19610.0: 32, 8864.0: 33, 12450.0: 34, 15528.0: 35, 7160.0: 36, 37055.0: 37, 6849.0: 38, 37570.0: 39, 6851.0: 40, 9423.0: 41, 9424.0: 42, 9428.0: 43, 7166.0: 44, 8928.0: 45, 6891.0: 46, 8946.0: 47, 8949.0: 48, 39162.0: 49, 6910.0: 50, 6913.0: 51, 6402.0: 52, 204037.0: 53, 6921.0: 54, 21257.0: 55, 5898.0: 56, 236309.0: 57, 26902.0: 58, 6937.0: 59, 5918.0: 60, 6943.0: 61, 5945.0: 62, 6465.0: 63, 6473.0: 64, 5961.0: 65, 5962.0: 66, 5965.0: 67, 5968.0: 68, 5969.0: 69, 5976.0: 70, 14168.0: 71, 7012.0: 72, 10597.0: 73, 7014.0: 74, 7020.0: 75, 6009.0: 76, 7035.0: 77, 14211.0: 78, 6022.0: 79, 8585.0: 80, 6039.0: 81, 19362.0: 82, 13731.0: 83, 14247.0: 84, 39885.0: 85, 10195.0: 86, 9180.0: 87, 7155.0: 88, 37876.0: 89, 7157.0: 90, 7158.0: 91, 7159.0: 92, 7156.0: 93, 7165.0: 94, 37374.0: 95, 7167.0: 96}
item_id_to_idx[7014] ### sequence_id가 7014는 index 74로 부여
-----------------------------------------------
74
### 학생들 응답(answer) 원-핫 인코딩
encoded = np.zeros((len(items), n_items*2)) ### 문항별로 맞고 틀리고가 있기 때문에 n_items*2에서 2를 곱해줌
idxs = []
for i in tqdm(range(len(items))): ### tqdm은 진행상황을 알려주는 모듈임
idx = item_id_to_idx[items[i]]
encoded[i, idx] += answers[i] ### 정답일 때 패딩하는 방법
encoded[i, idx + n_items] += 1 - answers[i] ### 오답일 때 패딩하는 방법
idxs.append(idx)
print(encoded[0]) ### 첫 번째 응답은 7014 문항(인덱스 74)을 틀렸음 -> 96+74번째 값이 1로 코딩
-----------------------------------------------
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0.]
print(idxs[0])
-----------------------------------------------
74
4. batchify 함수 확인
### batchify 함수 확인하기
### batchify input 넣어주기
student_id = students
### 문항별로 인덱스 부여한 것과 같이 학생도 인덱스 부여
student_set = list(set(student_id))
student_id_to_idx = {}
for sid in student_set:
student_id_to_idx[sid] = student_set.index(sid)
print(student_id_to_idx)
-----------------------------------------------
{122886: 0, 245779: 1, 245780: 2, 245781: 3, 245783: 4, 245784: 5, 245785: 6, 245787: 7, 245788: 8, 245789: 9, 245790: 10, 245791: 11, 237600: 12, 245792: 13, 237602: 14, 237603: 15, 245793: 16, 245794: 17, 237606: 18, 237607: 19, 245795: 20, 221225: 21, 221226: 22, 221227: 23, 221228: 24, 221229: 25, 221230: 26, 221231: 27, 237611: 28, 237612: 29, 237615: 30, 245802: 31, 221236: 32, 221237: 33, 221238: 34, 221239: 35, 221240: 36, 221241: 37, 221242: 38, 221243: 39, 237622: 40, 245819: 41, 221246: 42, 221247: 43, 221248: 44, 221249: 45, 221250: 46, 172099: 47, 237633: 48, 237640: 49, 221258: 50, 237642: 51, 237644: 52, 245835: 53, 221263: 54, 180306: 55, 237662: 56, 237663: 57, 245857: 58, 237666: 59, 237668: 60, 122984: 61, 122990: 62, 237678: 63, 237680: 64, 237681: 65, 237684: 66, 237685: 67, 237686: 68, 237687: 69, 237688: 70, 237691: 71, 229513: 72, 172204: 73, 155821: 74, 172205: 75, 237744: 76, 237745: 77, 237746: 78, 237747: 79, 237748: 80, 237753: 81, 237754: 82, 237755: 83, 237757: 84, 172222: 85, 221375: 86, 221376: 87, 237758: 88, 237769: 89, 237771: 90, 221388: 91, 221389: 92, 237775: 93, 221393: 94, 221394: 95, 221395: 96, 221396: 97, 221397: 98, 237779: 99, 221399: 100, 237784: 101, 221401: 102, 221403: 103, 237788: 104, 237789: 105, 221406: 106, 221407: 107, 221408: 108, 221409: 109, 221410: 110, 237791: 111, 221412: 112, 237794: 113, 221415: 114, 221416: 115, 221418: 116, 221419: 117, 221420: 118, 221421: 119, 221424: 120, 221425: 121, 221427: 122, 221428: 123, 221429: 124, 221431: 125, 221432: 126, 221434: 127, 221436: 128, 221437: 129, 221438: 130, 221439: 131, 221440: 132, 221456: 133, 131345: 134, 123166: 135, 123203: 136, 221512: 137, 221513: 138, 221516: 139, 123213: 140, 221517: 141, 221518: 142, 221519: 143, 221520: 144, 221522: 145, 221523: 146, 237904: 147, 221525: 148, 221526: 149, 221527: 150, 221528: 151, 221529: 152, 221530: 153, 221531: 154, 221532: 155, 221533: 156, 221534: 157, 221535: 158, 221537: 159, 221538: 160, 221539: 161, 221540: 162, 123239: 163, 221544: 164, 237929: 165, 221548: 166, 237933: 167, 221559: 168, 180607: 169, 221578: 170, 221582: 171, 237970: 172, 123290: 173, 237982: 174, 221599: 175, 237984: 176, 237985: 177, 237987: 178, 237988: 179, 237997: 180, 237999: 181, 238000: 182, 172465: 183, 238001: 184, 238002: 185, 238003: 186, 238004: 187, 229815: 188, 229816: 189, 229817: 190, 98746: 191, 229818: 192, 246214: 193, 246217: 194, 246220: 195, 246228: 196, 172501: 197, 221655: 198, 221661: 199, 172514: 200, 246252: 201, 172525: 202, 246259: 203, 246266: 204, 246270: 205, 246277: 206, 238089: 207, 238091: 208, 246285: 209, 238094: 210, 238095: 211, 238096: 212, 246286: 213, 246287: 214, 246288: 215, 238100: 216, 246293: 217, 238103: 218, 238104: 219, 221721: 220, 238105: 221, 238107: 222, 238108: 223, 221725: 224, 246295: 225, 246296: 226, 221728: 227, 221734: 228, 221741: 229, 221746: 230, 238149: 231, 197200: 232, 238171: 233, 221804: 234, 221807: 235, 242730: 236, 172671: 237, 221827: 238, 180881: 239, 180882: 240, 238226: 241, 238229: 242, 238232: 243, 238236: 244, 238238: 245, 180896: 246, 221856: 247, 107178: 248, 238251: 249, 230070: 250, 230071: 251, 230077: 252, 221891: 253, 221897: 254, 221902: 255, 221905: 256, 238296: 257, 148194: 258, 148197: 259, 246502: 260, 148200: 261, 148201: 262, 148202: 263, 123627: 264, 172777: 265, 148205: 266, 148206: 267, 205548: 268, 148208: 269, 148213: 270, 246517: 271, 221971: 272, 230181: 273, 205631: 274, 230213: 275, 230245: 276, 148328: 277, 222092: 278, 222093: 279, 230290: 280, 222099: 281, 230292: 282, 230294: 283, 230295: 284, 222111: 285, 222114: 286, 230307: 287, 222116: 288, 222121: 289, 230314: 290, 222124: 291, 222130: 292, 222131: 293, 222132: 294, 230329: 295, 230331: 296, 230334: 297, 230340: 298, 50121: 299, 230345: 300, 132048: 301, 222160: 302, 230355: 303, 222165: 304, 238556: 305, 222181: 306, 246760: 307, 246761: 308, 246763: 309, 246764: 310, 246765: 311, 246766: 312, 222191: 313, 222192: 314, 222193: 315, 222200: 316, 222204: 317, 222205: 318, 222207: 319, 222209: 320, 222214: 321, 222217: 322, 222220: 323, 222224: 324, 222231: 325, 222238: 326, 222247: 327, 230439: 328, 222253: 329, 230445: 330, 230447: 331, 222256: 332, 230448: 333, 230452: 334, 230453: 335, 222262: 336, 230454: 337, 222264: 338, 173113: 339, 222271: 340, 222273: 341, 222275: 342, 222278: 343, 222279: 344, 222280: 345, 222281: 346, 222284: 347, 222295: 348, 222298: 349, 222323: 350, 222324: 351, 238707: 352, 222326: 353, 238709: 354, 238710: 355, 222331: 356, 230523: 357, 222333: 358, 230531: 359, 222341: 360, 222353: 361, 222358: 362, 189591: 363, 222361: 364, 222367: 365, 222369: 366, 222371: 367, 222372: 368, 246947: 369, 222375: 370, 238765: 371, 222386: 372, 222388: 373, 222391: 374, 222393: 375, 222394: 376, 222395: 377, 189629: 378, 222398: 379, 222399: 380, 222400: 381, 230591: 382, 230595: 383, 181445: 384, 230597: 385, 230598: 386, 230599: 387, 230601: 388, 230602: 389, 246988: 390, 246990: 391, 173270: 392, 222423: 393, 222435: 394, 238821: 395, 222441: 396, 222442: 397, 222444: 398, 222445: 399, 222447: 400, 197875: 401, 247033: 402, 247034: 403, 247036: 404, 247038: 405, 247039: 406, 238849: 407, 247041: 408, 247042: 409, 247043: 410, 247044: 411, 222478: 412, 173329: 413, 222481: 414, 222491: 415, 222495: 416, 222504: 417, 222510: 418, 222513: 419, 222519: 420, 222522: 421, 222525: 422, 247102: 423, 222527: 424, 247103: 425, 222529: 426, 247105: 427, 247106: 428, 247107: 429, 247108: 430, 247110: 431, 247111: 432, 247112: 433, 247114: 434, 247115: 435, 222541: 436, 247117: 437, 247118: 438, 238928: 439, 247119: 440, 230740: 441, 247126: 442, 230744: 443, 230747: 444, 230750: 445, 230751: 446, 230753: 447, 247143: 448, 230760: 449, 230766: 450, 230768: 451, 230769: 452, 247154: 453, 222581: 454, 222613: 455, 222614: 456, 181662: 457, 230815: 458, 230817: 459, 230818: 460, 230819: 461, 230820: 462, 230822: 463, 230823: 464, 222635: 465, 222637: 466, 222638: 467, 230837: 468, 222647: 469, 222648: 470, 230849: 471, 222663: 472, 247241: 473, 124364: 474, 222670: 475, 247255: 476, 247258: 477, 222684: 478, 230877: 479, 230878: 480, 230879: 481, 230880: 482, 230881: 483, 230882: 484, 230883: 485, 230884: 486, 230885: 487, 230886: 488, 230887: 489, 247264: 490, 222697: 491, 230889: 492, 230891: 493, 222700: 494, 230893: 495, 230894: 496, 230895: 497, 247271: 498, 230897: 499, 230898: 500, 230899: 501, 230900: 502, 230901: 503, 222710: 504, 230902: 505, 247285: 506, 222719: 507, 247304: 508, 222747: 509, 222750: 510, 222757: 511, 222759: 512, 222761: 513, 157229: 514, 239151: 515, 222768: 516, 222776: 517, 222780: 518, 247384: 519, 231017: 520, 231022: 521, 231023: 522, 231024: 523, 231025: 524, 222835: 525, 222838: 526, 231030: 527, 222840: 528, 157310: 529, 222846: 530, 247433: 531, 231050: 532, 222861: 533, 222864: 534, 231056: 535, 231057: 536, 231058: 537, 239252: 538, 231061: 539, 247440: 540, 247445: 541, 247448: 542, 247449: 543, 247450: 544, 124594: 545, 222899: 546, 247475: 547, 222902: 548, 181957: 549, 222919: 550, 181963: 551, 247502: 552, 222928: 553, 124637: 554, 239340: 555, 222975: 556, 222981: 557, 222984: 558, 50964: 559, 182042: 560, 182045: 561, 182051: 562, 247589: 563, 247592: 564, 247593: 565, 124714: 566, 247594: 567, 223021: 568, 223028: 569, 223034: 570, 223036: 571, 247625: 572, 231269: 573, 223085: 574, 233216: 575, 223111: 576, 223112: 577, 206737: 578, 223128: 579, 206746: 580, 247715: 581, 223147: 582, 198574: 583, 223161: 584, 223163: 585, 223165: 586, 223172: 587, 223175: 588, 124878: 589, 124890: 590, 223194: 591, 223197: 592, 83935: 593, 223214: 594, 223217: 595, 83954: 596, 165877: 597, 223227: 598, 165886: 599, 223231: 600, 165887: 601, 223236: 602, 165893: 603, 83977: 604, 223244: 605, 223247: 606, 174098: 607, 223250: 608, 174102: 609, 231456: 610, 174136: 611, 247875: 612, 231512: 613, 231513: 614, 231515: 615, 231516: 616, 231522: 617, 223350: 618, 247935: 619, 247937: 620, 247938: 621, 247939: 622, 247942: 623, 223367: 624, 247945: 625, 231567: 626, 231581: 627, 231584: 628, 149670: 629, 149671: 630, 231595: 631, 231598: 632, 231601: 633, 231602: 634, 231603: 635, 223413: 636, 231605: 637, 223415: 638, 149688: 639, 231607: 640, 223418: 641, 231608: 642, 231610: 643, 231614: 644, 231616: 645, 231617: 646, 231618: 647, 231619: 648, 231622: 649, 149703: 650, 223431: 651, 231623: 652, 231626: 653, 223436: 654, 231629: 655, 231630: 656, 231632: 657, 223441: 658, 231634: 659, 223449: 660, 248034: 661, 248037: 662, 223467: 663, 248046: 664, 223472: 665, 248048: 666, 248049: 667, 248053: 668, 248056: 669, 174329: 670, 248057: 671, 248058: 672, 248059: 673, 248061: 674, 248062: 675, 174335: 676, 231682: 677, 231683: 678, 231685: 679, 231686: 680, 231687: 681, 248071: 682, 231689: 683, 223498: 684, 231690: 685, 231691: 686, 231693: 687, 248072: 688, 248077: 689, 223505: 690, 223510: 691, 108824: 692, 248097: 693, 223524: 694, 223533: 695, 149808: 696, 223536: 697, 239921: 698, 223548: 699, 223549: 700, 223564: 701, 198990: 702, 231768: 703, 223578: 704, 239965: 705, 125281: 706, 223587: 707, 125288: 708, 248174: 709, 231791: 710, 231792: 711, 223602: 712, 231795: 713, 231798: 714, 231799: 715, 231801: 716, 248188: 717, 231808: 718, 231809: 719, 231810: 720, 223621: 721, 231813: 722, 231814: 723, 240007: 724, 248201: 725, 231827: 726, 231829: 727, 223659: 728, 248236: 729, 248237: 730, 231859: 731, 231862: 732, 231863: 733, 149944: 734, 231864: 735, 231865: 736, 149947: 737, 149948: 738, 149949: 739, 149950: 740, 231866: 741, 149952: 742, 231868: 743, 231870: 744, 149955: 745, 149956: 746, 231871: 747, 149959: 748, 174537: 749, 149964: 750, 223700: 751, 248278: 752, 76247: 753, 223703: 754, 125416: 755, 125417: 756, 125418: 757, 125419: 758, 125422: 759, 125426: 760, 125427: 761, 182772: 762, 125428: 763, 125430: 764, 125431: 765, 223735: 766, 223736: 767, 231928: 768, 125435: 769, 174591: 770, 223746: 771, 223749: 772, 166406: 773, 231947: 774, 231951: 775, 231954: 776, 223765: 777, 231959: 778, 231960: 779, 231968: 780, 223780: 781, 231977: 782, 231981: 783, 231983: 784, 125489: 785, 125490: 786, 231986: 787, 231987: 788, 223801: 789, 125498: 790, 125499: 791, 125500: 792, 223803: 793, 125502: 794, 231995: 795, 125504: 796, 231996: 797, 174659: 798, 223811: 799, 232007: 800, 232009: 801, 232010: 802, 232011: 803, 223825: 804, 232022: 805, 248410: 806, 150109: 807, 223838: 808, 223843: 809, 150122: 810, 150123: 811, 150125: 812, 223855: 813, 150128: 814, 150129: 815, 150130: 816, 125555: 817, 232051: 818, 232052: 819, 125558: 820, 232053: 821, 232054: 822, 125561: 823, 125564: 824, 232060: 825, 125566: 826, 232061: 827, 223874: 828, 232066: 829, 125580: 830, 125582: 831, 125583: 832, 125584: 833, 125585: 834, 248464: 835, 125587: 836, 232084: 837, 125589: 838, 232085: 839, 232087: 840, 248470: 841, 232089: 842, 232090: 843, 248472: 844, 232094: 845, 125599: 846, 248482: 847, 248492: 848, 232114: 849, 223925: 850, 232119: 851, 232120: 852, 232121: 853, 125630: 854, 248510: 855, 248514: 856, 248517: 857, 232135: 858, 232138: 859, 248527: 860, 232147: 861, 248532: 862, 248534: 863, 174807: 864, 223959: 865, 248541: 866, 232160: 867, 125666: 868, 223973: 869, 125676: 870, 223981: 871, 232188: 872, 232190: 873, 232191: 874, 232194: 875, 232196: 876, 224005: 877, 232198: 878, 248583: 879, 232201: 880, 224011: 881, 232207: 882, 224018: 883, 232214: 884, 224024: 885, 125728: 886, 224033: 887, 248608: 888, 224036: 889, 224038: 890, 166695: 891, 232231: 892, 232254: 893, 224077: 894, 224080: 895, 232275: 896, 84824: 897, 240484: 898, 232295: 899, 125801: 900, 125806: 901, 125807: 902, 232303: 903, 125816: 904, 232312: 905, 232313: 906, 125819: 907, 125820: 908, 232326: 909, 232327: 910, 224141: 911, 125844: 912, 125845: 913, 224148: 914, 232340: 915, 125848: 916, 232341: 917, 232353: 918, 224163: 919, 224165: 920, 232361: 921, 125875: 922, 166840: 923, 125882: 924, 125883: 925, 125884: 926, 134076: 927, 125886: 928, 175039: 929, 232378: 930, 232381: 931, 232386: 932, 125893: 933, 232390: 934, 224207: 935, 224210: 936, 52189: 937, 166881: 938, 125922: 939, 166882: 940, 240611: 941, 240614: 942, 166887: 943, 166888: 944, 166889: 945, 240617: 946, 240620: 947, 125933: 948, 224239: 949, 166898: 950, 166904: 951, 232441: 952, 175098: 953, 232443: 954, 224255: 955, 224260: 956, 248838: 957, 224268: 958, 240654: 959, 240656: 960, 240660: 961, 240662: 962, 240664: 963, 224283: 964, 240668: 965, 224287: 966, 150560: 967, 224298: 968, 232508: 969, 232509: 970, 232510: 971, 232511: 972, 166976: 973, 232512: 974, 232513: 975, 232516: 976, 232517: 977, 224359: 978, 224365: 979, 175226: 980, 248970: 981, 224416: 982, 249006: 983, 224441: 984, 232635: 985, 232636: 986, 126146: 987, 232642: 988, 249027: 989, 232645: 990, 249033: 991, 126154: 992, 232651: 993, 126156: 994, 126157: 995, 126158: 996, 232653: 997, 126160: 998, 232655: 999, 126163: 1000, 126164: 1001, 232660: 1002, 126166: 1003, 232663: 1004, 232664: 1005, 232665: 1006, 232667: 1007, 232672: 1008, 232673: 1009, 175339: 1010, 232684: 1011, 232685: 1012, 126191: 1013, 232690: 1014, 232691: 1015, 232692: 1016, 232695: 1017, 232700: 1018, 167166: 1019, 167172: 1020, 126213: 1021, 126215: 1022, 126217: 1023, 126219: 1024, 240909: 1025, 126232: 1026, 224547: 1027, 232760: 1028, 232761: 1029, 232762: 1030, 232764: 1031, 232766: 1032, 232767: 1033, 232770: 1034, 232771: 1035, 232772: 1036, 150853: 1037, 232773: 1038, 183635: 1039, 224603: 1040, 224609: 1041, 224613: 1042, 224620: 1043, 232823: 1044, 249217: 1045, 224645: 1046, 249221: 1047, 167303: 1048, 249223: 1049, 249224: 1050, 167307: 1051, 167310: 1052, 167311: 1053, 167313: 1054, 249233: 1055, 232851: 1056, 232852: 1057, 232853: 1058, 249234: 1059, 167319: 1060, 167320: 1061, 232856: 1062, 232858: 1063, 249237: 1064, 232860: 1065, 167329: 1066, 232866: 1067, 224675: 1068, 167333: 1069, 224677: 1070, 232869: 1071, 167336: 1072, 167337: 1073, 167338: 1074, 232875: 1075, 232876: 1076, 232877: 1077, 249263: 1078, 232883: 1079, 167350: 1080, 232887: 1081, 142776: 1082, 232888: 1083, 232899: 1084, 167401: 1085, 167402: 1086, 126453: 1087, 232971: 1088, 126476: 1089, 232978: 1090, 232979: 1091, 232981: 1092, 208407: 1093, 232984: 1094, 232985: 1095, 232986: 1096, 232987: 1097, 232993: 1098, 232995: 1099, 151077: 1100, 175654: 1101, 175655: 1102, 175657: 1103, 175658: 1104, 233001: 1105, 175660: 1106, 175661: 1107, 233003: 1108, 175663: 1109, 233006: 1110, 175665: 1111, 233009: 1112, 175667: 1113, 233011: 1114, 233012: 1115, 175670: 1116, 233015: 1117, 175672: 1118, 249393: 1119, 233018: 1120, 249396: 1121, 233020: 1122, 249397: 1123, 249398: 1124, 233023: 1125, 249399: 1126, 249401: 1127, 249402: 1128, 249403: 1129, 249404: 1130, 233029: 1131, 233030: 1132, 167495: 1133, 200264: 1134, 249410: 1135, 249411: 1136, 249412: 1137, 126557: 1138, 233059: 1139, 224886: 1140, 224907: 1141, 241291: 1142, 175778: 1143, 175791: 1144, 249528: 1145, 224957: 1146, 233149: 1147, 224973: 1148, 93903: 1149, 126672: 1150, 224975: 1151, 233179: 1152, 233187: 1153, 233191: 1154, 184049: 1155, 184050: 1156, 200433: 1157, 184052: 1158, 225017: 1159, 225018: 1160, 167675: 1161, 249880: 1162, 225021: 1163, 249881: 1164, 225024: 1165, 175872: 1166, 184064: 1167, 225027: 1168, 184067: 1169, 175877: 1170, 175878: 1171, 184069: 1172, 225031: 1173, 184073: 1174, 175883: 1175, 175885: 1176, 175886: 1177, 249884: 1178, 175890: 1179, 200480: 1180, 249889: 1181, 118571: 1182, 249890: 1183, 118580: 1184, 249656: 1185, 233273: 1186, 249894: 1187, 167749: 1188, 118598: 1189, 249895: 1190, 118600: 1191, 151370: 1192, 151371: 1193, 225107: 1194, 225109: 1195, 118613: 1196, 167765: 1197, 167768: 1198, 167769: 1199, 225113: 1200, 200539: 1201, 167774: 1202, 225118: 1203, 167777: 1204, 225124: 1205, 167784: 1206, 225133: 1207, 225139: 1208, 225150: 1209, 151425: 1210, 245025: 1211, 200597: 1212, 233367: 1213, 200600: 1214, 245027: 1215, 249756: 1216, 245028: 1217, 85945: 1218, 118715: 1219, 245034: 1220, 241599: 1221, 241603: 1222, 143309: 1223, 143310: 1224, 143311: 1225, 143314: 1226, 85972: 1227, 143316: 1228, 200662: 1229, 143319: 1230, 200663: 1231, 143321: 1232, 143322: 1233, 176093: 1234, 184286: 1235, 167909: 1236, 225254: 1237, 225255: 1238, 233448: 1239, 225257: 1240, 225258: 1241, 233449: 1242, 233451: 1243, 184301: 1244, 249928: 1245, 184303: 1246, 184304: 1247, 249929: 1248, 249931: 1249, 249933: 1250, 249934: 1251, 249866: 1252, 184333: 1253, 249873: 1254, 225298: 1255, 241682: 1256, 241684: 1257, 241685: 1258, 225302: 1259, 176151: 1260, 241686: 1261, 249874: 1262, 249875: 1263, 249877: 1264, 176156: 1265, 249878: 1266, 176158: 1267, 184350: 1268, 241694: 1269, 176161: 1270, 241698: 1271, 143395: 1272, 176163: 1273, 143397: 1274, 249886: 1275, 249888: 1276, 176168: 1277, 176169: 1278, 176170: 1279, 233512: 1280, 233516: 1281, 176173: 1282, 241706: 1283, 233519: 1284, 176176: 1285, 233520: 1286, 249897: 1287, 233523: 1288, 249899: 1289, 249901: 1290, 241718: 1291, 167991: 1292, 167992: 1293, 225338: 1294, 143419: 1295, 143420: 1296, 143421: 1297, 225339: 1298, 225340: 1299, 225341: 1300, 225345: 1301, 225346: 1302, 225347: 1303, 168004: 1304, 168005: 1305, 225348: 1306, 143431: 1307, 225351: 1308, 249927: 1309, 168010: 1310, 143435: 1311, 143436: 1312, 168013: 1313, 168014: 1314, 233547: 1315, 225360: 1316, 225361: 1317, 241740: 1318, 249930: 1319, 225364: 1320, 249932: 1321, 168022: 1322, 168023: 1323, 176215: 1324, 176216: 1325, 249937: 1326, 176219: 1327, 225372: 1328, 249940: 1329, 176222: 1330, 249942: 1331, 249943: 1332, 249944: 1333, 249945: 1334, 249946: 1335, 176228: 1336, 249948: 1337, 176230: 1338, 249950: 1339, 176232: 1340, 143465: 1341, 176233: 1342, 143467: 1343, 143468: 1344, 176235: 1345, 176237: 1346, 143471: 1347, 143472: 1348, 176240: 1349, 176236: 1350, 241775: 1351, 143476: 1352, 143480: 1353, 176252: 1354, 176253: 1355, 176254: 1356, 176255: 1357, 176256: 1358, 249957: 1359, 176264: 1360, 176267: 1361, 151703: 1362, 209048: 1363, 168096: 1364, 143521: 1365, 143522: 1366, 143526: 1367, 241831: 1368, 94400: 1369, 241859: 1370, 143562: 1371, 143565: 1372, 143569: 1373, 143575: 1374, 143576: 1375, 241883: 1376, 241884: 1377, 241891: 1378, 143593: 1379, 143598: 1380, 143601: 1381, 143602: 1382, 233716: 1383, 86299: 1384, 86301: 1385, 225577: 1386, 143659: 1387, 143663: 1388, 143664: 1389, 143665: 1390, 143666: 1391, 143668: 1392, 143670: 1393, 143673: 1394, 143674: 1395, 143675: 1396, 143677: 1397, 241983: 1398, 176448: 1399, 176449: 1400, 176450: 1401, 225602: 1402, 176452: 1403, 176455: 1404, 176456: 1405, 176457: 1406, 176458: 1407, 176461: 1408, 176463: 1409, 176464: 1410, 233809: 1411, 176467: 1412, 233811: 1413, 233812: 1414, 233813: 1415, 233814: 1416, 233815: 1417, 249936: 1418, 233821: 1419, 242014: 1420, 233824: 1421, 233826: 1422, 242021: 1423, 176489: 1424, 176490: 1425, 176491: 1426, 176497: 1427, 176499: 1428, 176500: 1429, 176501: 1430, 176503: 1431, 242046: 1432, 176513: 1433, 249938: 1434, 242061: 1435, 233878: 1436, 249939: 1437, 242115: 1438, 242118: 1439, 176588: 1440, 176589: 1441, 176590: 1442, 176592: 1443, 176594: 1444, 176595: 1445, 176596: 1446, 176597: 1447, 176598: 1448, 176599: 1449, 176601: 1450, 176602: 1451, 176603: 1452, 176604: 1453, 250330: 1454, 176606: 1455, 168415: 1456, 176608: 1457, 250332: 1458, 176610: 1459, 176612: 1460, 176613: 1461, 176616: 1462, 176618: 1463, 176619: 1464, 176620: 1465, 176625: 1466, 176627: 1467, 176629: 1468, 168439: 1469, 168440: 1470, 184827: 1471, 242174: 1472, 242183: 1473, 225802: 1474, 225803: 1475, 242188: 1476, 225805: 1477, 168465: 1478, 242196: 1479, 225814: 1480, 168473: 1481, 225822: 1482, 168481: 1483, 168482: 1484, 242211: 1485, 168484: 1486, 168491: 1487, 242220: 1488, 168495: 1489, 234044: 1490, 234047: 1491, 234052: 1492, 234054: 1493, 225870: 1494, 234062: 1495, 225872: 1496, 234063: 1497, 225882: 1498, 249947: 1499, 94831: 1500, 135792: 1501, 168568: 1502, 234106: 1503, 234113: 1504, 234115: 1505, 168580: 1506, 234116: 1507, 234117: 1508, 234118: 1509, 234119: 1510, 234120: 1511, 234122: 1512, 234123: 1513, 234124: 1514, 234127: 1515, 234129: 1516, 234131: 1517, 234133: 1518, 234137: 1519, 249949: 1520, 234139: 1521, 168605: 1522, 234144: 1523, 234145: 1524, 234146: 1525, 234147: 1526, 234149: 1527, 234150: 1528, 234151: 1529, 234152: 1530, 234153: 1531, 234154: 1532, 234155: 1533, 234157: 1534, 234159: 1535, 234161: 1536, 234162: 1537, 242361: 1538, 185025: 1539, 168643: 1540, 249951: 1541, 168652: 1542, 250572: 1543, 234196: 1544, 242395: 1545, 242399: 1546, 168678: 1547, 245195: 1548, 168687: 1549, 234225: 1550, 176888: 1551, 234232: 1552, 144131: 1553, 168710: 1554, 94987: 1555, 234286: 1556, 234289: 1557, 234290: 1558, 168757: 1559, 234296: 1560, 119618: 1561, 119627: 1562, 250699: 1563, 136013: 1564, 168781: 1565, 250701: 1566, 144209: 1567, 168789: 1568, 234329: 1569, 242525: 1570, 168815: 1571, 168825: 1572, 177022: 1573, 242580: 1574, 168866: 1575, 250786: 1576, 250790: 1577, 168873: 1578, 242609: 1579, 242622: 1580, 242623: 1581, 242624: 1582, 119747: 1583, 250820: 1584, 168902: 1585, 226249: 1586, 242637: 1587, 152526: 1588, 152529: 1589, 193494: 1590, 201689: 1591, 62430: 1592, 62432: 1593, 62433: 1594, 62435: 1595, 168932: 1596, 62437: 1597, 242669: 1598, 226291: 1599, 242676: 1600, 168952: 1601, 234493: 1602, 177152: 1603, 250880: 1604, 242690: 1605, 234500: 1606, 234501: 1607, 119816: 1608, 234507: 1609, 226316: 1610, 234508: 1611, 234509: 1612, 119823: 1613, 168975: 1614, 234514: 1615, 226326: 1616, 177177: 1617, 226331: 1618, 234523: 1619, 234525: 1620, 234527: 1621, 234529: 1622, 234530: 1623, 234531: 1624, 234532: 1625, 234533: 1626, 234534: 1627, 234535: 1628, 234536: 1629, 234537: 1630, 234538: 1631, 242722: 1632, 234540: 1633, 234541: 1634, 169006: 1635, 234542: 1636, 234544: 1637, 234545: 1638, 234546: 1639, 234547: 1640, 234549: 1641, 234550: 1642, 234552: 1643, 62521: 1644, 234553: 1645, 234554: 1646, 193596: 1647, 234556: 1648, 234557: 1649, 119871: 1650, 234558: 1651, 234559: 1652, 234560: 1653, 234563: 1654, 234564: 1655, 234565: 1656, 234566: 1657, 119879: 1658, 234567: 1659, 234568: 1660, 234569: 1661, 234570: 1662, 234572: 1663, 234573: 1664, 193616: 1665, 234576: 1666, 234578: 1667, 193626: 1668, 226394: 1669, 226395: 1670, 226397: 1671, 169055: 1672, 226407: 1673, 169066: 1674, 119915: 1675, 234602: 1676, 242799: 1677, 226443: 1678, 226445: 1679, 177322: 1680, 177325: 1681, 177337: 1682, 177339: 1683, 177342: 1684, 177344: 1685, 242900: 1686, 242903: 1687, 242905: 1688, 242907: 1689, 242909: 1690, 242913: 1691, 226547: 1692, 226555: 1693, 169230: 1694, 234768: 1695, 136471: 1696, 169245: 1697, 226589: 1698, 177439: 1699, 169249: 1700, 202017: 1701, 169258: 1702, 152879: 1703, 177471: 1704, 128320: 1705, 120129: 1706, 243014: 1707, 251207: 1708, 152904: 1709, 169289: 1710, 152906: 1711, 251209: 1712, 251212: 1713, 177486: 1714, 251214: 1715, 251215: 1716, 251216: 1717, 169298: 1718, 243027: 1719, 251217: 1720, 251219: 1721, 251221: 1722, 226654: 1723, 144737: 1724, 234864: 1725, 251252: 1726, 95610: 1727, 234877: 1728, 251261: 1729, 251263: 1730, 251264: 1731, 234881: 1732, 234882: 1733, 251268: 1734, 234887: 1735, 251274: 1736, 169355: 1737, 234891: 1738, 234892: 1739, 251277: 1740, 234896: 1741, 251282: 1742, 169371: 1743, 226722: 1744, 120229: 1745, 169382: 1746, 226727: 1747, 226728: 1748, 226729: 1749, 226730: 1750, 226731: 1751, 251311: 1752, 226736: 1753, 177584: 1754, 251312: 1755, 177587: 1756, 177591: 1757, 226747: 1758, 226753: 1759, 251339: 1760, 120268: 1761, 251342: 1762, 226774: 1763, 226779: 1764, 226780: 1765, 226783: 1766, 226787: 1767, 226789: 1768, 177638: 1769, 177639: 1770, 169448: 1771, 120297: 1772, 251365: 1773, 251369: 1774, 251371: 1775, 226805: 1776, 169466: 1777, 226811: 1778, 226819: 1779, 226826: 1780, 169487: 1781, 226835: 1782, 169501: 1783, 251427: 1784, 169508: 1785, 226857: 1786, 120366: 1787, 169518: 1788, 177715: 1789, 177716: 1790, 177719: 1791, 177725: 1792, 120384: 1793, 235075: 1794, 120392: 1795, 120393: 1796, 243274: 1797, 251465: 1798, 177742: 1799, 177743: 1800, 120400: 1801, 177748: 1802, 235094: 1803, 235095: 1804, 235096: 1805, 226907: 1806, 235099: 1807, 235101: 1808, 235103: 1809, 235106: 1810, 235107: 1811, 235108: 1812, 235109: 1813, 235116: 1814, 235118: 1815, 136815: 1816, 235120: 1817, 226934: 1818, 218744: 1819, 226936: 1820, 226938: 1821, 226939: 1822, 226940: 1823, 169597: 1824, 120457: 1825, 235146: 1826, 235147: 1827, 235149: 1828, 235150: 1829, 235151: 1830, 120464: 1831, 235152: 1832, 177810: 1833, 235153: 1834, 235155: 1835, 235156: 1836, 235158: 1837, 177816: 1838, 169625: 1839, 177818: 1840, 235161: 1841, 235162: 1842, 235164: 1843, 120478: 1844, 235165: 1845, 120480: 1846, 235167: 1847, 235169: 1848, 235170: 1849, 202406: 1850, 235178: 1851, 235183: 1852, 120497: 1853, 235185: 1854, 169653: 1855, 226999: 1856, 235192: 1857, 227001: 1858, 235193: 1859, 169659: 1860, 235197: 1861, 235198: 1862, 243389: 1863, 235203: 1864, 227013: 1865, 227014: 1866, 235205: 1867, 227016: 1868, 235207: 1869, 235210: 1870, 235211: 1871, 235212: 1872, 235213: 1873, 235214: 1874, 120527: 1875, 243404: 1876, 243409: 1877, 194258: 1878, 227026: 1879, 235218: 1880, 227029: 1881, 235221: 1882, 227031: 1883, 235223: 1884, 227033: 1885, 235224: 1886, 243416: 1887, 235228: 1888, 235229: 1889, 235230: 1890, 227039: 1891, 227040: 1892, 235233: 1893, 227043: 1894, 235235: 1895, 235237: 1896, 235238: 1897, 227047: 1898, 235240: 1899, 227049: 1900, 169706: 1901, 235242: 1902, 227052: 1903, 227053: 1904, 235243: 1905, 235244: 1906, 235246: 1907, 235247: 1908, 235249: 1909, 243442: 1910, 235253: 1911, 235254: 1912, 120567: 1913, 235255: 1914, 235257: 1915, 235259: 1916, 243451: 1917, 251644: 1918, 251646: 1919, 235263: 1920, 251647: 1921, 251648: 1922, 235266: 1923, 251649: 1924, 169732: 1925, 120581: 1926, 251650: 1927, 251651: 1928, 251653: 1929, 251654: 1930, 227082: 1931, 227083: 1932, 251655: 1933, 227085: 1934, 251656: 1935, 227089: 1936, 235282: 1937, 227091: 1938, 227092: 1939, 227093: 1940, 235286: 1941, 235288: 1942, 227098: 1943, 169755: 1944, 235292: 1945, 227102: 1946, 227104: 1947, 227105: 1948, 235297: 1949, 227114: 1950, 227115: 1951, 227117: 1952, 227118: 1953, 227119: 1954, 227123: 1955, 120629: 1956, 227126: 1957, 227127: 1958, 87868: 1959, 243529: 1960, 235342: 1961, 235344: 1962, 235347: 1963, 235352: 1964, 243793: 1965, 235354: 1966, 137053: 1967, 169821: 1968, 235359: 1969, 235360: 1970, 227170: 1971, 235363: 1972, 120676: 1973, 235365: 1974, 227177: 1975, 235369: 1976, 235371: 1977, 202605: 1978, 227181: 1979, 235374: 1980, 235375: 1981, 235376: 1982, 227186: 1983, 235377: 1984, 235379: 1985, 235382: 1986, 227191: 1987, 235388: 1988, 235395: 1989, 235396: 1990, 235398: 1991, 235399: 1992, 178057: 1993, 235402: 1994, 235409: 1995, 235411: 1996, 235412: 1997, 235414: 1998, 235415: 1999, 235417: 2000, 227226: 2001, 235419: 2002, 235420: 2003, 235421: 2004, 235429: 2005, 227238: 2006, 227270: 2007, 243655: 2008, 169933: 2009, 243664: 2010, 243665: 2011, 243670: 2012, 227303: 2013, 227308: 2014, 235501: 2015, 227316: 2016, 235514: 2017, 251900: 2018, 235518: 2019, 227327: 2020, 235521: 2021, 235522: 2022, 235523: 2023, 227332: 2024, 235524: 2025, 235525: 2026, 235526: 2027, 235527: 2028, 235528: 2029, 235530: 2030, 235531: 2031, 235532: 2032, 235534: 2033, 169999: 2034, 227344: 2035, 235543: 2036, 235552: 2037, 227365: 2038, 235563: 2039, 235569: 2040, 235570: 2041, 235572: 2042, 227381: 2043, 235575: 2044, 235576: 2045, 235578: 2046, 251964: 2047, 235581: 2048, 235582: 2049, 235583: 2050, 243778: 2051, 235587: 2052, 235589: 2053, 235590: 2054, 235591: 2055, 235592: 2056, 227403: 2057, 227404: 2058, 235595: 2059, 235597: 2060, 235598: 2061, 235600: 2062, 243789: 2063, 243790: 2064, 235603: 2065, 235604: 2066, 178261: 2067, 227414: 2068, 235605: 2069, 235606: 2070, 235607: 2071, 170074: 2072, 235611: 2073, 235612: 2074, 227437: 2075, 96366: 2076, 243823: 2077, 96370: 2078, 235635: 2079, 96372: 2080, 235637: 2081, 227446: 2082, 96377: 2083, 227449: 2084, 96379: 2085, 227450: 2086, 227451: 2087, 227455: 2088, 243840: 2089, 252037: 2090, 227462: 2091, 227463: 2092, 235655: 2093, 235656: 2094, 235657: 2095, 235658: 2096, 235659: 2097, 252039: 2098, 252040: 2099, 170128: 2100, 96401: 2101, 96402: 2102, 227477: 2103, 227479: 2104, 235672: 2105, 96409: 2106, 120986: 2107, 227481: 2108, 227483: 2109, 227485: 2110, 227486: 2111, 227487: 2112, 227488: 2113, 227489: 2114, 227491: 2115, 227492: 2116, 227495: 2117, 227496: 2118, 227497: 2119, 227498: 2120, 227499: 2121, 227500: 2122, 227504: 2123, 227514: 2124, 186557: 2125, 227518: 2126, 227521: 2127, 227522: 2128, 170180: 2129, 227524: 2130, 227526: 2131, 227527: 2132, 170184: 2133, 178377: 2134, 227530: 2135, 227532: 2136, 170189: 2137, 227533: 2138, 227539: 2139, 235733: 2140, 121046: 2141, 227542: 2142, 227543: 2143, 227545: 2144, 235734: 2145, 170203: 2146, 235735: 2147, 227549: 2148, 227550: 2149, 235736: 2150, 235738: 2151, 227553: 2152, 227554: 2153, 235739: 2154, 227556: 2155, 227557: 2156, 227558: 2157, 227559: 2158, 170216: 2159, 227560: 2160, 170218: 2161, 227561: 2162, 227564: 2163, 227565: 2164, 235749: 2165, 227567: 2166, 137456: 2167, 227569: 2168, 235758: 2169, 235764: 2170, 170239: 2171, 243967: 2172, 235779: 2173, 235781: 2174, 235782: 2175, 227596: 2176, 235788: 2177, 235789: 2178, 235791: 2179, 235792: 2180, 235793: 2181, 235794: 2182, 235740: 2183, 235796: 2184, 235797: 2185, 243981: 2186, 235801: 2187, 235802: 2188, 235742: 2189, 235806: 2190, 235808: 2191, 235744: 2192, 235745: 2193, 235746: 2194, 235747: 2195, 227643: 2196, 235748: 2197, 227647: 2198, 227651: 2199, 227653: 2200, 235750: 2201, 129351: 2202, 227655: 2203, 227661: 2204, 227663: 2205, 244048: 2206, 227665: 2207, 235863: 2208, 227675: 2209, 227679: 2210, 244071: 2211, 227688: 2212, 244072: 2213, 227691: 2214, 244078: 2215, 235890: 2216, 244102: 2217, 244114: 2218, 235924: 2219, 227733: 2220, 244119: 2221, 227736: 2222, 170394: 2223, 170396: 2224, 121248: 2225, 227745: 2226, 227746: 2227, 121254: 2228, 186801: 2229, 186802: 2230, 186807: 2231, 227769: 2232, 227779: 2233, 244166: 2234, 235975: 2235, 227784: 2236, 235976: 2237, 227786: 2238, 227787: 2239, 235980: 2240, 227789: 2241, 235981: 2242, 235983: 2243, 227792: 2244, 227793: 2245, 235985: 2246, 154067: 2247, 227795: 2248, 227796: 2249, 227798: 2250, 235987: 2251, 186840: 2252, 227801: 2253, 235990: 2254, 235991: 2255, 244179: 2256, 235997: 2257, 235998: 2258, 244186: 2259, 244187: 2260, 244188: 2261, 244190: 2262, 236006: 2263, 236008: 2264, 244201: 2265, 236024: 2266, 236028: 2267, 121341: 2268, 121346: 2269, 227846: 2270, 121353: 2271, 236045: 2272, 236050: 2273, 236053: 2274, 236055: 2275, 236056: 2276, 236057: 2277, 121370: 2278, 121371: 2279, 236059: 2280, 178720: 2281, 227873: 2282, 236064: 2283, 236065: 2284, 236069: 2285, 244264: 2286, 121389: 2287, 178734: 2288, 227887: 2289, 227888: 2290, 244284: 2291, 121406: 2292, 121407: 2293, 244286: 2294, 96835: 2295, 244299: 2296, 121429: 2297, 227926: 2298, 227937: 2299, 227938: 2300, 227940: 2301, 170597: 2302, 170598: 2303, 227941: 2304, 227942: 2305, 170610: 2306, 219778: 2307, 227972: 2308, 227974: 2309, 227976: 2310, 228009: 2311, 236211: 2312, 236213: 2313, 72374: 2314, 170688: 2315, 228043: 2316, 244439: 2317, 245800: 2318, 121588: 2319, 170748: 2320, 137986: 2321, 146194: 2322, 244500: 2323, 244503: 2324, 244505: 2325, 244506: 2326, 244512: 2327, 236323: 2328, 178980: 2329, 244515: 2330, 244519: 2331, 138024: 2332, 244521: 2333, 244522: 2334, 228139: 2335, 228143: 2336, 228148: 2337, 244534: 2338, 228152: 2339, 170812: 2340, 228157: 2341, 244541: 2342, 228160: 2343, 228162: 2344, 129865: 2345, 228175: 2346, 170840: 2347, 129882: 2348, 228189: 2349, 228193: 2350, 228195: 2351, 129892: 2352, 228200: 2353, 228210: 2354, 245806: 2355, 228218: 2356, 220033: 2357, 247262: 2358, 244620: 2359, 179085: 2360, 228237: 2361, 236431: 2362, 244623: 2363, 228245: 2364, 244630: 2365, 228247: 2366, 121752: 2367, 244636: 2368, 220063: 2369, 228255: 2370, 244641: 2371, 228258: 2372, 244647: 2373, 228266: 2374, 121776: 2375, 244668: 2376, 244669: 2377, 220094: 2378, 247273: 2379, 220096: 2380, 220097: 2381, 228290: 2382, 247274: 2383, 220100: 2384, 247275: 2385, 220105: 2386, 244682: 2387, 244686: 2388, 247277: 2389, 244691: 2390, 244695: 2391, 244698: 2392, 244702: 2393, 89056: 2394, 220146: 2395, 220148: 2396, 121847: 2397, 220152: 2398, 220154: 2399, 220155: 2400, 220156: 2401, 220159: 2402, 220161: 2403, 121859: 2404, 220165: 2405, 220167: 2406, 244756: 2407, 244758: 2408, 244761: 2409, 244767: 2410, 244768: 2411, 244773: 2412, 171048: 2413, 244776: 2414, 138282: 2415, 171050: 2416, 220203: 2417, 244778: 2418, 220206: 2419, 236590: 2420, 171059: 2421, 220211: 2422, 220212: 2423, 220213: 2424, 220214: 2425, 220215: 2426, 228410: 2427, 220219: 2428, 228411: 2429, 228414: 2430, 228415: 2431, 236607: 2432, 228417: 2433, 228419: 2434, 220229: 2435, 228421: 2436, 220231: 2437, 220233: 2438, 228425: 2439, 89163: 2440, 228427: 2441, 228431: 2442, 220249: 2443, 220265: 2444, 220267: 2445, 236652: 2446, 220270: 2447, 220276: 2448, 220279: 2449, 220280: 2450, 179321: 2451, 220282: 2452, 220284: 2453, 220285: 2454, 220286: 2455, 220287: 2456, 220288: 2457, 220290: 2458, 220292: 2459, 220293: 2460, 220294: 2461, 220296: 2462, 220298: 2463, 244874: 2464, 244876: 2465, 236687: 2466, 236688: 2467, 236689: 2468, 236691: 2469, 171156: 2470, 236692: 2471, 244888: 2472, 236699: 2473, 171164: 2474, 236709: 2475, 236711: 2476, 236715: 2477, 236716: 2478, 146605: 2479, 236721: 2480, 236722: 2481, 122038: 2482, 122045: 2483, 122047: 2484, 244943: 2485, 195793: 2486, 244949: 2487, 228566: 2488, 244953: 2489, 244955: 2490, 244976: 2491, 122100: 2492, 236788: 2493, 236790: 2494, 244983: 2495, 236792: 2496, 236793: 2497, 122106: 2498, 236795: 2499, 236796: 2500, 244987: 2501, 236798: 2502, 220423: 2503, 228617: 2504, 245001: 2505, 220432: 2506, 228624: 2507, 220434: 2508, 220435: 2509, 220436: 2510, 245009: 2511, 245010: 2512, 245011: 2513, 220440: 2514, 245012: 2515, 220442: 2516, 220443: 2517, 245013: 2518, 245014: 2519, 220446: 2520, 245015: 2521, 245016: 2522, 245017: 2523, 220450: 2524, 245018: 2525, 245019: 2526, 245020: 2527, 245021: 2528, 245022: 2529, 245023: 2530, 245024: 2531, 220458: 2532, 245026: 2533, 220460: 2534, 220461: 2535, 245029: 2536, 245030: 2537, 245031: 2538, 245032: 2539, 245033: 2540, 220467: 2541, 220468: 2542, 220470: 2543, 220472: 2544, 220474: 2545, 228670: 2546, 122176: 2547, 228672: 2548, 122180: 2549, 122181: 2550, 122186: 2551, 179533: 2552, 220518: 2553, 122238: 2554, 220545: 2555, 122242: 2556, 122244: 2557, 89485: 2558, 220563: 2559, 122262: 2560, 245144: 2561, 228778: 2562, 122283: 2563, 179636: 2564, 122293: 2565, 220596: 2566, 245174: 2567, 220603: 2568, 220608: 2569, 220609: 2570, 220610: 2571, 220611: 2572, 220612: 2573, 228803: 2574, 228805: 2575, 228806: 2576, 220616: 2577, 228808: 2578, 228809: 2579, 228810: 2580, 228811: 2581, 228812: 2582, 220622: 2583, 228813: 2584, 228815: 2585, 220625: 2586, 228816: 2587, 228817: 2588, 228818: 2589, 228820: 2590, 228822: 2591, 220633: 2592, 179675: 2593, 220639: 2594, 220641: 2595, 171542: 2596, 171543: 2597, 171546: 2598, 171547: 2599, 171548: 2600, 171552: 2601, 171554: 2602, 228898: 2603, 228899: 2604, 220715: 2605, 220717: 2606, 171566: 2607, 220719: 2608, 220720: 2609, 220723: 2610, 220727: 2611, 220728: 2612, 220729: 2613, 237114: 2614, 220731: 2615, 220737: 2616, 122437: 2617, 245319: 2618, 179797: 2619, 237146: 2620, 220767: 2621, 237152: 2622, 138901: 2623, 171688: 2624, 244167: 2625, 245796: 2626, 244168: 2627, 237249: 2628, 237250: 2629, 237251: 2630, 244170: 2631, 245799: 2632, 237254: 2633, 244171: 2634, 237258: 2635, 237259: 2636, 237260: 2637, 237261: 2638, 237262: 2639, 237263: 2640, 237264: 2641, 237265: 2642, 237266: 2643, 244172: 2644, 245801: 2645, 237270: 2646, 237273: 2647, 237274: 2648, 237275: 2649, 237276: 2650, 237277: 2651, 237278: 2652, 245804: 2653, 237281: 2654, 237282: 2655, 245805: 2656, 220900: 2657, 237285: 2658, 237286: 2659, 237287: 2660, 237288: 2661, 220905: 2662, 220906: 2663, 237290: 2664, 220908: 2665, 237292: 2666, 244178: 2667, 237295: 2668, 237296: 2669, 220913: 2670, 220916: 2671, 220918: 2672, 220923: 2673, 122622: 2674, 245520: 2675, 220966: 2676, 237373: 2677, 81726: 2678, 122698: 2679, 237390: 2680, 122709: 2681, 171861: 2682, 237405: 2683, 237409: 2684, 180081: 2685, 180085: 2686, 237431: 2687, 147322: 2688, 237434: 2689, 237436: 2690, 237440: 2691, 237441: 2692, 122760: 2693, 245643: 2694, 122765: 2695, 122767: 2696, 221072: 2697, 122777: 2698, 122795: 2699, 180144: 2700, 245683: 2701, 171963: 2702, 171964: 2703, 171967: 2704, 171968: 2705, 171970: 2706, 171973: 2707, 171974: 2708, 171975: 2709, 245705: 2710, 188366: 2711, 180193: 2712, 172003: 2713, 180208: 2714, 172026: 2715, 172027: 2716}
batches = [ [] for i in range(len(student_set)) ]
idxs_batches = [ [] for i in range(len(student_set)) ]
transition_count = np.zeros((n_items, n_items))
for i in tqdm(range(len(student_id))) :
student_idx = student_id_to_idx[student_id[i]]
batches[student_idx].append( encoded[i] )
idxs_batches[student_idx].append( idxs[i] )
if len(idxs_batches[student_idx]) > 1:
i = idxs_batches[student_idx][-2]
j = idxs_batches[student_idx][-1]
if i != j:
transition_count[i,j] += 1 ### 마지막 문항과 그 전 문항이 다른 문항이면 +1(왜 하는걸까?)
print(student_id_to_idx[50121]) ### student_id가 50121는 index 299로 부여
-----------------------------------------------
299
print("batches 수: {}, idxs_batches 수: {}".format(len(batches), len(idxs_batches))) ### 학생별로 batches를 가짐
-----------------------------------------------
batches 수: 2717, idxs_batches 수: 2717
print(batches[299]) ### 첫 번째 학생 4개의 응답을 확인할 수 있음
len(batches[299])
-----------------------------------------------
[array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0.]), array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0.]), array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0.]), array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0.])]
4
print(idxs_batches[300])
print(idxs_batches[300][-2])
print(idxs_batches[300][-1])
-----------------------------------------------
[34, 34, 34, 34, 66, 66, 66, 13, 13, 13]
13
13
print(transition_count)
-----------------------------------------------
[[ 0. 0. 0. ... 0. 0. 0.]
[ 1. 0. 0. ... 1. 19. 1.]
[ 0. 0. 0. ... 0. 0. 0.]
...
[ 0. 2. 0. ... 0. 0. 8.]
[ 2. 4. 0. ... 0. 0. 3.]
[ 0. 0. 0. ... 6. 1. 0.]]
for i, b in enumerate(tqdm(batches)):
batches[i] = torch.Tensor(b).view(-1,2*n_items) ### 텐서로 변환
batches[299].shape
-----------------------------------------------
batches[299].shape