tahamajs's picture
download
raw
129 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from sklearn.mixture import GaussianMixture\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.decomposition import PCA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Read Dataset"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"X = np.load('mnist/x_train.npy')\n",
"y = np.load('mnist/y_train.npy')\n",
"X = X.reshape(X.shape[0], X.shape[1] * X.shape[2])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A. Fit GMM"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GaussianMixture(n_components=2, random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GaussianMixture</label><div class=\"sk-toggleable__content\"><pre>GaussianMixture(n_components=2, random_state=42)</pre></div></div></div></div></div>"
],
"text/plain": [
"GaussianMixture(n_components=2, random_state=42)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_binary = np.concatenate([X[y==0], X[y==1]])\n",
"\n",
"pca = PCA(n_components=2)\n",
"X_pca = pca.fit_transform(X_binary)\n",
"\n",
"\n",
"gmm = GaussianMixture(n_components=2, covariance_type='full', random_state=42)\n",
"gmm.fit(X_pca)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## B. Distance Between The Means"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Distance between means: 1909.64\n"
]
}
],
"source": [
"mean1 = gmm.means_[0]\n",
"mean2 = gmm.means_[1]\n",
"\n",
"distance = np.linalg.norm(mean1 - mean2)\n",
"print(f\"Distance between means:{distance: .2f}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## C. Visualizing Components Means"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def plot_image(img, img_rows=28, img_cols=28, title=''):\n",
" img = img.reshape(img_rows, img_cols)\n",
" plt.imshow(img,cmap='gray')\n",
" plt.colorbar()\n",
" plt.grid(False)\n",
" plt.title(title)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"mean1_inv = pca.inverse_transform(mean1)\n",
"mean2_inv = pca.inverse_transform(mean2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfAAAAGxCAYAAACdqOQvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA4LElEQVR4nO3df3QV9Z3/8dclJDchJMEkJLlXkhgp+INQEFCQSglWUyPiD2gF6bZgNa0VOMsB1hWpJbouqbZSPVBp7VF+KBa6W6VucdVQDOgiLSAooMUgAYLmkhIhIQGSAPP9g29uvSSEzHDz48M8H+fMObkz85753GHIO+/P/Ph4LMuyBAAAjNKloxsAAADsI4EDAGAgEjgAAAYigQMAYCASOAAABiKBAwBgIBI4AAAGIoEDAGAgEjgAAAYigaPT++ijj3TvvfcqKytL0dHR6t69uwYNGqSnnnpKX375ZXC9nJwc5eTkdFxDz2PBggW68sor5fV6lZWVpccee0wNDQ0d3SwAhura0Q0AWvK73/1ODz74oK644gr927/9m66++mo1NDRo8+bN+s1vfqP3339fr732Wkc387z+8z//U48++qgefvhh5ebmatOmTfrpT3+qzz//XM8//3xHNw+AgTy8Cx2d1fvvv68RI0bo5ptv1qpVq+T1ekOW19fX680339Ttt98uScHqu7i4uJ1b2rLKykr16tVLP/jBD/Tb3/42OH/evHn66U9/qh07dujqq6/uwBYCMBFd6Oi05s2bJ4/Ho+eff75J8pakqKioYPI+l8cee0xDhw5VYmKi4uPjNWjQIL3wwgs6++/WtWvXKicnR0lJSYqJiVFGRobGjRunY8eOBddZtGiRBgwYoO7duysuLk5XXnmlHnnkkfN+jzfffFMnTpzQvffeGzL/3nvvlWVZWrVqVYvxS5Yskcfj0dq1a5Wfn6+kpCTFx8frBz/4gWpraxUIBHT33XerR48e8vl8mjVrVpOu+fr6ej3xxBPBLvyePXvq3nvv1T/+8Y+Q9VauXKnc3Fz5fD7FxMToqquu0sMPP6za2tqQ9SZPnqzu3btr9+7duvXWW9W9e3elp6dr5syZqqurO+8xAXDh6EJHp3Tq1CmtXbtWgwcPVnp6uuPt7N27Vz/+8Y+VkZEhSdq4caOmTZumzz//XD/72c+C64wePVojRozQiy++qB49eujzzz/Xm2++qfr6enXr1k0rVqzQgw8+qGnTpumXv/ylunTpot27d+vjjz8+bxt27NghSerfv3/IfJ/Pp+Tk5ODy87n//vs1duxYrVixQlu3btUjjzyikydPateuXRo7dqx+9KMfac2aNXryySfl9/s1Y8YMSdLp06d1xx136N1339VDDz2k4cOHa9++fZo7d65ycnK0efNmxcTESJJKSkp06623avr06YqNjdXf//53Pfnkk/rb3/6mtWvXhrSnoaFBt99+u+677z7NnDlT69ev13/8x38oISEheGwBtCEL6IQCgYAlyZowYUKrY0aOHGmNHDnynMtPnTplNTQ0WI8//riVlJRknT592rIsy/rv//5vS5K1bdu2c8ZOnTrV6tGjR6vb8lX5+fmW1+ttdlnfvn2t3NzcFuMXL15sSbKmTZsWMv/OO++0JFnz588PmT9w4EBr0KBBwc+///3vLUnWH//4x5D1Nm3aZEmynnvuuWb3e/r0aauhocFat26dJcn68MMPg8smTZpkSbL+8Ic/hMTceuut1hVXXNHi9wEQHnSh46K2du1a3XTTTUpISFBERIQiIyP1s5/9TJWVlaqoqJAkDRw4UFFRUfrRj36kpUuXas+ePU22c9111+nIkSO655579Kc//UmHDh1qss7JkydDJusr3fQej+ecbWxp2VfddtttIZ+vuuoqSdLo0aObzN+3b1/w85///Gf16NFDY8aMCWnfwIEDlZaWFnLPwJ49ezRx4kSlpaUFj9fIkSMlSZ988kmTdo8ZMyZk3te//vWQfQNoOyRwdErJycnq1q2bSktLHW/jb3/7m3JzcyWduZv9//7v/7Rp0ybNmTNHknT8+HFJUu/evbVmzRqlpKRoypQp6t27t3r37q1nn302uK3vf//7evHFF7Vv3z6NGzdOKSkpGjp0qIqKioLrREZGhkxLly6VJCUlJenEiRMh19Mbffnll0pMTGzV9zl7vaioqHPOP3HiRPDzwYMHdeTIEUVFRTVpYyAQCP4xUlNToxEjRuivf/2rnnjiCRUXF2vTpk169dVXQ45Xo27duik6OjpkntfrDdk3gLbDNXB0ShEREfrWt76l//3f/9WBAwfUq1cv29tYsWKFIiMj9ec//zkk0TR309iIESM0YsQInTp1Sps3b9aCBQs0ffp0paamasKECZLO3HR27733qra2VuvX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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_image(mean1_inv, title=\"Class-0 mean\")\n",
"plt.savefig('assets/Q6_zero_mean.png')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_image(mean2_inv, title=\"Class-1 mean\")\n",
"plt.savefig('assets/Q6_one_mean.png')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## D. Close Images to Decision Boundary"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"probs = gmm.predict_proba(X_pca)[:, 0]\n",
"probs = np.abs(probs - 0.5)\n",
"probs = np.array([[prob, i] for i, prob in zip(range(probs.shape[0]), probs)])"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"probs = np.array(sorted(probs, key=lambda x: x[0]))"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_image(\n",
" pca.inverse_transform(X_pca[int(probs[0, 1])]), \n",
" title=f'P(c=1) ={0.5 + probs[0, 0]:.2f}'\n",
" )\n",
"plt.savefig('assets/Q6_DB1.png')"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_image(\n",
" pca.inverse_transform(X_pca[int(probs[1, 1])]), \n",
" title=f'P(c=1) ={0.5 + probs[1, 0]:.2f}'\n",
" )\n",
"plt.savefig('assets/Q6_DB2.png')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## E. Similarity Between Classes"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
"def gmm_distance(X, y, label1, label2):\n",
" X = np.concatenate([X[y==label1], X[y==label2]])\n",
" \n",
" pca = PCA(n_components=2)\n",
" X_pca = pca.fit_transform(X)\n",
" \n",
" \n",
" gmm = GaussianMixture(n_components=2, covariance_type='full', random_state=42)\n",
" gmm.fit(X_pca)\n",
"\n",
" mean1 = gmm.means_[0]\n",
" mean2 = gmm.means_[1]\n",
"\n",
" distance = np.linalg.norm(mean1 - mean2)\n",
" \n",
" mean1_inv = pca.inverse_transform(mean1)\n",
" mean2_inv = pca.inverse_transform(mean2)\n",
" \n",
" return distance, mean1_inv, mean2_inv"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [],
"source": [
"distances = []\n",
"labels = []\n",
"for label1 in range(10):\n",
" for label2 in range(label1 + 1, 10):\n",
" distances.append(gmm_distance(X, y, label1, label2)[0])\n",
" labels.append((label1, label2))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Min distance"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Max distance: (0, 1)\n"
]
}
],
"source": [
"max_labels = labels[np.argmax(distances)]\n",
"_, mean1_inv, mean2_inv = gmm_distance(X, y, *max_labels)\n",
"print(\"Max distance:\", max_labels)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Max distance"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Min distance: (8, 9)\n"
]
}
],
"source": [
"min_labels = labels[np.argmin(distances)]\n",
"_, mean1_inv, mean2_inv = gmm_distance(X, y, *min_labels)\n",
"print(\"Min distance:\", min_labels)"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_image(mean1_inv, title='Clss-8 mean')\n",
"plt.savefig('assets/Q6_eight_mean.png')"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_image(mean2_inv, title='Class-9 mean')\n",
"plt.savefig('assets/Q6_nine_mean.png')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

Xet Storage Details

Size:
129 kB
·
Xet hash:
d23c5a57bcbf09fcbedafca1be8fefb69425cbde4051c4bb30ef58f671c38f15

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.