Unverified Commit 2c5fe3dd authored by Saman Nia's avatar Saman Nia Committed by GitHub

Delete 6_NG.ipynb

parent 8c9a29bb
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Author: Saman Paidar Nia"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"All resources are listed at the bottom of the page."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Get important libraries for this class.\n",
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import warnings\n",
"import math\n",
"import logging\n",
"import sys\n",
"#-----------------------------------------------------------\n",
"from tensorflow.python.ops import control_flow_ops\n",
"from IPython.display import clear_output\n",
"from scipy.spatial.distance import squareform, pdist\n",
"from sklearn.preprocessing import normalize\n",
"from numpy import linalg as LA\n",
"from scipy.cluster.vq import kmeans, vq\n",
"from sklearn.metrics import normalized_mutual_info_score\n",
"from math import sqrt\n",
"#------------------------------------------------------------\n",
"from sklearn.datasets import fetch_20newsgroups\n",
"from sklearn.decomposition import TruncatedSVD\n",
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
"from sklearn.pipeline import make_pipeline\n",
"from sklearn.preprocessing import Normalizer\n",
"from optparse import OptionParser"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"class Similarity_Normalization:\n",
" def normalization(self, X):\n",
" return (X - min(X)) / (max(X) - min(X))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"class Correlation_Similarity(Similarity_Normalization):\n",
" def get_matrix(self, X):\n",
" X = normalize(X, axis=0)\n",
" X = pdist(X, 'correlation')\n",
" X = squareform(X)\n",
" S = np.sum(X, 0)\n",
" D = np.diag(S)\n",
" D = LA.matrix_power(D, -1)\n",
" Y = np.dot(D, X)\n",
" Y = np.apply_along_axis(self.normalization, 1, Y)\n",
" np.fill_diagonal(Y, 0.)\n",
" return Y"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"class Cosine_Similarity(Similarity_Normalization):\n",
" def get_matrix(self, X):\n",
" X = normalize(X, axis=0)\n",
" X = pdist(X, 'cosine')\n",
" X = squareform(X)\n",
" S = np.sum(X, 0)\n",
" D = np.diag(S)\n",
" D = LA.matrix_power(D, -1)\n",
" Y = np.dot(D, X)\n",
" Y = np.apply_along_axis(self.normalization, 1, Y)\n",
" np.fill_diagonal(Y, 0.)\n",
" return Y"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"class Similarity_Dataset_Iterator():\n",
" def __init__(self, data, labels, similarity):\n",
" self.data = data\n",
" self.labels = labels\n",
" self.matrix = similarity.get_matrix(data)\n",
" self.data_size = self.matrix.shape[0]\n",
" self.current_index = 0\n",
" def next_batch(self, num):\n",
" data=self.matrix.transpose()\n",
" labels=self.labels\n",
" idx = np.arange(0 , len(data))\n",
" np.random.shuffle(idx)\n",
" idx = idx[:num]\n",
" data_shuffle = [data[ i] for i in idx]\n",
" labels_shuffle = [labels[ i] for i in idx]\n",
" return data_shuffle, labels_shuffle\n",
" def whole_dataset(self):\n",
" return (self.matrix.transpose(), self.labels)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# Using Scikit-Learn libraries to fetching the Newsgroups data set: http://scikit-learn.org\n",
"def read_NewsGroup_data(similarity):\n",
" logging.basicConfig(level=logging.INFO,\n",
" format='%(asctime)s %(levelname)s %(message)s')\n",
" op = OptionParser()\n",
" op.add_option(\"--lsa\", dest=\"n_components\", type=\"int\",\n",
" help=\"Preprocess documents with latent semantic analysis.\") \n",
" op.add_option(\"--no-idf\",action=\"store_false\", dest=\"use_idf\", default=True,\n",
" help=\"Disable Inverse Document Frequency feature weighting.\")\n",
" op.add_option(\"--use-hashing\", action=\"store_true\", default=False,\n",
" help=\"Use a hashing feature vectorizer\")\n",
" op.add_option(\"--n-features\", type=int, default=10000,\n",
" help=\"Maximum number of features to extract from text.\") \n",
" def is_interactive():\n",
" return not hasattr(sys.modules['__main__'], '__file__')\n",
" argv = [] if is_interactive() else sys.argv[1:]\n",
" (opts, args) = op.parse_args(argv)\n",
" if len(args) > 0:\n",
" op.error(\"this script takes no arguments.\")\n",
" sys.exit(1) \n",
" categories_6NG = ['alt.atheism','comp.sys.mac.hardware','rec.motorcycles',\n",
" 'rec.sport.hockey','soc.religion.christian','talk.religion.misc']\n",
" # categories = categories_6NG\n",
" dataset = fetch_20newsgroups(subset='train', categories=categories_6NG,\n",
" shuffle=True, random_state=42)\n",
" labels = dataset.target[:1200]\n",
" true_k = np.unique(labels).shape[0]\n",
" vectorizer = TfidfVectorizer(max_df=0.5, max_features=opts.n_features,min_df=2,\n",
" stop_words='english',use_idf=opts.use_idf)\n",
" X = vectorizer.fit_transform(dataset.data[:1200])\n",
" if opts.n_components:\n",
" svd = TruncatedSVD(opts.n_components)\n",
" normalizer = Normalizer(copy=False)\n",
" lsa = make_pipeline(svd, normalizer)\n",
" X = lsa.fit_transform(X)\n",
" explained_variance = svd.explained_variance_ratio_.sum()\n",
" return Similarity_Dataset_Iterator(X.toarray(), labels, similarity)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Call Cosine_Similarity as similarity dataset.\n",
"trainSet_cosine = read_NewsGroup_data(Cosine_Similarity())"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# Call Correlation_Similarity as similarity dataset.\n",
"trainSet_correlation = read_NewsGroup_data(Correlation_Similarity())"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"n_input = trainSet_correlation.data_size #--------- Number of input data.\n",
"# Define the number of hidden layer. \n",
"if n_input >= 1024:\n",
" Nn = int(2048)\n",
"elif n_input >= 512:\n",
" Nn = int(1024)\n",
"elif n_input >= 256:\n",
" Nn = int(512)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"n_hidden_1 = int(Nn/2) #-------------------- The autoencoder hidden layer 1.\n",
"n_hidden_2 = int(n_hidden_1/2) #------------ The autoencoder hidden layer 2.\n",
"n_hidden_3 = int(n_hidden_2/2) #------------ The autoencoder hidden layer 3.\n",
"n_code = str(int(n_hidden_3/2)) #----------- The number of output dimension value."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def k_means_(X, n_cluster):\n",
" kmeans_centroids,_ = kmeans(X,n_cluster)\n",
" kmeans_, _ = vq(X, kmeans_centroids)\n",
" return kmeans_"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"def spectral_clustering(X, n_cluster):\n",
" D_ = np.matrix(np.diag(np.sum(X, 0)))\n",
" D_ = D_**(-1)\n",
" L = np.dot(np.dot(D_, X), D_)\n",
" eigenvectors = np.linalg.eig(L)[1]\n",
" X = np.real(eigenvectors[:, 0: n_cluster])\n",
" rows_norm = np.linalg.norm(X, axis=1, ord=0)\n",
" X = (X.T / rows_norm).T\n",
" return k_means_(X, n_cluster)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"def encoder(x, n_code, phase_train): \n",
" with tf.variable_scope(\"encoder\"): \n",
" with tf.variable_scope(\"hidden_1\"):\n",
" hidden_1 = layer(x, [n_input, n_hidden_1], [n_hidden_1], phase_train)\n",
" with tf.variable_scope(\"hidden_2\"):\n",
" hidden_2 = layer(hidden_1, [n_hidden_1, n_hidden_2], [n_hidden_2], phase_train)\n",
" with tf.variable_scope(\"hidden_3\"):\n",
" hidden_3 = layer(hidden_2, [n_hidden_2, n_hidden_3], [n_hidden_3], phase_train) \n",
" with tf.variable_scope(\"code\"):\n",
" code = layer(hidden_3, [n_hidden_3, n_code], [n_code], phase_train)\n",
" return code"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"def decoder(code, n_code, phase_train):\n",
" with tf.variable_scope(\"decoder\"):\n",
" with tf.variable_scope(\"hidden_1\"):\n",
" hidden_1 = layer(code, [n_code, n_hidden_3], [n_hidden_3], phase_train)\n",
" with tf.variable_scope(\"hidden_2\"):\n",
" hidden_2 = layer(hidden_1, [n_hidden_3, n_hidden_2], [n_hidden_2], phase_train)\n",
" with tf.variable_scope(\"hidden_3\"):\n",
" hidden_3 = layer(hidden_2, [n_hidden_2, n_hidden_1], [n_hidden_1], phase_train) \n",
" with tf.variable_scope(\"output\"):\n",
" output = layer(hidden_3, [n_hidden_1, n_input], [n_input], phase_train)\n",
" return output"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"def layer_batch_norm(x, n_out, phase_train):\n",
" beta_init = tf.constant_initializer(value=0.0, dtype=tf.float32)\n",
" gamma_init = tf.constant_initializer(value=1.0, dtype=tf.float32)\n",
" beta = tf.get_variable(\"beta\", [n_out], initializer=beta_init)\n",
" gamma = tf.get_variable(\"gamma\", [n_out], initializer=gamma_init)\n",
" batch_mean, batch_var = tf.nn.moments(x, [0], name='moments')\n",
" ema = tf.train.ExponentialMovingAverage(decay=0.9)\n",
" ema_apply_op = ema.apply([batch_mean, batch_var])\n",
" ema_mean, ema_var = ema.average(batch_mean), ema.average(batch_var)\n",
" def mean_var_with_update():\n",
" with tf.control_dependencies([ema_apply_op]):\n",
" return tf.identity(batch_mean), tf.identity(batch_var)\n",
" mean, var = control_flow_ops.cond(phase_train, mean_var_with_update, lambda: (ema_mean, ema_var))\n",
" reshaped_x = tf.reshape(x, [-1, 1, 1, n_out])\n",
" normed = tf.nn.batch_norm_with_global_normalization(reshaped_x, mean, var, beta, gamma, 1e-3, True)\n",
" return tf.reshape(normed, [-1, n_out])"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"def layer(input, weight_shape, bias_shape, phase_train):\n",
" weight_init = tf.random_normal_initializer(stddev=(1.0 / weight_shape[0]) ** 0.5)\n",
" bias_init = tf.constant_initializer(value=0)\n",
" W = tf.get_variable(\"W\", weight_shape, initializer=weight_init)\n",
" b = tf.get_variable(\"b\", bias_shape, initializer=bias_init)\n",
" logits = tf.matmul(input, W) + b\n",
" return tf.nn.sigmoid(layer_batch_norm(logits, weight_shape[1], phase_train))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"def loss(output, x):\n",
" with tf.variable_scope(\"training\"):\n",
" train_loss = tf.reduce_mean(tf.reduce_sum(tf.square(tf.subtract(output, x)), 1))\n",
" return train_loss"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"def training(cost, learning_rate, beta1, beta2, global_step):\n",
" optimizer = tf.train.AdamOptimizer(learning_rate, beta1, beta2, epsilon=1e-08, use_locking=False, name='Adam')\n",
" train_op = optimizer.minimize(cost, global_step=global_step)\n",
" return train_op"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"# Parameters\n",
"n_layers = 5 #----------------------------- Number of Neural Networks Layers.\n",
"beta1 = 0.9 #------------------------------ The decay rate 1. \n",
"beta2 = 0.999 #---------------------------- The decay rate 2.\n",
"learning_rate = (beta1/n_input) #---------- The learning rate.\n",
"stop_learning = 1.35 #--------------------- The stop learning point.\n",
"n_batch = math.ceil(sqrt(sqrt(n_input))) #- Number of selection data in per step.\n",
"n_backpro = math.ceil(n_input/n_batch) #--- Number of Backpro in per epoch.\n",
"n_cluster = 6 #---------------------------- Number of clusters.\n",
"n_diplay = 10 #---------------------------- Number of getting code and runnig the K-Means."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"results_cos=[] #--------------------------- A list to keep all NMI scores.\n",
"loss_cost_cos=[] #------------------------- A list to keep all training evaluations.\n",
"steps_cos=[] #----------------------------- A list to keep all steps.\n",
"results_cor=[] #--------------------------- A list to keep all NMI scores.\n",
"loss_cost_cor=[] #------------------------- A list to keep all training evaluations.\n",
"steps_cor=[] #----------------------------- A list to keep all steps."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"with tf.Graph().as_default(): \n",
" with tf.variable_scope(\"autoencoder_model\"): \n",
" x = tf.placeholder(\"float\", [None, n_input]) \n",
" phase_train = tf.placeholder(tf.bool)\n",
" code = encoder(x, int(n_code), phase_train)\n",
" output = decoder(code, int(n_code), phase_train)\n",
" cost = loss(output, x)\n",
" global_step = tf.Variable(0, name='global_step', trainable=False)\n",
" train_optimizer = training(cost, learning_rate, beta1, beta2, global_step)\n",
" sess = tf.Session()\n",
" init_op = tf.global_variables_initializer()\n",
" sess.run(init_op)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"NMI Score for AE is: 0.45 and new cost is: 56.97 in 10 step. \n",
"NMI Score for AE is: 0.46 and new cost is: 15.99 in 20 step. \n",
"NMI Score for AE is: 0.50 and new cost is: 5.99 in 30 step. \n",
"NMI Score for AE is: 0.59 and new cost is: 2.64 in 40 step. \n",
"NMI Score for AE is: 0.63 and new cost is: 1.71 in 50 step. \n",
"NMI Score for AE is: 0.70 and new cost is: 1.34 in 57 step. \n"
]
}
],
"source": [
"# Training cycle\n",
"epoch = 0\n",
"first_pass = True\n",
"while first_pass or new_cost >= stop_learning:\n",
" first_pass = False\n",
" # Fit training with Backpropagation using batch data.\n",
" for i in range(n_backpro):\n",
" miniData, _ = trainSet_correlation.next_batch(n_batch)\n",
" _, new_cost = sess.run([train_optimizer,cost], feed_dict={x: miniData,\n",
" phase_train: True}) \n",
" #------------------------- End of the Optimization ------------------------------\n",
" epoch += 1\n",
" # Save the results after per 10 epochs. \n",
" if epoch % n_diplay == 0 or new_cost <= stop_learning:\n",
" # Getting embedded codes and running K-Means on them.\n",
" ae_codes = sess.run(code, feed_dict={x: trainSet_correlation.whole_dataset()[0],\n",
" phase_train: False}) \n",
" idx = k_means_(ae_codes, n_cluster)\n",
" ae_nmi_cor = normalized_mutual_info_score(trainSet_correlation.whole_dataset()[1], idx)\n",
" results_cor.append(ae_nmi_cor) \n",
" steps_cor.append(epoch)\n",
" loss_cost_cor.append(new_cost) \n",
" print(\"NMI Score for AE is: {:0.2f} and new cost is: {:0.2f} in {:d} step. \"\n",
" .format(ae_nmi_cor, new_cost, epoch))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"with tf.Graph().as_default(): \n",
" with tf.variable_scope(\"autoencoder_model\"): \n",
" x = tf.placeholder(\"float\", [None, n_input]) \n",
" phase_train = tf.placeholder(tf.bool)\n",
" code = encoder(x, int(n_code), phase_train)\n",
" output = decoder(code, int(n_code), phase_train)\n",
" cost = loss(output, x)\n",
" global_step = tf.Variable(0, name='global_step', trainable=False)\n",
" train_optimizer = training(cost, learning_rate, beta1, beta2, global_step)\n",
" sess = tf.Session()\n",
" init_op = tf.global_variables_initializer()\n",
" sess.run(init_op)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"NMI Score for AE is: 0.45 and new cost is: 58.12 in 10 step. \n",
"NMI Score for AE is: 0.45 and new cost is: 17.17 in 20 step. \n",
"NMI Score for AE is: 0.47 and new cost is: 6.15 in 30 step. \n",
"NMI Score for AE is: 0.52 and new cost is: 2.88 in 40 step. \n",
"NMI Score for AE is: 0.63 and new cost is: 1.96 in 50 step. \n",
"NMI Score for AE is: 0.68 and new cost is: 1.46 in 60 step. \n"
]
}
],
"source": [
"# Training cycle\n",
"epoch = 0\n",
"first_pass = True\n",
"while first_pass or new_cost >= stop_learning:\n",
" first_pass = False\n",
" # Fit training with Backpropagation using batch data.\n",
" for i in range(n_backpro):\n",
" miniData, _ = trainSet_cosine.next_batch(n_batch)\n",
" _, new_cost = sess.run([train_optimizer,cost], feed_dict={x: miniData,\n",
" phase_train: True}) \n",
" #------------------------- End of the Optimization ------------------------------\n",
" epoch += 1\n",
" # Save the results after per 10 epochs. \n",
" if epoch % n_diplay == 0 or new_cost <= stop_learning:\n",
" # Getting embedded codes and running K-Means on them.\n",
" ae_codes = sess.run(code, feed_dict={x: trainSet_cosine.whole_dataset()[0],\n",
" phase_train: False}) \n",
" idx = k_means_(ae_codes, n_cluster)\n",
" ae_nmi_cos = normalized_mutual_info_score(trainSet_cosine.whole_dataset()[1], idx)\n",
" results_cos.append(ae_nmi_cos) \n",
" steps_cos.append(epoch)\n",
" loss_cost_cos.append(new_cost) \n",
" print(\"NMI Score for AE is: {:0.2f} and new cost is: {:0.2f} in {:d} step. \"\n",
" .format(ae_nmi_cos, new_cost, epoch))"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"spec_cluster_cos = spectral_clustering(trainSet_cosine.whole_dataset()[0], n_cluster)\n",
"spec_nmi_cos = normalized_mutual_info_score(trainSet_cosine.whole_dataset()[1], spec_cluster_cos)\n",
"#-----------------------------------------------------------------------------------------------------------\n",
"k_means_indx_cos = k_means_(trainSet_cosine.whole_dataset()[0], n_cluster)\n",
"k_means_nmi_cos = (normalized_mutual_info_score(trainSet_cosine.whole_dataset()[1], k_means_indx_cos))\n",
"#-----------------------------------------------------------------------------------------------------------\n",
"spec_cluster_cor = spectral_clustering(trainSet_correlation.whole_dataset()[0], n_cluster)\n",
"spec_nmi_cor = normalized_mutual_info_score(trainSet_correlation.whole_dataset()[1], spec_cluster_cor)\n",
"#-----------------------------------------------------------------------------------------------------------\n",
"k_means_indx_cor = k_means_(trainSet_correlation.whole_dataset()[0], n_cluster)\n",
"k_means_nmi_cor = (normalized_mutual_info_score(trainSet_correlation.whole_dataset()[1], k_means_indx_cor))"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\nzZsZPnw4v/76a6r0e/ToYd2n0aNHExYWxquvvkqHDh3o3r07Xbp0SbV8YmIi//rXv4iIiMDd3Z2+\nffsyZ84caxftrJR1Wr6+vtYgja3PP/+cM2fO4OLiQmxsLBUqVGDgwIHWsga4du0anTt3RinF7Nmz\n+eSTT/jwww8BOHr0KL///juxsbHW7+7gwYN8+OGHbNmyBTc3N65eNZ42fP3113n77bdp1qwZp06d\nolOnThw8eDDTvIv7V0HUkWDcoW7fvj3169fHzc2N3bt34+vrCxgXeiaTybrszJkzadGiRbo0nnji\nCcLDw1m/fn2qtyFYgmgHDhzgzz//JDg42Brk27p1K/v378fNzY2IiAj27dvHkSNHcHNzo27dugwc\nOJDt27fz+eefM3PmTD777DOaN2/OH3/8gVKKuXPnMm3aND755BO7+1W9enVrnf3FF1+wYcMGatWq\nxQsvvMCwYcMIDg7mzJkztGvXjiNHjjBhwgSaN2/O2LFjWb16tfUi29ahQ4esgYy0du3axfz589m2\nbRtaawICAggKCqJixYr89ddfzJ8/ny+//BKAhIQEPDw8mDhxIklJSQQFBbFixQoqV67MkiVLCA0N\n5euvv06V/vDhwxk7diwA/fv3Z9WqVXTv3p1Zs2bx8ccfp3r0BSAqKop33nmHXbt2UbFiRYKDg1m+\nfDldunQhISGBZs2aMXnyZN5++22++uorxowZY7ccbdl79Obq1auEh4fz559/opSy1n2dO3emU6dO\n1qB0hQoVGDRoEGAEW+fNm8drr70GGEH/TZs28eeff9K5c2e6d+/OmjVrWL58Odu2baN06dLWum/w\n4MHMnj2bevXqsW3bNoYOHcq6desyzbsQBc0SQE5MTALu3WQD8qQHW1FQpIIPN6IXo/WdVNO0vsON\n6MUSfBAiD6RtVGc2Pbc2bdpEnz59cHZ2pmrVqgQFBbFjxw78/Pz417/+RVJSEl26dEnV8M4uFxcX\nh49LLFq0iHnz5pGcnExUVBSHDx+2Bh+ef/55AJo0aZJqfAFbXbp0QSmFl5cX58+ft+5Tz549cXJy\nonr16gQFBWWax40bN9KtWzdKly5tTXfr1q107twZd3d3/Pz8srXP27Zto3Xr1lSqVAmAF154gcjI\nSNq3b2+3PHr16gVAbGwsf/zxB926dbPOS05OTpf+/v37GTt2LLGxscTFxdGpU6cM83PkyBHq1auH\nu7s7ACEhIcybN88afMhKWadl744oQMOGDenXrx/PPfdcuiCIxZkzZ+jZsycXLlzg9u3bqR7/6dSp\nEy4uLlSpUgU3NzcuX77MunXr6NWrF25ubgDWf9euXZtq/JBr165x8+ZNSpUqlaV9EIVPftWRixYt\nsgbHevfuzaJFi6zBh6w+dgG6ecYWAAAgAElEQVTGBeWkSZOswTQw6iTLBebjjz9OrVq1rMGHtm3b\nWo9nAD8/P6pVq2bdbnBwMACenp7WHhPnzp2jV69eREdHc+fOnSy9QnHz5s3MnTuXjRs3AsZv5+DB\ng9aeCzdu3CAuLo7IyEiWLVsGQMeOHalYsWKW9tt2X7t27UqZMmUAo27ZuHEjnTt3platWqkevXJ2\ndrbWdX/99RcHDx6kbdu2gNGDzVIOttavX8+0adNITEzk6tWr1h5ujuzYsYOWLVtSuXJlAPr27Utk\nZCRdunTBxcXFWnc2adKE3377LUv7aK/uK1++PCVLlmTgwIF07NjRYZ188OBBxowZQ2xsLPHx8bRr\n1846r0uXLjg5OdGoUSNrL4y1a9fy0ksvWc9Nbm5uxMfHs2XLFnr0uDfe/O3bt7OUdyEKWmjo79bA\ng0ViYhKhob9L8CGLilTwISUpJlvThRCpZXb3rXbtzzh9+nq66bVquRIRMSBH22zYsCGrVq2yO8/R\nBWRgYCCRkZGsXr2a/v37M2rUKEJCQnK0/VKlStkdbfvYsWN8/vnnbN++nQoVKtCvX79UrwMrUaIE\nYDRQ7V2A2y5juy+O9ikjGa1jaUSnVa9ePU6ePElCQkK6ZTJKz155WNbXWlOpUqVML3RCQkJYs2YN\nHh4ezJ07N9PHDTIrk6yUdVp79uyhYcOG6aaHh4eze/duVqxYwaRJk+z2RBg2bBjvvfceHTp0YO3a\ntUydOjVdXmzzo7W2ewxprdm+fbv1sRdR+BVEHRkTE8O6des4ePAgSilSUlJQSjFt2rRsp9W6dWve\nf//9VL/J7NQvtse/k5OT9bOTk5P1t/naa6/x5ptv0rlzZyIiIlKNT2FPdHQ0L7/8MitXrrT21Lp7\n9y5r166lSpUq6ZbP7O0IjRs3Zt++fdy9ezfVuA2QvX0tWbKktfeE1prGjRuzdetWh+vfunWLoUOH\nsnPnTh599FHGjx+f6SskM8pP8eLFrfuanbpv37596eq+YsWKsX37dn7//XcWL17MrFmz7PZEGDBg\nAMuXL8fb25uwsDAiIiKs8xydz9J+H3fv3qVChQrZ7oUoxP3gzJn09XdG00V6RWrMB+fiD2VruhAi\neyZPfprSpYunmla6dHEmT346x2kGBQVx+/ZtvvrqK+u0HTt2sGHDBgIDA1myZAkpKSlcvnyZyMhI\n/P39OX36NFWqVGHQoEG8/PLL7N69GzAaa0lJSY42lS03btygXLlylC9fnujo6Dx7S0Tz5s1ZunQp\nWmuio6OJjIzMdJ3AwEDCw8O5efMm8fHxrFixgieffDLDdcqVK0dISAgjR460lklUVBQLFy6kWbNm\nrF+/npiYGJKTk1m8eHGWemBUrFiRatWqWcevuHv3Lvv27Uu3XEJCAg8//DBJSUl89913qfIUFxeX\nbvlGjRpx7NgxTpw4ARjjUWQlP47s3buXKVOmpBtoMiUlhfPnz9O6dWs++ugjLl++TGJiYrp8Xb9+\nnUceeQStNd98802m22vTpg2LFy+2djm2/NumTZtU40JIY/zBlx915NKlSwkJCeH06dOcOnWKs2fP\nUqdOHTZtytmYVqGhoakCF4GBgda3wRw9epQzZ87QoEGDHOfX8vsBMv39JCUl0bNnTz788MNUPYyC\ng4NTPVJh+e3Y5nXNmjVcu3YtXZru7u40bdqUcePGWS+Sjx07xooVKwgMDGT58uUkJiaSkJBAeHi4\n3UdU0mrQoAGXL1+2Bh+SkpI4dOhQqmUsgYZKlSoRHx+falwER3VfQEAAGzZs4MqVK6SkpLBo0aJc\n1X0bNmwgLCzM+uiERXx8PNevX6dDhw589tln1vJMm6+4uDiqVatGUlJShm8IsggODubrr7+2jg1x\n9epVypcvT506dfjhhx8AI0Bh7zwhxP2oZk3XbE0X6RWp4EP5ar1RKvUdJqVcKF+tdwHlSIgHS9++\nnsyZ8yy1armilHE3b86cZ3PVFU0pRXh4OL/99pv1tWjjx4+nevXqdO3a1TqIX+vWrZk2bRoPP/ww\nERERmEwmfHx8+PHHHxkxYgRgPGfq5eWV5QEnM+Lr60ujRo3w8PBg0KBBPPXUU7lOE6Bnz55UqVIF\nDw8Phg0bRkBAAK6uGZ/U/P396dOnD35+fjRr1oxXX32Vxo0bZ7qtqVOn4urqSsOGDfH09OT555+n\nSpUq1KhRg4kTJ9KyZUtMJhPNmjWzDsaWmcWLFzN79my8vb1p3Lix3V4rEydOxN/fn7Zt26YaRb1P\nnz5MmTIl3WtOS5cuzbx583j++efx9PSkRIkS6RrPmVm/fj0+Pj40aNCA119/nS+//DJdIz45OZmX\nX34ZLy8vfH19eeeddyhXrhzPPfcc33//PT4+PmzZsoXx48fTtWtXgoKCqFq1aqbb9vLy4u2337YO\ngjpq1CjAeIZ98+bNeHl50ahRo1QBNvFgSltHPvpouVzXkYsWLUr3KFS3bt2sgT3LmA+WvxkzZmSY\nXocOHazd/AGGDh1KSkoKnp6e9OrVi7CwsFR3ubNr/Pjx9OjRgxYtWlgf7XJky5Yt7Nixg3Hjxlnz\nHxUVxYwZM9izZ4/1t2MZ52XcuHFERkbi6+vLr7/+Ss2aNe2mO3fuXC5cuMBjjz1mHcS2evXq+Pr6\nMmDAAPz9/QkICGDgwIH4+Phkuk8uLi4sXbqUd955B29vb+vgtLYs4yV4enrSpUuXVI/DDRgwgCFD\nhlgHnLSoVq0a//nPf2jVqhXe3t74+vry3HPPZZofW0uWLMFkMlG/fn2mTJnCt99+m67ng+XxNy8v\nL4KCgvj0008B4xGejz76CB8fH44fP84HH3xAQEAAbdu2tb6VKCPt27enc+fONG3aFJPJxMcffwzA\nwoULmTdvnvU8sWLFimztkxAFZfLkp3F2Tt2bJ7cB5KJG5aSL7z+tadOm2jLqb279+tMiKpX6mSqV\nkoiLd+bstU4EP9snT9IuCiIiIv7xd38/CApzuR05csRu9/R/SlxcXKrBz4qC+Ph4ypYty+XLlwkI\nCGDbtm2pLgayoiiWW164n8vN3m9RKbVLa93UwSoPPKVUe+BzwBmYq7Wemmb+p0Ar88fSQBWtdQXz\nvBcBywh9k7TWmXZjsdceyU0deT8fb/c7KbucKYzlVtDtECjc7biC9iCV3S+//M0zzyzE1bUEN27c\nzpNXyjtS2Motq+2RIjXmgzFC6UkSEx9jyZzTPFwlma4vnGDOnAMySIgQ4r7xzDPPcOPGDZKSkpgw\nYUK2Aw9CFAVKKWfgC6AtcA7YoZRaqbU+bFlGa/2GzfKvAT7m/7sB44CmgAZ2mddN309fCCFEkZeY\nmMTQoat5/PFK7N37CiVKFKnL6DxTpErNdoTSZatd+Xh8NA3c42SEUiHEfcUyorsQIkP+wN9a6xMA\nSqnFwHPAYQfL98EIOAC0A37TWl81r/sb0B5YlK85FkIIUShNmhTJyZOxRES8KIGHXChSJWc7Eunq\nteWYNPoC3TvFMmaqvNZMCCGEKGQeAc7afD4HBNhbUClVC6gDWIbwt7fuIw7WHQwMBqhatWqqEf4B\nXF1d7Q4WmBUpKSk5Xreok7LLmcJYbrdu3Ur3u/unxcfHF3geCqsHoexOnkxg2rRdtG9fFa1PERFx\nKt+3+SCUmz1FKvhQs6ar9RVX8QnO/LK+HM8GxzH/+/qZrCmEEEKI+4y9dyo6GsiqN7BUa52S3XW1\n1nOAOWCM+ZD2GdwjR47k+Bn6wvj8/f1Cyi5nCmO5lSxZMksDf+anwvb8/f2ksJfd3bua998Po0KF\nkvz3vyFUqlT6H9luYS83R4rU2y7SvuLqx1WuVKyQwszpjxZgroQQQgiRA+cA2xN4DSDKwbK9Sf1I\nRXbWFUIIUUTNn7+HTZvO8NFHbf+xwMODrEgFHyyvuKpe3Yj4HvjTjTtJZWjqeaaAcyaEEEKIbNoB\n1FNK1VHGe7R7AyvTLqSUagBUBLbaTP4fEKyUqqiUqggEm6cJIYQQAFy+nMDbb68lMLAWAwaYCjo7\nD4QiFXwAIwBx/vybeHm5UrlKedyqB3Hrxm5Skm8UdNaEEA5cuHCB3r174+7uTqNGjejQoQNHjx7N\ndjpTpkyxOz0gIACTyUTNmjWpXLmy9X3yp06dSrfsSy+9xF9//ZXtbQOEh4fz0Ucf5WjdtA4fPoy3\ntzc+Pj5285kVSUlJvP322zz22GN4eHgQEBDA//6X/euv0NBQ1q9fn6M82Pr7778pVaoUPj4+NGzY\nkICAAP773/9a52dWfrt37+aXX37JdT5E4aC1TgaGYwQNjgDfa60PKaUmKqU62yzaB1isbd4tbh5o\n8gOMAMYOYKJl8MnCKjw8HKUUf/75p3XaqVOnKFWqlLVOM5lMLFiwIN26LVu2pGnTe29I27lz5z/e\n3TcsLIzhw4cDMHv2bLv5zK7atWtz5cqVdNPj4+N55ZVXcHd3p3HjxgQGBrJt27Zspz9w4EAOH3Y0\nvmnWRURE4Orqio+PDw0aNCAwMJBVq1ZZ52dWHhEREWzZsiXX+RBCpPbWW78RF3eb2bM7opS9p/VE\ndhWpMR9stW1blU8+OcrJKH8qF/+Zm9e2UrZyu4LOlhCFXsLVTdyIXkxKUgzOxR+ifLXelHFrnuP0\ntNZ07dqVF198kcWLFwOwd+9eLl68SP362RuvZcqUKbz33nvpplsanWFhYezcuZNZs2bZXT8lJYX5\n8+dncw/u6dq1a47XTWvZsmV0796d999/P0vLa63RWuPkdC/m/O6773L16lUOHz6Mi4sL0dHRbN68\nOdt5mTx5crbXcaRBgwbs2bMHMIIRljLr379/puW3e/duDh48SPv27fMsP+L+prX+Gfg5zbSxaT6P\nd7Du18DX+ZY5B2zrSFWsIk7VX8hVHWmxaNEimjdvzuLFixk/frx1uru7O3v37s10/UuXLrFmzRqe\neeaZbG87OTmZYsXyrkk5ZMiQPEvLnoEDB1KnTh2OHTuGk5MTJ06c4MiRI9lOZ+7cuXmWpxYtWlgD\nDnv37qVLly6UKlWKp59+OtPyiIiIoGzZsjz55JN5lh8hirr160+yYME+QkNb0LChvPI8rxS5ng8W\nLVtWpkQJZ75ecJniJWuSeE1ebSdEbiVc3UTs2TmkJF0BNClJV4g9O4eEq5tynGZkZCTFixdP1fgy\nmUy0aNECrTWjRo3Cw8MDT09PlixZAkB0dDSBgYGYTCY8PDzYuHEjo0eP5ubNm5hMJvr27ZulbScn\nJ1OhQgXGjBmDv78/27dvp3nz5taG/ODBg2natCmNGzdm4sSJ1vVq1KjB+PHj8fHxwcvLy9pLY+7c\nuYwcORKAfv36MWLECJ588knq1q1LeHg4YAQ4hgwZQuPGjXn22Wdp3749y5cvT5WvlStXMmvWLGbP\nnk2bNm0AmDZtGh4eHnh4eDBz5kzAuHj38PBgyJAh+Pr6Eh0dbU0jLi6OsLAwZsyYgYuLCwDVqlWj\ne/fuAHz77bd4enri4eFhDdgkJyfTv39/6/QZM2ZY98WSR0f7Hh8fz4ABA/D398fHx4effvop0/J/\n7LHH+OSTT6zbsS2/xYsX4+Hhgbe3N61ateLmzZtMnDiRhQsXYjKZWLp0KX/88QdPPPEEPj4+PPXU\nUxw7dsyaTvfu3WnXrh316tXj3XfftW7zl19+wdfXF29vb4KDg3OcdyHsSVtH6uSrua4jwThGN2/e\nzLx586xB2uwaNWoUkyZNSjf91q1bvPTSS3h6euLj42Pt5RQWFkaPHj149tlnCQ4OJiIigqCgIHr2\n7En9+vUZPXo0CxcuxN/fH09PT44fPw7ATz/9REBAAD4+PrRp04aLFy+m2+b48eP5+OOPiYqKStVr\nw9nZmdOnT3P58mX69euHn58ffn5+1qBpTEwMwcHB+Pj48Morr2DT2cXq+PHjbNu2jUmTJlmDsXXr\n1qVjx44ATJ8+3VqXfvbZZwAkJCTQsWNHvL298fDwsJ5rWrZsyc6dOwEoW7YsoaGheHt706xZM+t+\nXb58mW7duqXLa0ZMJhNjx461BsIt5QEwY8YMGjVqhJeXF7179+bUqVPMnj2bTz/9FJPJxMaNGx2W\n8fjx4xk6dCgtW7akbt261roVYMGCBXh5eeHt7U3//v1znHchHgS3byczZMhq6tatSGhoi4LOzgOl\nyPZ8KFu2GM899ziLFx/ig/eaE3/xO5JuRVG8ZPWCzpoQ963Yc99w5+Yph/PvJB4DnZxqmtZ3uHZ2\nNgkxv9tdx6VUbSrUeNFhmocPH6ZJkyZ25y1btoy9e/eyb98+rly5gp+fH4GBgXz33Xe0a9eO0NBQ\nUlJSSExMpEWLFsyaNStLdwBtXb9+HV9fX7uN8qlTp+Lm5kZycjKtWrWie/fuNGrUCDBeybdnzx5m\nzJjB9OnTmT17drr1L126xObNmzlw4AA9e/aka9eu/PDDD5w/f54DBw5w4cIFGjZsmO6uV+fOndm+\nfTuVKlVi5MiRbN++nYULF7J9+3ZSUlLw9/enadOmVK5cmcOHDzN//vx02z927Bh16tShbNmy6fJ1\n7tw5xowZw86dO3F1daVNmzasWrWKypUrc+XKFQ4cOABAbGys3TKzt+8TJ06kffv2hIWFce3aNQIC\nAmjbti0lS5bMsPx9fX1TdSO3mDBhAhEREVStWpXY2FhKlSrF2LFjOXjwoPWC4fr162zatAlnZ2d+\n+eUXxowZY71o2LdvH7t376ZYsWLUr1+f1157DScnJ9588002bdpErVq1uHrV6IWf07yLoqcg6kiA\n5cuX0759e+rXr4+bmxu7d+/G19cXMC62TaZ7zyrPnDmTFi3SN6afeOIJwsPDWb9+faq3IXzxxRcA\nHDhwgD///JPg4GBrUHHr1q3s378fNzc3IiIi2LdvH0eOHMHNzY26desycOBAtm/fzueff87MmTP5\n7LPPaN68OX/88QdKKebOncu0adP45JNP7O5X9erVrXX2F198wYYNG6hVqxYvvPACw4YNIzg4mDNn\nztCuXTuOHDnChAkTaN68OWPHjmX16tXMmTMnXZqHDh2yBjLS2rVrF/Pnz2fbtm1orQkICCAoKIgT\nJ05QvXp1Vq9eDRh1S1oJCQk0a9aMyZMn8/bbb/PVV18xZswYRowYwRtvvEHz5s1T5TUzvr6+dh8z\nmzp1KidPnqREiRLExsZSoUIFhgwZQtmyZXnrrbcAuHbtmsMyPnr0KJGRkcTFxdGgQQNeffVVjh49\nyuTJk9m8eTOVKlWy1n05zbsQhd2HH27m6NEYfvmlL6VKFc98BZFlRTb4ANC/vxfff3+ILbuq41VD\nkXhtI67VehV0toQovNI0qjOdnkubNm2iT58+ODs7U7VqVYKCgtixYwd+fn7861//IikpiS5duqRq\neGeXi4uLw+7+ixYtYt68eSQnJxMVFcXhw4etwYfnn38egCZNmvDzzz/bXb9Lly4opfDy8uL8+fPW\nferZsydOTk5Ur16doKCgTPO4ceNGunXrRunSpa3pbt26lc6dO+Pu7o6fn1+29nnbtm20bt2aSpUq\nAfDCCy8QGRnJO++8w19//cWIESPo0KGDtWdAWvb2/ddff2XNmjVMnToVMO6mnjlzJtNHZ+zduQR4\n6qmnCAkJoUePHtbtpRUbG0tISIj1jqutNm3aWC+wHn/8cc6cOUN0dDQtWrSgVq1aALi5ueUq70Kk\nk0915KJFi6y9gnr37s2iRYuswYesPnYBMGbMGCZNmsSHH35onbZp0yZee+01wPit1KpVyxp8aNu2\nrfV3AuDn50e1atWs27XUEZ6entYeE+fOnaNXr15ER0dz584d6tSpk2m+Nm/ezNy5c9m40eilunbt\nWg4ePGjtuXDjxg3i4uKIjIxk2bJlAHTs2JGKFStmab9t97Vr166UKVMGMOqyjRs30r59e9566y3e\neecdOnXqZDd44+LiQqdOnQCj7vvtt9+sebUdF8KS18xed+mo7vPy8qJv37506dKFLl262F0mozJu\n164dJUqUoESJElSpUoWLFy+ybt06unfvbq3zLd9pTvMuRGF27FgMU6ZspFevxrRr91hBZ+eBU6SD\nD+3auVO5cmm+DjvB//vQi8SrGyn/cA+UKrJPowiRoczuvkUfGm7uTpyac/FKVKk3LkfbbNiwYaqB\nt2w5apwFBgYSGRnJ6tWr6d+/P6NGjSIkJCRH2y9VqpTdQYaOHTvG559/zvbt26lQoQL9+vXj1q1b\n1vklSpQAwNnZmeRk+xcWlmVs98XRPmUko3Usjei06tWrx8mTJ0lISEi3jKP0HnroIfbv38+aNWuY\nMWMGP/74o907i/b2XWvN8uXLcXd3z9I+WezZs4eGDRumm/7VV1+xbds2Vq1ahbe3N/v370+3TGho\n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\n8EFEREREREREWpTCBxERERERERFpUQofRERERERERKRFKXwQERERERERkRal8EFEREREREREWtT/\nAwNNM8e/LZohAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1fb0499d400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"warnings.filterwarnings('ignore')\n",
"plt.figure(figsize=(18, 6))\n",
"plt.subplot(1,2,1)\n",
"plt.errorbar(steps_cor, loss_cost_cor, label='Cost Trianing for Correlation Distance ', color='#000080', marker='o')\n",
"plt.errorbar(steps_cos, loss_cost_cos, label='Cost Trianing for Cosine Distance ', color='#E3CF57', marker='o')\n",
"plt.xlabel('Number of Epochs.')\n",
"plt.ylabel('Cost')\n",
"plt.grid()\n",
"plt.title('Cost Function Trianing')\n",
"plt.legend(loc='best')\n",
"plt.subplot(1,2,2)\n",
"plt.errorbar(steps_cor, results_cor, label='AE Normalized Correlation Distance ', color='#000080', marker='o')\n",
"plt.errorbar(steps_cos, results_cos, label='AE Normalized Cosine Distance ', color='#E3CF57', marker='o')\n",
"plt.xlabel('Number of Epochs.')\n",
"plt.ylabel('NMI')\n",
"plt.grid()\n",
"plt.title(('NMI of AE Correlation is {:0.2f} and AE Cosine is {:0.2f}').format(ae_nmi_cor*100, ae_nmi_cos*100))\n",
"plt.legend(loc='best')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"KMeans on Cosine: ---------------------------- 55.48\n",
"KMeans on Correlation: ----------------------- 65.65\n",
"Spectral Clustering on Cosine: --------------- 53.39\n",
"Spectral Clustering on Correlation: ---------- 52.83\n",
"Autoencoder Clustering on Cosine: ------------ 67.95\n",
"Autoencoder Clustering on Correlation: ------- 70.50\n"
]
}
],
"source": [
"print(\"KMeans on Cosine: ---------------------------- {:0.2f}\".format(k_means_nmi_cos*100))\n",
"print(\"KMeans on Correlation: ----------------------- {:0.2f}\".format(k_means_nmi_cor*100))\n",
"print(\"Spectral Clustering on Cosine: --------------- {:0.2f}\".format(spec_nmi_cos*100))\n",
"print(\"Spectral Clustering on Correlation: ---------- {:0.2f}\".format(spec_nmi_cor*100))\n",
"print(\"Autoencoder Clustering on Cosine: ------------ {:0.2f}\".format(ae_nmi_cos*100))\n",
"print(\"Autoencoder Clustering on Correlation: ------- {:0.2f}\".format(ae_nmi_cor*100))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____________________________________________________________________________________________________________________________"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____________________________________________________________________________________________________________________________"
]