From 1137e6241af1ef4763e4ee1b0179bc302deee147 Mon Sep 17 00:00:00 2001 From: AnkitaJo Date: Mon, 13 Mar 2017 03:07:49 -0400 Subject: [PATCH] first commit --- README.md | 1 + ae.ipynb | 813 +++++++++++++++++++++++++++++++++++++++++++++++++++ kmeans.ipynb | 220 ++++++++++++++ 3 files changed, 1034 insertions(+) create mode 100644 ae.ipynb create mode 100644 kmeans.ipynb diff --git a/README.md b/README.md index 3fbf55c..8dd25b4 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # deep-representations-clustering This repository is an attempt to replicate the results for the paper: "Learning Deep Representations for Graph Clustering". +http://www.aaai.org/ocs/index.php/AAAI/AAAI14/paper/view/8527 diff --git a/ae.ipynb b/ae.ipynb new file mode 100644 index 0000000..772fa53 --- /dev/null +++ b/ae.ipynb @@ -0,0 +1,813 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import sklearn.metrics.pairwise as pairwise" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "x=np.loadtxt('/home/ankita/Desktop/data/wine.txt',dtype='float',delimiter=',',usecols = list(range(1,14)))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.42300000e+01, 1.71000000e+00, 2.43000000e+00, ...,\n", + " 1.04000000e+00, 3.92000000e+00, 1.06500000e+03],\n", + " [ 1.32000000e+01, 1.78000000e+00, 2.14000000e+00, ...,\n", + " 1.05000000e+00, 3.40000000e+00, 1.05000000e+03],\n", + " [ 1.31600000e+01, 2.36000000e+00, 2.67000000e+00, ...,\n", + " 1.03000000e+00, 3.17000000e+00, 1.18500000e+03],\n", + " ..., \n", + " [ 1.32700000e+01, 4.28000000e+00, 2.26000000e+00, ...,\n", + " 5.90000000e-01, 1.56000000e+00, 8.35000000e+02],\n", + " [ 1.31700000e+01, 2.59000000e+00, 2.37000000e+00, ...,\n", + " 6.00000000e-01, 1.62000000e+00, 8.40000000e+02],\n", + " [ 1.41300000e+01, 4.10000000e+00, 2.74000000e+00, ...,\n", + " 6.10000000e-01, 1.60000000e+00, 5.60000000e+02]])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "labels=np.loadtxt('/home/ankita/Desktop/data/wine.txt',dtype='float',delimiter=',',usecols = (0,))" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(178,)" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "labels\n", + "labels.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(178,)" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = labels.transpose()\n", + "v.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.42300000e+01, 1.71000000e+00, 2.43000000e+00, ...,\n", + " 1.04000000e+00, 3.92000000e+00, 1.06500000e+03],\n", + " [ 1.32000000e+01, 1.78000000e+00, 2.14000000e+00, ...,\n", + " 1.05000000e+00, 3.40000000e+00, 1.05000000e+03],\n", + " [ 1.31600000e+01, 2.36000000e+00, 2.67000000e+00, ...,\n", + " 1.03000000e+00, 3.17000000e+00, 1.18500000e+03],\n", + " ..., \n", + " [ 1.32700000e+01, 4.28000000e+00, 2.26000000e+00, ...,\n", + " 5.90000000e-01, 1.56000000e+00, 8.35000000e+02],\n", + " [ 1.31700000e+01, 2.59000000e+00, 2.37000000e+00, ...,\n", + " 6.00000000e-01, 1.62000000e+00, 8.40000000e+02],\n", + " [ 1.41300000e+01, 4.10000000e+00, 2.74000000e+00, ...,\n", + " 6.10000000e-01, 1.60000000e+00, 5.60000000e+02]])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 210, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "xtrain = pairwise.rbf_kernel(x,x,gamma=1.0/(2*490))" + ] + }, + { + "cell_type": "code", + "execution_count": 211, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.00000000e+000, 3.68818731e-001, 2.05997788e-007, ...,\n", + " 3.22111554e-024, 3.32822007e-023, 3.22898006e-114],\n", + " [ 3.68818731e-001, 1.00000000e+000, 7.88033430e-009, ...,\n", + " 1.91276729e-021, 1.69912115e-020, 3.13077399e-107],\n", + " [ 2.05997788e-007, 7.88033430e-009, 1.00000000e+000, ...,\n", + " 3.43444668e-055, 1.20496736e-053, 7.12314865e-174],\n", + " ..., \n", + " [ 3.22111554e-024, 1.91276729e-021, 3.43444668e-055, ...,\n", + " 1.00000000e+000, 9.71121417e-001, 1.66333393e-034],\n", + " [ 3.32822007e-023, 1.69912115e-020, 1.20496736e-053, ...,\n", + " 9.71121417e-001, 1.00000000e+000, 9.78689720e-036],\n", + " [ 3.22898006e-114, 3.13077399e-107, 7.12314865e-174, ...,\n", + " 1.66333393e-034, 9.78689720e-036, 1.00000000e+000]])" + ] + }, + "execution_count": 211, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "xtrain" + ] + }, + { + "cell_type": "code", + "execution_count": 212, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1.77748824e-001 5.17984564e-002 4.79817109e-008 ...,\n", + " 5.45801736e-025 5.50348730e-024 4.03125365e-115]\n", + " [ 5.17984564e-002 1.10968818e-001 1.45029025e-009 ...,\n", + " 2.56087191e-022 2.21997146e-021 3.08832923e-108]\n", + " [ 4.79817109e-008 1.45029025e-009 3.05224654e-001 ...,\n", + " 7.62591261e-056 2.61100470e-054 1.16534149e-174]\n", + " ..., \n", + " [ 5.45801736e-025 2.56087191e-022 7.62591261e-056 ...,\n", + " 1.61528992e-001 1.53081017e-001 1.97959378e-035]\n", + " [ 5.50348730e-024 2.21997146e-021 2.61100470e-054 ...,\n", + " 1.53081017e-001 1.53831448e-001 1.13668201e-036]\n", + " [ 4.03125365e-115 3.08832923e-108 1.16534149e-174 ...,\n", + " 1.97959378e-035 1.13668201e-036 8.76885297e-002]]\n" + ] + } + ], + "source": [ + "D = np.diag(1.0/np.sqrt(xtrain.sum(axis= 1)))\n", + "nxtrain = D.dot(xtrain).dot(D)\n", + "#nxtrain = xtrain/xtrain.sum(axis= 1)\n", + "print nxtrain" + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.013745368409439507" + ] + }, + "execution_count": 204, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.norm(nxtrain)/178" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import keras\n", + "from keras.layers import Input, Dense, Activation, Dropout,Activation\n", + "from keras.optimizers import Adam, Nadam, RMSprop, Adadelta\n", + "from keras import regularizers \n", + "from keras.models import Model" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def LeakyReLU(alpha):\n", + " return Activation('sigmoid')" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'Input' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0minputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mInput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m178\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDense\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m128\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m#model = LeakyReLU(alpha=0.1)(model)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msigmoid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0malpha\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'Input' is not defined" + ] + } + ], + "source": [ + "inputs = Input(shape=(178,))\n", + "\n", + "model = Dense(128)(inputs)\n", + "#model = LeakyReLU(alpha=0.1)(model)\n", + "model = sigmoid(alpha = 0.1)(model)\n", + "model = Dropout(0.8)(model)\n", + "\n", + "model = Dense(64, activity_regularizer = regularizers.activity_l1(10e-5),name='embed',activation='sigmoid')(model)\n", + "\n", + "model = Dropout(0.8)(model)\n", + "\n", + "model = Dense(128)(model)\n", + "model = LeakyReLU(alpha=0.1)(model)\n", + "model = Dropout(0.8)(model)\n", + "\n", + "model = Dense(178)(model)\n", + "model = LeakyReLU(alpha=0.1)(model)\n", + "\n", + "opt=Adam(lr=0.005, decay=1e-2)\n", + "#opt=Adadelta()\n", + "ae = Model(input = inputs, output = model)\n", + "ae.compile(optimizer=opt, loss='mean_squared_error')\n", + "ae.fit(nxtrain,nxtrain,nb_epoch= 100, batch_size = 2, shuffle=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1, 178)" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ae.predict(np.expand_dims(nxtrain[0,:],-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 238, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mm = Model(input= ae.input,output=ae.get_layer('embed').output)" + ] + }, + { + "cell_type": "code", + "execution_count": 239, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1, 64)" + ] + }, + "execution_count": 239, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mm.predict(np.expand_dims(nxtrain[0,:],0)).shape" + ] + }, + { + "cell_type": "code", + "execution_count": 240, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "rec = mm.predict(nxtrain)" + ] + }, + { + "cell_type": "code", + "execution_count": 241, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "u,s,_ = np.linalg.svd(nxtrain)" + ] + }, + { + "cell_type": "code", + "execution_count": 248, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "orig= u[:,:3]" + ] + }, + { + "cell_type": "code", + "execution_count": 249, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "ValueError", + "evalue": "operands could not be broadcast together with shapes (178,3) (178,64) ", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnorm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0morig\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mrec\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mValueError\u001b[0m: operands could not be broadcast together with shapes (178,3) (178,64) " + ] + } + ], + "source": [ + "np.linalg.norm(orig-rec)" + ] + }, + { + "cell_type": "code", + "execution_count": 244, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 244, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 250, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2 2 2 2 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 2 2 0 0 2 2 0 2 2 2 2 2 2 0 0\n", + " 2 2 0 0 2 2 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 0 1 0 1 1 0 1 1 0 0 0 1 1 2\n", + " 0 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 0 1 1 1 1 0 1\n", + " 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0\n", + " 0 1 1 1 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1]\n" + ] + }, + { + "data": { + "text/plain": [ + "(0.051664347075296151,\n", + " 0.4127925661447272,\n", + " 0.051398038976261912,\n", + " 0.0054438354437086308,\n", + " 0.37111371823084754,\n", + " 0.088370527034240726,\n", + " 0.09143515133814191,\n", + " 0.42875686335053037)" + ] + }, + "execution_count": 250, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.cluster import KMeans\n", + "from sklearn import metrics\n", + "\n", + "kmeans_bare = KMeans(n_clusters=3,init='random', random_state=None,max_iter=500).fit(x)\n", + "kmeans_rec = KMeans(n_clusters=3, random_state=0).fit(rec)\n", + "kmeans_orig = KMeans(n_clusters=3, random_state=0).fit(orig)\n", + "kmeans_rec.labels_,kmeans_orig.labels_\n", + "ss_rec = metrics.silhouette_score(nxtrain, kmeans_rec.labels_, metric='euclidean', sample_size=None,random_state=None)\n", + "ss_orig = metrics.silhouette_score(nxtrain, kmeans_orig.labels_, metric='euclidean', sample_size=None,random_state=None)\n", + "ss_bare = metrics.silhouette_score(x, kmeans_bare.labels_, metric='euclidean', sample_size=None,random_state=None)\n", + "\n", + "ri_rec = metrics.adjusted_rand_score(kmeans_rec.labels_,labels)\n", + "ri_orig = metrics.adjusted_rand_score(kmeans_orig.labels_,labels)\n", + "ri_bare = metrics.adjusted_rand_score(kmeans_bare.labels_,labels)\n", + "\n", + "nmi_rec = metrics.normalized_mutual_info_score(kmeans_rec.labels_,labels)\n", + "nmi_orig = metrics.normalized_mutual_info_score(kmeans_orig.labels_,labels)\n", + "nmi_bare = metrics.normalized_mutual_info_score(kmeans_bare.labels_,labels)\n", + "print kmeans_bare.labels_\n", + "ss_rec,ss_orig, ri_rec, ri_orig,ri_bare, nmi_rec,nmi_orig,nmi_bare" + ] + }, + { + "cell_type": "code", + "execution_count": 246, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "\n", + "def randindex(labels1,labels2):\n", + " tp,tn,fp,fn = 0.0,0.0,0.0,0.0\n", + " for point1 in range(len(labels1)):\n", + " for point2 in range(len(labels1)):\n", + " tp += 1 if labels1[point1] == labels1[point2] and labels2[point1] == labels2[point2] else 0\n", + " tn += 1 if labels1[point1] != labels1[point2] and labels2[point1] != labels2[point2] else 0\n", + " fp += 1 if labels1[point1] != labels1[point2] and labels2[point1] == labels2[point2] else 0\n", + " fn += 1 if labels1[point1] == labels1[point2] and labels2[point1] != labels2[point2] else 0\n", + " return (tp+tn) /(tp+tn+fp+fn)" + ] + }, + { + "cell_type": "code", + "execution_count": 247, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.5566847620249968, 0.3646635525817447, 0.720237343769726)" + ] + }, + "execution_count": 247, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "randindex(kmeans_rec.labels_,labels),randindex(kmeans_orig.labels_,labels),randindex(kmeans_bare.labels_,labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 231, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'numpy' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meigh\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mseed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mblobs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdatasets\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmake_blobs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn_samples\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1500\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m8\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'numpy' is not defined" + ] + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "#from sklearn.clustering import SpectralClustering\n", + "from sklearn import cluster, datasets\n", + "from sklearn import metrics\n", + "\n", + "numpy.linalg.eigh()\n", + "np.random.seed(0)\n", + "blobs = datasets.make_blobs(n_samples=1500, random_state=8)\n", + "X, y = blobs\n", + "X = StandardScaler().fit_transform(X)\n", + "spectral = cluster.SpectralClustering(n_clusters=3,eigen_solver='arpack')\n", + "#spectral = cluster.SpectralClustering(n_clusters=3,eigen_solver='arpack',affinity = 'nearest_neighbors')\n", + "spectral.fit(X)\n", + "if hasattr(spectral, 'labels_'):\n", + " y_pred = spectral.labels_.astype(np.int)\n", + "else:\n", + " y_pred = spectral.predict(X)\n", + "\n", + "ss = metrics.silhouette_score(X, y_pred, metric='euclidean', sample_size=None,random_state=None)\n", + "\n", + "print(ss)" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['__call__',\n", + " '__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__doc__',\n", + " '__format__',\n", + " '__getattribute__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__module__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " '_collected_trainable_weights',\n", + " '_fit_loop',\n", + " '_function_kwargs',\n", + " '_get_node_attribute_at_index',\n", + " '_make_predict_function',\n", + " '_make_test_function',\n", + " '_make_train_function',\n", + " '_output_mask_cache',\n", + " '_output_shape_cache',\n", + " '_output_tensor_cache',\n", + " '_predict_loop',\n", + " '_standardize_user_data',\n", + " '_test_loop',\n", + " '_updated_config',\n", + " 'add_inbound_node',\n", + " 'add_loss',\n", + " 'add_update',\n", + " 'add_weight',\n", + " 'assert_input_compatibility',\n", + " 'build',\n", + " 'built',\n", + " 'call',\n", + " 'compile',\n", + " 'compute_mask',\n", + " 'constraints',\n", + " 'container_nodes',\n", + " 'count_params',\n", + " 'create_input_layer',\n", + " 'evaluate',\n", + " 'evaluate_generator',\n", + " 'fit',\n", + " 'fit_generator',\n", + " 'from_config',\n", + " 'get_config',\n", + " 'get_input_at',\n", + " 'get_input_mask_at',\n", + " 'get_input_shape_at',\n", + " 'get_layer',\n", + " 'get_losses_for',\n", + " 'get_output_at',\n", + " 'get_output_mask_at',\n", + " 'get_output_shape_at',\n", + " 'get_output_shape_for',\n", + " 'get_updates_for',\n", + " 'get_weights',\n", + " 'history',\n", + " 'inbound_nodes',\n", + " 'input',\n", + " 'input_layers',\n", + " 'input_layers_node_indices',\n", + " 'input_layers_tensor_indices',\n", + " 'input_mask',\n", + " 'input_names',\n", + " 'input_shape',\n", + " 'input_spec',\n", + " 'inputs',\n", + " 'internal_input_shapes',\n", + " 'internal_output_shapes',\n", + " 'layers',\n", + " 'layers_by_depth',\n", + " 'load_weights',\n", + " 'load_weights_from_hdf5_group',\n", + " 'load_weights_from_hdf5_group_by_name',\n", + " 'loss',\n", + " 'loss_functions',\n", + " 'loss_weights',\n", + " 'losses',\n", + " 'metrics',\n", + " 'metrics_names',\n", + " 'metrics_tensors',\n", + " 'name',\n", + " 'nodes_by_depth',\n", + " 'non_trainable_weights',\n", + " 'optimizer',\n", + " 'outbound_nodes',\n", + " 'output',\n", + " 'output_layers',\n", + " 'output_layers_node_indices',\n", + " 'output_layers_tensor_indices',\n", + " 'output_mask',\n", + " 'output_names',\n", + " 'output_shape',\n", + " 'outputs',\n", + " 'predict',\n", + " 'predict_function',\n", + " 'predict_generator',\n", + " 'predict_on_batch',\n", + " 'regularizers',\n", + " 'reset_states',\n", + " 'run_internal_graph',\n", + " 'sample_weight_mode',\n", + " 'sample_weight_modes',\n", + " 'sample_weights',\n", + " 'save',\n", + " 'save_weights',\n", + " 'save_weights_to_hdf5_group',\n", + " 'set_weights',\n", + " 'state_updates',\n", + " 'stateful',\n", + " 'stop_training',\n", + " 'summary',\n", + " 'supports_masking',\n", + " 'targets',\n", + " 'test_function',\n", + " 'test_on_batch',\n", + " 'to_json',\n", + " 'to_yaml',\n", + " 'total_loss',\n", + " 'train_function',\n", + " 'train_on_batch',\n", + " 'trainable',\n", + " 'trainable_weights',\n", + " 'updates',\n", + " 'uses_learning_phase',\n", + " 'validation_data',\n", + " 'weights']" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(ae)" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ae.get_layer('embed').output" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/kmeans.ipynb b/kmeans.ipynb new file mode 100644 index 0000000..e4d0451 --- /dev/null +++ b/kmeans.ipynb @@ -0,0 +1,220 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from sklearn.cluster import KMeans\n", + "from sklearn import metrics\n" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x=np.loadtxt('/home/ankita/Desktop/data/wine.txt',dtype='float',delimiter=',',usecols = list(range(1,14)))\n", + "labels=np.loadtxt('/home/ankita/Desktop/data/wine.txt',dtype='int',delimiter=',',usecols = (0,))" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(178, 13)" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "kmeans_bare = KMeans(n_clusters=3,init='random', random_state=None,max_iter=100).fit(x)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#ss_bare = metrics.silhouette_score(x, kmeans_bare.labels_, metric='euclidean', sample_size=None,random_state=None)\n", + "#ri_bare = metrics.adjusted_rand_score(kmeans_bare.labels_,labels)\n", + "nmi_bare = metrics.normalized_mutual_info_score(kmeans_bare.labels_,labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.42875686335053043" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#ss_bare, ri_bare,\n", + "nmi_bare" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.720237343769726" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def randindex(labels1,labels2):\n", + " tp,tn,fp,fn = 0.0,0.0,0.0,0.0\n", + " for point1 in range(len(labels1)):\n", + " for point2 in range(len(labels1)):\n", + " tp += 1 if labels1[point1] == labels1[point2] and labels2[point1] == labels2[point2] else 0\n", + " tn += 1 if labels1[point1] != labels1[point2] and labels2[point1] != labels2[point2] else 0\n", + " fp += 1 if labels1[point1] != labels1[point2] and labels2[point1] == labels2[point2] else 0\n", + " fn += 1 if labels1[point1] == labels1[point2] and labels2[point1] != labels2[point2] else 0\n", + " return (tp+tn) /(tp+tn+fp+fn)\n", + "randindex(kmeans_bare.labels_,labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\ns/JQ86AAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(1, 1, 1)\n", + "\n", + "x1 = x[:,0]\n", + "y = x[:,1]\n", + "colormap = np.array(['red', 'lime', 'black','red'])\n", + "\n", + "plt.scatter(x1, y, c=colormap[labels])\n", + "plt.title('Real Classification')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n12g0Go2mAPD/+oaT6TOWpb8AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x1 = x[:,0]\n", + "y = x[:,1]\n", + "colormap = np.array(['red', 'lime', 'black','red'])\n", + "\n", + "plt.scatter(x1, y, c=colormap[kmeans_bare.labels_])\n", + "plt.title('KMeans Classification')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}