{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow import keras\nfrom sklearn.metrics import accuracy_score,confusion_matrix as ascm,classification_report as cr\nimport matplotlib.pyplot as plt\n# import cupy as cp\nimport numpy as np\nfrom PIL import Image\nimport cv2\nfrom tensorflow.keras.models import Model, load_model\nfrom tensorflow.keras.layers import *\nfrom tensorflow.keras.applications.vgg19 import VGG19\nfrom keras.utils import plot_model","metadata":{"execution":{"iopub.status.busy":"2022-09-25T17:26:25.504765Z","iopub.execute_input":"2022-09-25T17:26:25.505176Z","iopub.status.idle":"2022-09-25T17:26:25.511893Z","shell.execute_reply.started":"2022-09-25T17:26:25.505111Z","shell.execute_reply":"2022-09-25T17:26:25.510861Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install tensorflow_text\n!pip install tensorflow_hub","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nimport tensorflow as tf\nimport tensorflow_hub as hub\nimport tensorflow_text as text\nimport pandas as pd\nimport numpy as np","metadata":{"execution":{"iopub.status.busy":"2022-09-25T17:26:21.592783Z","iopub.execute_input":"2022-09-25T17:26:21.593243Z","iopub.status.idle":"2022-09-25T17:26:21.746641Z","shell.execute_reply.started":"2022-09-25T17:26:21.593205Z","shell.execute_reply":"2022-09-25T17:26:21.745685Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"bert_preprocess = hub.KerasLayer(\"https://tfhub.dev/tensorflow/bert_en_uncased_preprocess/3\")\nbert_encoder = hub.KerasLayer(\"https://tfhub.dev/tensorflow/bert_en_uncased_L-12_H-768_A-12/4\")","metadata":{"execution":{"iopub.status.busy":"2022-09-25T17:26:35.402796Z","iopub.execute_input":"2022-09-25T17:26:35.403211Z","iopub.status.idle":"2022-09-25T17:27:10.541804Z","shell.execute_reply.started":"2022-09-25T17:26:35.403175Z","shell.execute_reply":"2022-09-25T17:27:10.540773Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"img_dim=(900,600,3)\npart_dim=(300,300,3)\nimg_input=Input(shape=(900,600,3),name='image')\ntext_input=Input(shape=(),dtype=tf.string,name='text')\nbase=VGG19(weights='imagenet',include_top=False)\nfor l in base.layers:l.trainable=False\nx=base(img_input)\nx=GlobalAveragePooling2D()(x)\nx=Dense(512,activation='relu',name='base_embeding')(x)\nx=Dropout(0.2,name=\"base_dropout\")(x)\n\ny=bert_preprocess(text_input)\ny=bert_encoder(y)\ny=Dropout(0.1,name=\"dropout\")(y['pooled_output'])\ny=Dense(512,activation='relu',name='text_embeding')(y)\ny=Dropout(0.2,name=\"bert_dropout\")(y)\noutputs=[x,y]\n\nfor i in range(3):\n    for j in range(2):\n        (pr,pc,_)=part_dim\n        z=Cropping2D(cropping=((pr*i,pr*(2-i)),(pc*j,pc*(1-j))))(img_input)\n        part=VGG19(weights='imagenet',include_top=False)\n        part._name=f'vgg19_{i}{j}'\n        for l in part.layers:l.trainable=False\n        z=part(z)\n        z=GlobalAveragePooling2D()(z)\n        z=Dense(512,activation='relu',name=f'part{i}{j}_embeding')(z)\n        z=Dropout(0.2,name=f\"part{i}{j}_dropout\")(z)\n        outputs.append(z)\n\nw=Concatenate()(outputs)\nw=Dense(1024,activation='relu',name='classifier_hidden')(w)\nw=Dense(16,activation='softmax',name='classifier_output')(w)\njoint=Model(inputs=[img_input,text_input],outputs=w)\njoint.compile(optimizer='adam',loss=\"sparse_categorical_crossentropy\")","metadata":{"execution":{"iopub.status.busy":"2022-09-25T17:27:51.23927Z","iopub.execute_input":"2022-09-25T17:27:51.239646Z","iopub.status.idle":"2022-09-25T17:27:54.980367Z","shell.execute_reply.started":"2022-09-25T17:27:51.239613Z","shell.execute_reply":"2022-09-25T17:27:54.979388Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport keras\nfrom sklearn.metrics import accuracy_score,confusion_matrix as ascm,classification_report as cr\nimport matplotlib.pyplot as plt\nimport pandas as pd\nfrom PIL import Image\nimport cv2\nfrom tensorflow.keras.preprocessing import image\nfrom tensorflow.keras.applications.efficientnet_v2 import preprocess_input, decode_predictions\n\nclass Generator(keras.utils.Sequence):\n    'Generates data for Keras'\n    def __init__(self,batch_size=30,whole_dim=(900,600,3),part_dim=(300,300,3),\n                 n_classes=16,part=(0,0),shuffle=True,offset=0,N=5000,\n                 path=('/kaggle/input/datathonindoml-2022/train_labels.csv',\n                       '/kaggle/input/datathonindoml-2022/train/train/','ocr-dataset/train_ocr/')):\n        'Initialization'\n        self.whole_dim = whole_dim\n        self.part_dim = part_dim        \n        self.batch_size = batch_size\n        self.n_classes = n_classes\n        self.shuffle = shuffle\n        self.N=N\n        self.offset=offset\n        self.on_epoch_end()\n        self.path=path\n        self.part=part\n        self.labels=np.array(pd.read_csv(open(path[0]),header = 0)['label'])\n        ocr=[]\n        for _ in range(16000):\n            with open(path[2]+str(_)+'.txt') as f:\n                lines = f.readlines()\n                s=''\n                for i in lines:s+=i\n                ocr.append(s)\n        self.ocr=np.array(ocr)\n\n    def __len__(self):\n        'Denotes the number of batches per epoch'\n        return int(np.floor(self.N/self.batch_size))\n\n    def __getitem__(self,index):\n        'Generate one batch of data'\n        # Generate indices of the batch\n        indices = self.indices[index*self.batch_size:(index+1)*self.batch_size]\n        return self.__data_generation(indices)\n\n    def on_epoch_end(self):\n        'Updates indexes after each epoch'\n        self.indices = np.arange(self.offset,self.offset+self.N,dtype='int')\n        if self.shuffle == True:\n            np.random.shuffle(self.indices)\n\n    def __data_generation(self,indices):\n        'Generates data containing batch_size samples' # X : (n_samples, *dim, n_channels)\n        # Initialization\n        X = np.empty((self.batch_size,*self.part_dim))\n        y = np.empty((self.batch_size),dtype=int)\n        \n        # Generate data\n        for i,ID in enumerate(indices):\n            img_path = self.path[1]+str(ID)+'.tif'\n            img = image.load_img(img_path,target_size=self.whole_dim)\n            x = image.img_to_array(img)\n            x = np.expand_dims(x,axis=0)\n            x = preprocess_input(x)\n            # Store sample\n#             (r,c,_)=self.whole_dim\n            (pr,pc,_)=self.part_dim\n            pi,pj=self.part\n#             print(f'{(pr*pi)}:{(pr*(pi+1))},{(pc*pj)}:{(pc*(pj+1))},:')\n#             print(x.shape)\n#             print(x[(pr*pi):(pr*(pi+1)),(pc*pj):(pc*(pj+1)),:].shape)\n            X[i]=x[0,(pr*pi):(pr*(pi+1)),(pc*pj):(pc*(pj+1)),:]\n            # Store class\n            y[i] = self.labels[ID]\n        return {'image':X,'text':self.ocr[indices]},y","metadata":{"execution":{"iopub.status.busy":"2022-09-25T17:37:46.830531Z","iopub.execute_input":"2022-09-25T17:37:46.830924Z","iopub.status.idle":"2022-09-25T17:37:46.851081Z","shell.execute_reply.started":"2022-09-25T17:37:46.830892Z","shell.execute_reply":"2022-09-25T17:37:46.850002Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"params = {'batch_size':10,'n_classes':16,'shuffle':True,\n          'whole_dim':(900,600,3),'part_dim':(900,600,3),'n_classes':16,\n          'path':('/kaggle/input/datathonindoml-2022/train_labels.csv',\n            '/kaggle/input/datathonindoml-2022/train/train/','/kaggle/input/ocr-dataset/train_ocr/')}\nxy_train_gen=Generator(N=12000,part=(0,0),**params,offset=0)\nxy_test_gen=Generator(N=1000,part=(0,0),**params,offset=15000)","metadata":{"execution":{"iopub.status.busy":"2022-09-25T17:46:46.888333Z","iopub.execute_input":"2022-09-25T17:46:46.888705Z","iopub.status.idle":"2022-09-25T17:47:46.781894Z","shell.execute_reply.started":"2022-09-25T17:46:46.888675Z","shell.execute_reply":"2022-09-25T17:47:46.78088Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"failsafe= [\n#     tf.keras.callbacks.EarlyStopping(patience=2),\n    tf.keras.callbacks.ModelCheckpoint(filepath='joint.{epoch:02d}-{val_loss:.2f}.h5')\n#     tf.keras.callbacks.TensorBoard(log_dir='./logs'),\n]\nhist=joint.fit(xy_train_gen,epochs=10,callbacks=failsafe,\n               validation_data=xy_test_gen,use_multiprocessing=True,workers=6)","metadata":{"execution":{"iopub.status.busy":"2022-09-25T17:47:46.78519Z","iopub.execute_input":"2022-09-25T17:47:46.785827Z","iopub.status.idle":"2022-09-25T17:48:04.367556Z","shell.execute_reply.started":"2022-09-25T17:47:46.785782Z","shell.execute_reply":"2022-09-25T17:48:04.36288Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install cupy","metadata":{"execution":{"iopub.status.busy":"2022-09-26T17:57:14.128928Z","iopub.execute_input":"2022-09-26T17:57:14.129927Z","iopub.status.idle":"2022-09-26T17:57:26.624129Z","shell.execute_reply.started":"2022-09-26T17:57:14.129823Z","shell.execute_reply":"2022-09-26T17:57:26.622977Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport cupy as cp\ndata=np.load('/kaggle/input/arghya/combined_views.npz')\ndata=data['arr_0']\nnp.shape(data)\ndata2=list()\nfor i in range(7):\n  data2.append(data[i,:])\n","metadata":{"execution":{"iopub.status.busy":"2022-09-26T18:00:58.688657Z","iopub.execute_input":"2022-09-26T18:00:58.689185Z","iopub.status.idle":"2022-09-26T18:01:00.47696Z","shell.execute_reply.started":"2022-09-26T18:00:58.689107Z","shell.execute_reply":"2022-09-26T18:01:00.475833Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.manifold import TSNE\nfrom sklearn.decomposition import PCA\npca=np.empty((*data.shape[:2],50))\nfor i in range(7):pca[i]=PCA(n_components=50).fit_transform(data[i])","metadata":{"execution":{"iopub.status.busy":"2022-09-26T19:01:15.853417Z","iopub.execute_input":"2022-09-26T19:01:15.85378Z","iopub.status.idle":"2022-09-26T19:01:17.951912Z","shell.execute_reply.started":"2022-09-26T19:01:15.853748Z","shell.execute_reply":"2022-09-26T19:01:17.950432Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport matplotlib.pyplot as plt\nfrom sklearn.metrics import pairwise_distances as outer\nfrom sklearn.metrics.cluster import adjusted_rand_score as ari\nfrom sklearn.metrics.cluster import normalized_mutual_info_score as nmi\nfrom mpl_toolkits.mplot3d import Axes3D\nfrom collections import defaultdict\nfrom cvxopt import matrix\nfrom cvxopt import solvers\n\ndef l_2_norm(x):\n    print('in l_2_norm')\n    n=np.shape(x)[0]\n    s=0\n    for i in range(n):\n        s+=(x[i]*x[i])\n    return s\n\ndef kernel_create(data,c):       #data is list of np metrics\n    print('in kernel_create')\n    n=np.shape(data[0])[0]\n    #d=np.shape(data[0])[1]\n    m=len(data)\n    Distance=list()\n    for i in range(m):\n        Distance.append(np.zeros((n,n)))\n    for i in range(m):\n        Distance[i]=outer(data[i])\n    Neighbour=list()\n    for i in range(m):\n        Neighbour.append(np.zeros((n,c)))\n    for i in range(m):\n        for j in range(n):\n            #print(np.argsort(Distance[i][j,:]))\n            Neighbour[i][j,:]=np.argsort(Distance[i][j,:])[0:c]\n    neighbour=np.zeros((n,c))\n    #print(Neighbour)\n    for i in range(m):\n        for j in range(n):\n            Distance[i][j,:]=Distance[i][j,:]/np.sum(Distance[i][j,:])     #here i change for normalizations\n    for k in range(n):\n        closeness_rank=np.zeros(n)\n        for i in range(m):\n            for j in np.ravel(Neighbour[i][k,:]):\n                closeness_rank[int(j)]+=1\n        neighbour[k,:]=np.argsort(closeness_rank)[(n-c):n]\n    gamma=0\n    #print(neighbour)\n    for i in range(m):\n        for j in range(n):\n            for k in range(n):\n                if(k in neighbour[j,:]):\n                    if(Distance[i][j,k]>gamma):\n                        gamma=Distance[i][j,k]\n                else:\n                    Distance[i][j,k]=-1\n    for i in range(m):\n        for j in range(n):\n            for k in range(n):\n                if(Distance[i][j,k]==-1):\n                    Distance[i][j,k]=gamma\n    #print(Distance,Neighbour)\n    #np.savetxt(\"Distance.csv\",Distance,delimiter=',')\n    #np.savetxt(\"Neighbour.csv\",Neighbour,delimiter=',')\n    #print(\"Distance\",Distance)\n    return Distance,neighbour,gamma\n\n\ndef centerless_clustering(data,c,k,l):\n    print('in centerless_clustering')\n    n=np.shape(data[0])[0]\n    m=len(data)            \n    cluster=np.zeros((n,c))\n    #clus=initialize\n    clus=np.random.randint(0,c,n)\n    clus=clus.astype(int)\n    for i in range(n):\n        cluster[i,clus[i]]=1\n    nvector=np.sum(cluster,0)\n    #print(\"initial cluster\",cluster)\n    oldcluster=np.zeros((n,c))\n    t=np.zeros(c)\n    u=np.zeros(c)\n    v=np.zeros(c)\n    A=list()\n    count=0\n    mu=(np.zeros(m)+1)/m\n    Z=np.zeros((m,m))\n    M=correlation(Distance)\n    q=matrix(np.zeros(m))\n    AA=matrix(np.zeros((1,m))+1)\n    id=matrix(np.identity(m)*-1)\n    one=matrix([[1]],tc='d')\n    #one=one.astype('float')\n    while((same_matrix(oldcluster,cluster)==0)and(count<=15)):\n        oldcluster=np.array(cluster)\n        D=np.zeros((n,n))\n        #print(\"cluster\",cluster,\"oldcluster\",oldcluster)\n        for i in range(m):\n            D=D+Distance[i]*mu[i]*mu[i]\n        for i in range(n):\n            for j in neighbour[i,:]:\n                if(i in neighbour[int(j),:]):\n                    A.append(j) \n            A=[int(y) for y in A]\n            t,v=f1(D[i,:],nvector,u,v,t,A,clus,gamma)\n            #print(type(t))\n            for j in range(c):\n                if(v[j]==0):\n                    t[j]=gamma*nvector[j]\n            for j in A:\n                v[clus[j]]=0\n            cluster[i,clus[i]]=cluster[i,clus[i]]-1\n            nvector[clus[i]]=nvector[clus[i]]-1\n            clus[i]=np.argmin(t)\n            #if(i==0):\n                #print(\"oldcluster midloop\",oldcluster)\n            cluster[i,clus[i]]=cluster[i,clus[i]]+1\n            nvector[clus[i]]=nvector[clus[i]]+1\n            A=list()\n        count=count+1\n        for i in range(m):\n            Z[i,i]=np.trace(np.dot(np.dot(np.transpose(cluster),Distance[i]),cluster))\n        Z=2*Z+l*M      \n        Z=matrix(Z)\n        solvers.options['show_progress'] = False\n        try:\n            sol=solvers.qp(Z,q,id,q,AA,one)\n        except ArithmeticError:\n            return clus\n        mu=np.array(sol['x'])\n        mu=mu/np.sum(mu)\n        #print(\"mu\",mu)\n        #print(\"clus\",clus)\n        #print(\"cluster\",cluster,\"oldcluster\",oldcluster)\n        #print(\"important\",same_matrix(oldcluster,cluster))\n    print(\"count\",count)\n    return clus\n\ndef same_matrix(x,y):\n    print('in same_matrix')\n    n=np.shape(x)\n    for i in range(n[0]):\n        for j in range(n[1]):\n            if(x[i,j]!=y[i,j]):\n                return 0\n    return 1\n\ndef f1(d,n,u,v,t,A,clus,gamma):\n#     print('in f1')\n    for j in A:\n        t[clus[j]]=0\n        u[clus[j]]=0\n    for j in A:\n        t[clus[j]]=t[clus[j]]+d[j]\n        u[clus[j]]=1+u[clus[j]]\n    for j in A:\n        if(v[clus[j]]==0):\n            v[clus[j]]=1\n            t[clus[j]]=gamma*(n[clus[j]]-u[clus[j]])+t[clus[j]]\n    #print(t)\n    return t,v\n\ndef correlation(Distance):\n    print('in correlation')\n    m=len(Distance)\n    corr=np.zeros((m,m))\n    for i in range(m):\n        for j in range(m):\n            corr[i,j]=frob_norm(np.dot(np.transpose(Distance[i]),Distance[j])/(frob_norm(Distance[i])*frob_norm(Distance[j])))\n    #print(\"corr\",corr)\n    return corr\n\ndef frob_norm(x):\n#     print('in frob_norm')\n    n,m=np.shape(x)\n    s=0\n    for i in range(n):\n        for j in range(m):\n            s+=(x[i,j]*x[i,j])\n    return s\n\ndef clusterplot(cluster,c,data):\n    print('in clusterplot')\n    n=np.shape(data)[0]\n    cluster=np.transpose(cluster)\n    for i in range(c):\n        for j in range(n):\n            if(cluster[i,j]==1):\n                plt.scatter(data[j,0], data[j,1],c=mycolor[i])\n    plt.show()\n\ndef clusterplot3d(cluster,c,data):\n    print('in clusterplot3d')\n    n=np.shape(data)[0]\n    fig=plt.figure(figsize=(4,4))\n    ax=fig.add_subplot(111,projection='3d')\n    cluster=np.transpose(cluster)\n    for i in range(c):\n        for j in range(n):\n            if(cluster[i,j]==1):\n                ax.scatter(data[j,0], data[j,1],data[j,2],c=mycolor[i])\n    plt.show()\n\n#valid for this data only\n\ninitialize=np.zeros(210)\ninitialize[20:70]=1\ninitialize[70:90]=2\ninitialize[90:130]=3\ninitialize[130:140]=4\ninitialize[140:190]=5\ninitialize[190:210]=6\n\n#result=centerless_clustering(data2,7,30,1)   #valid for this data only\n#ari(result,truecluster2)","metadata":{"execution":{"iopub.status.busy":"2022-09-26T19:48:17.232131Z","iopub.execute_input":"2022-09-26T19:48:17.232567Z","iopub.status.idle":"2022-09-26T19:48:17.271176Z","shell.execute_reply.started":"2022-09-26T19:48:17.232536Z","shell.execute_reply":"2022-09-26T19:48:17.270192Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Distance,neighbour,gamma=kernel_create(data,100)","metadata":{"execution":{"iopub.status.busy":"2022-09-26T19:44:51.237784Z","iopub.execute_input":"2022-09-26T19:44:51.238163Z","iopub.status.idle":"2022-09-26T19:45:43.21052Z","shell.execute_reply.started":"2022-09-26T19:44:51.238114Z","shell.execute_reply":"2022-09-26T19:45:43.209492Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cluster=centerless_clustering(data,16,100,2.5)","metadata":{"execution":{"iopub.status.busy":"2022-09-26T19:48:21.395974Z","iopub.execute_input":"2022-09-26T19:48:21.396674Z","iopub.status.idle":"2022-09-26T19:50:31.973612Z","shell.execute_reply.started":"2022-09-26T19:48:21.396636Z","shell.execute_reply":"2022-09-26T19:50:31.972113Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install dill","metadata":{"execution":{"iopub.status.busy":"2022-09-26T19:50:31.981662Z","iopub.execute_input":"2022-09-26T19:50:31.985856Z","iopub.status.idle":"2022-09-26T19:50:42.133784Z","shell.execute_reply.started":"2022-09-26T19:50:31.985803Z","shell.execute_reply":"2022-09-26T19:50:42.132554Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from mvlearn.datasets import load_UCImultifeature\nfrom mvlearn.cluster import MultiviewSpectralClustering\nfrom mvlearn.plotting import quick_visualize\nm_spectral1 = MultiviewSpectralClustering(n_clusters=16,random_state=42,n_init=10)\nm_clusters1 = m_spectral1.fit_predict(data)","metadata":{"execution":{"iopub.status.busy":"2022-09-26T19:29:53.806376Z","iopub.execute_input":"2022-09-26T19:29:53.80675Z","iopub.status.idle":"2022-09-26T19:33:08.007407Z","shell.execute_reply.started":"2022-09-26T19:29:53.806718Z","shell.execute_reply":"2022-09-26T19:33:08.00592Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(ari(t,cluster))\nprint(ari(t,m_clusters1))","metadata":{"execution":{"iopub.status.busy":"2022-09-26T19:50:46.332772Z","iopub.execute_input":"2022-09-26T19:50:46.333201Z","iopub.status.idle":"2022-09-26T19:50:46.346053Z","shell.execute_reply.started":"2022-09-26T19:50:46.33316Z","shell.execute_reply":"2022-09-26T19:50:46.34457Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(nmi(t,cluster))\nprint(nmi(t,m_clusters1))","metadata":{"execution":{"iopub.status.busy":"2022-09-26T19:50:48.786231Z","iopub.execute_input":"2022-09-26T19:50:48.786592Z","iopub.status.idle":"2022-09-26T19:50:48.798436Z","shell.execute_reply.started":"2022-09-26T19:50:48.786562Z","shell.execute_reply":"2022-09-26T19:50:48.797358Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import dill\ndill.dump_session('/kaggle/working/kaggle.env')","metadata":{"execution":{"iopub.status.busy":"2022-09-26T19:53:04.814464Z","iopub.execute_input":"2022-09-26T19:53:04.814892Z","iopub.status.idle":"2022-09-26T19:53:08.814911Z","shell.execute_reply.started":"2022-09-26T19:53:04.814855Z","shell.execute_reply":"2022-09-26T19:53:08.813928Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\ntruecluster=pd.read_csv('/kaggle/input/arghya/y.txt')\nt=np.array(truecluster)\nt=t.reshape(1359)","metadata":{"execution":{"iopub.status.busy":"2022-09-26T19:42:06.39553Z","iopub.execute_input":"2022-09-26T19:42:06.395884Z","iopub.status.idle":"2022-09-26T19:42:06.404077Z","shell.execute_reply.started":"2022-09-26T19:42:06.395856Z","shell.execute_reply":"2022-09-26T19:42:06.40309Z"},"trusted":true},"execution_count":null,"outputs":[]}]}