gddlZddlZdZdZeezdzZeezdzZeezdzZeezdzZdZ dd Z dd Z d Z d Z dd ZdZedk(reyy)Nzdata/mnistz/t10k-images-idx3-ubytez/t10k-labels-idx1-ubytez/train-images-idx3-ubytez/train-labels-idx1-ubytec.tj|dS)Nbig)int from_bytes) byte_datas W/Users/aayushbajaj/Documents/new-site/static/code/10khrs-ai-ml-dl/PROJECTS/ocr/numpy.py bytes_to_intr s >>)U ++cg}t|d5}|jd}t|jd}|r|}t|jd}t|jd}t|D]j}g}t|D]G}g} t|D]$}|jd} | j | &|j | I|j |l ddd|S#1swY|SxYw)zNReads IDX image file and returns a list of images (2D lists of 1-byte pixels).rbNopenreadr rangeappend) filename n_max_imagesimagesf_n_imagesn_rowsn_colsimagerowpixels r read_imagesr s F h  FF1Iq * #HaffQi(affQi(xAE6]vAFF1IEJJu%' S! # MM% !  M!  Ms CC66Dc$g}t|d5}|jd}t|jd}|r|}t|D]-}t|jd}|j |/ ddd|S#1swY|SxYw)z:Reads IDX label file and returns a list of integer labels.r rrNr)r n_max_labelslabelsrrn_labelslabels r read_labelsr&&s F h  FF1Iq * #HxA +E MM% !  M  Ms A+BBc@|Dcgc] }|D]}| c}}Scc}}w)z8Convert a 2D list of single-byte objects into a 1D list.)image_2drpixs r flatten_listr+4s"# 38CsCsC8 33 3scgd|S)N) z T-shirt/topTrouserPulloverDressCoatSandalShirtSneakerBagz Ankle bootr()r%s r get_garment_from_labelr59s    r c|jtj}|jtj}|ddtjddf|tjddddfz }tj|dzd}|j d}tj ||j} t|D]r} tj|| |d|} || } tj| d\} }| tj|| | <| dzdk(sbtd | d |t| S) z Vectorized kNN using NumPy. - X_train: shape (n_train, 784) - X_test: shape (n_test, 784) - Returns y_pred: shape (n_test,) N)axisrdtypeT) return_countsizProcessed test sample /) astypenpfloat32newaxissumshapeemptyr:r argpartitionuniqueargmaxprint)X_trainy_trainX_testk X_train_fX_test_fdiffdist_sqn_testy_predi neighbors_idxneighbor_labelsvalscountss r vectorized_knnrWHsrzz*I}}RZZ(H Arzz1$ % "**a2B(C CDffT1W1%G \\!_F XXfGMM 2F6] A6r: !-0yyE f6*+q t8q= *1#Qvh7 8 Mr c:d}d}d}tdttd|td|td|tt|}t j t t|tj}tt|}t j t t|tj}t j |Dcgc] }t|c}tj}t j |Dcgc] }t|c}tj} td td |jd |jtd | jd |jt||| |} t j| |k(} td| dzddtdk(r*| ddD cgc] } t!| } } td| ytd| ddycc}wcc}wcc} w)Ni`i'z Dataset: z n_train: zn_test: zk: r9zFinished loading data. Shapes:zX_train:zy_train:zX_test:zy_test:z Accuracy: dz.2f%fmnist zFirst 10 predicted garments: zFirst 10 predicted digits: )rGDATASETr TRAIN_DATA_FILENAMEr>arrayr&TRAIN_LABELS_FILENAMEint32TEST_DATA_FILENAMETEST_LABELS_FILENAMEr+uint8rBrWmeanr5)n_trainrPrK raw_trainrIraw_testy_testimgrHrJrQaccuracyr% garments_preds r mainrnqsG F A IgY   IgY   HVH  Cs)/9Ihh{#8'B"((SG-v6H XXk"6?rxx PF hhY?Yc S)Y?rxxPG XXH=HS|C(H=RXX NF *+ *gmmZ? )V\\9fll;GWfa 8Fwwv'(H Jx#~c*! ,-(DJ3BKPK5/6K P -m_=> +F3BK=9:+@="QsHHH__main__)N)rY)numpyr>mathDATA_DIRr^rcrdr_rar r r&r+r5rWrn__name__r(r r rts  '*CC'),EE(+EE 7*-GG,, 4  &R);X zFr