From 9e8eef21547b5e6dc8d545da632643e58d992f7a Mon Sep 17 00:00:00 2001 From: Abdelrahman Tarek <58150666+Abdelrahman13-coder@users.noreply.github.com> Date: Fri, 15 Apr 2022 09:13:09 +0200 Subject: [PATCH] Delete PCA from scratch.ipynb --- .../PCA from scratch.ipynb | 241 ------------------ 1 file changed, 241 deletions(-) delete mode 100644 ML algorithms from scratch/PCA from scratch.ipynb diff --git a/ML algorithms from scratch/PCA from scratch.ipynb b/ML algorithms from scratch/PCA from scratch.ipynb deleted file mode 100644 index 7950646..0000000 --- a/ML algorithms from scratch/PCA from scratch.ipynb +++ /dev/null @@ -1,241 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "ce66e882", - "metadata": {}, - "source": [ - "## PCA from Scratch" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "4f979178", - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "7bb7cddf", - "metadata": {}, - "outputs": [], - "source": [ - "class PCA ():\n", - "\n", - " def __init__(self,n_components):\n", - " self.n_components = n_components\n", - " if self.n_components > 1:\n", - " self.type = 'var'\n", - " else:\n", - " self.type = 'ratio'\n", - "\n", - " def fit(self,X):\n", - " self.variance = np.var(X, axis = 0)\n", - " \n", - "# 1.center the data\n", - " self.mean = np.mean(X, axis = 0)\n", - " X_new = X - self.mean\n", - "# 2.calculate the covariance matrix\n", - " \"\"\"\n", - " numpy.cov(m, y=None,\n", - " rowvar=True, bias=False,\n", - " ddof=None, fweights=None,\n", - " aweights=None, *, dtype=None)\n", - " \n", - " A 1-D or 2-D array containing multiple variables and observations.\n", - " Each row of m represents a variable, and each \n", - " column a single observation of all those variables. \n", - " Also see rowvar below.\n", - " \"\"\"\n", - " cov = np.cov(X_new.T)\n", - "# 3.calculate eigenvalues of the covariance matrix\n", - "# 4.calculate eigenvectors of the covariance matrix\n", - " eigenvalues, eigenvectors = np.linalg.eig(cov)\n", - "# 5.Order the eigenvectors\n", - " \"\"\"\n", - " argsort :returns the index of the sorted array\n", - " \"\"\"\n", - " index = np.argsort(eigenvalues)[::-1]\n", - " eigenvalues = eigenvalues.T\n", - " #print(eigenvalues)\n", - " eigenvalues = eigenvalues[index]\n", - " #eigenvectors = eigenvectors[: , index]\n", - " eigenvectors = eigenvectors[index].T\n", - " #normalize eigenvalues\n", - " eigenvalues = eigenvalues/np.sum(eigenvalues)\n", - " #eigenvalues = np.round(eigenvalues/ np.sum(eigenvalues), 2)\n", - " #print(eigenvalues)\n", - "# 6.calculate principle components\n", - "\n", - " if (self.n_components <=1):\n", - " self.cumulative_sum = eigenvalues.cumsum()\n", - " #print(self.cumulative_sum)\n", - " #get the index at which the cumulative sum exceeded n_components\n", - " self.ratio_index = np.where(self.cumulative_sum >= self.n_components)[0][1]\n", - " self.components = eigenvectors[:,0:self.ratio_index]\n", - " #print(self.components)\n", - " #print(\"eigenvalues\",eigenvalues)\n", - " self.explained_variance = eigenvalues[0:self.ratio_index]\n", - " #print(\"explained variance\", self.explained_variance)\n", - " else:\n", - " self.components = eigenvectors[:,0:self.n_components]\n", - " self.cumulative_sum = eigenvalues.cumsum()\n", - " self.ratio_index = self.n_components\n", - " \n", - " # self.components = #matrix (n,)\n", - " return X_new\n", - "\n", - " def transform(self,Z):\n", - " Z_new = Z - self.mean \n", - " Z_new = np.dot(Z_new,self.components)\n", - "\n", - " return Z_new\n", - "\n", - " #optional \n", - " def plot_explained_variance(self):\n", - " plt.bar(np.arange(self.ratio_index), self.cumulative_sum[0:self.ratio_index])\n", - " plt.axhline(self.cumulative_sum[self.ratio_index-1], color = 'red', ls = \"dotted\")\n", - " plt.xlabel(\"Cumulative Index\")\n", - " plt.ylabel(\"Threshold\")\n", - " plt.title(\"Plot explained variance\")\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "3741b0f1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.43153415 0.16003835 0.12774915 0.10458295 0.09506252 0.04183003]\n" - ] - } - ], - "source": [ - "df = pd.read_csv('Clean_data.csv')\n", - "X = df.to_numpy()\n", - "pca_section = PCA(n_components=0.95)\n", - "X_transofmed = pca_section.fit(X)\n", - "X_transofmed = pca_section.transform(X)\n", - "pca_section.components #return matrix (n,4)\n", - "print(pca_section.explained_variance)#return list len = 4" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "15735b25", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEWCAYAAABrDZDcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAasElEQVR4nO3de7zVdZ3v8dc78K6oCd5A3E6DzlCpY1txpjFxNI+oI3bs0dEylWORZ9T0WFPUmVOnrI5OlmleCBMZo0RTK1QUx8lL3gpURC7hIKIgmJDKqIwp+Jk/ft8Vq8Xae699+e219/6+n4/Heuz1/V0/vyWu9/rdvj9FBGZmlq93NbsAMzNrLgeBmVnmHARmZplzEJiZZc5BYGaWOQeBmVnmHATW4yTdJ+lTza6jPZKmSfpGg9PeKen0EmpokRSSBvf0suus6zBJS8pej/VPDgLrEknLJf2npNcl/U7SdZK27+Qyeu2LsDsiYlxE/Euz6+iOiPhVROzX7Dqsb3IQWHf8fURsDxwEHAz8U5PrsTr6etBa8zkIrNsi4gXgTuB9teMkvUvSP0l6TtJLkq6XtGMa/UD6+2ras/jrNuafJOkZSb+XdJOkd6dxV0u6uWraiyX9mwpjJa2U9GVJa9MezCfq1S9pZ0m3S1oj6ZX0fkTV+D8e6pJ0hqQHJV2Spn1W0riqaXeUdK2k1ZJekPQNSYPSuEFpvrWSlgHHtfWZpm2+uWbYZZIuT+8nSFos6TVJyyR9pmq6yrZ/UdKLwHWVYTXLfybNv0jSR6rGdbSN7057gKvS+J9XjTte0jxJr0p6WNL+bW2j9R0OAus2SXsBxwJP1Bl9RnodAfwZsD1wRRr3ofR3p4jYPiIeqTP/Z4ETgcOBPYFXgCvTuM8B+6cvrsOAM4HTY1O/KbsDQ4HhwOnAFEn1Do+8C7gO2BsYCfxnVY31jAGWpGX/M3CtJKVx/wJsAP4c+CvgaKByvuTTwPFpeCvw0XbWcQNwrKQhUIQI8DHgJ2n8S2lZQ4AJwKWSDqqaf3fg3WmbJtZZ/jPAYcCOwNeA6ZL2aHAbfwRsC7wX2BW4NNV4EDAV+AywC/ADYKakrdrZTusLIsIvvzr9ApYDrwOvAs8BVwHbpHH3AZ9K7/8N+Ieq+fYD3gYGAy1AAIPbWc9i4Miq9h6V+VP7EODlVMMpVdONpfhC3q5q2E3A/03vpwHfaGOdBwKvVLWrt+cMYGnVuG3TNuwO7Ab8ofI5pPGnAPem978Ezqoad3R72w88CJyW3n8YeKadz+nnwHlV2/4WsHXN57GynfnnAeMb2MY9gHeAness42rgwpphS4DDm/3v1a/2Xz52aN1xYkTc08E0e1J8SVc8RxECuzW4jr2Bn0l6p2rYxjT/CxHxm3SYZVeKL/pqr0TEGzXr3rN2BZK2pfhVewywcxq8g6RBEbGxTk0vVt5ExPr0Q3l7il/gWwCrN/145l3AivR+z6r3lXra8xOKILke+Dib9gZIh2q+Cuyb1rEt8FTVvGsi4s22FizpNOACijCu1D+0wW18OSJeqbPYvYHTJZ1bNWxL6nzm1rf40JCVbRXFF0TFSIpf6r+j+JXZkRXAuIjYqeq1dRTnJZB0NrBVWs8XaubdWdJ2NeteVWcdn6PYUxkTEUPYdMhKdabtqNY/AEOrah0SEe9N41cDe9XU056fAmPT+YqPkIIgHWq5BbgE2C0idgJm1dTb5mcraW/gGuAcYJc0/wIa294VwLsl7dTGuG/W/LfaNiJuaGC51kQOAivbDcD/lrSPistLvwXcGBEbgDUUhxn+rJ35JwPfTF9eSBomaXx6vy/wDeBU4JPAFyQdWDP/1yRtmc4hHE/x5VprB4rzAq+mE9Ff7cqGRsRq4G7gO5KGpBPd75F0eJrkJuCzkkZI2hmY1MHy1lAclroOeDYiFqdRW1KE3xpgQ9o7OLoTpW5HERRroDjxTJ0T/e1s453AVekk+xaSKsF5DXCWpDEqbCfpOEk7dKI2awIHgZVtKsXJxQeAZ4E3gXOhOOQAfBN4KF1lcmid+S8DZgJ3S3oNeBQYo+KSyOnAxRHxZET8O/Bl4EdVJydfpDi5vAr4McXx+d/WWcf3gG2AtWn5d3Vje0+j+KJelNZ9M8VxdSi+KGcDTwKPA7c2sLyfAEdRdVgoIl6jOIl+U1rHxyk+o4ZExCLgO8AjFHtm7wceanR+itB9G/gtxUnr89Ny51KcEL8i1bWU4nyD9XGK8INpbOCRNBaYHhEjOpjULHveIzAzy5yDwMwscz40ZGaWudL2CCRNVdGlwII2xkvS5ZKWSppfc1ekmZn1kjJvKJtGcfXA9W2MHweMSq8xFHcljulooUOHDo2WlpaeqdDMLBOPPfbY2ogYVm9caUEQEQ9IamlnkvHA9VEcm3pU0k6S9kjXKbeppaWFuXPn9mSpZmYDnqQ272Rv5sni4fzp7fYr07DNSJooaa6kuWvWrOmV4szMctHMIKh3O3vdM9cRMSUiWiOiddiwuns2ZmbWRc0MgpX8ab8rI6jfD4yZmZWomUEwEzgtXT10KLCuo/MDZmbW80o7WSzpBoo+0IemJyN9laKLXiJiMkVvicdS9EeynuLhGmZm1svKvGrolA7GB3B2Wes3M7PGuIsJM7PMOQjMzDLX/4JgyRKYNq14//bbMHYsTJ9etNevL9o33li0160r2rembt/Xri3at91WtF98sWjflbqfX7GiaN+Tnr64bFnRvv/+TeseOxYefrhoL1hQtOfMKdrz5hXtefOK9pw5RXtB6mXj4YeL9pIlRfv++4v2smVF+557ivaKdHvFXXcV7RfTUwNvu61or11btG+9tWivW1e0b7yxaK9fX7SnTy/ab79dtKdNK9oV11wDRx21qX3VVTBu3Kb2ZZfBCSdsal9yCZx00qb2RRfBySdval94IZx66qb2V74CE6pO/XzpSzCx6jnqn/88nF11dPD884tXxdlnF9NUTJxYLKNiwoRiHRWnnlrUUHHyyUWNFSedVGxDxQknFNtYMW5c8RlUHHVU8RlVjB3rf3v+t1foj//22uFnFptZ9qY++CwAX590R/H3ked4c/CWfCu1v/Wb53l1m1f459T+9tyVrHr6TS59q2hf+sQLLHsOvv9G0f7+k6tY9OLWXP1q0b56wYs8/vJirllbtK9Z/DseXr+Q61YX7WlL1nDPxgVMf75oT1+6lttvmc+MZ4r2jGW/5+afPsklZ5Sz/f2u99HW1tZwFxNm1pNa0hd8X7f8ouO6PK+kxyKitd64/ndoyMzMepSDwMwscw4CM7PMOQjMzDLnIDAzy5yDwMwscw4CM7PM+YYyM+uUHK65z433CMzMMucgMDPLnIPAzCxzDgIzs8w5CMzMMucgMDPLnIPAzCxzDgIzs8w5CMzMMucgMDPLnIPAzCxzDgIzs8w5CMzMMucgMDPLnIPAzCxzDgIzs8w5CMzMMucgMDPLnIPAzCxzfmaxWcn8jF/r67xHYGaWuVKDQNIxkpZIWippUp3xO0q6TdKTkhZKmlBmPWZmtrnSgkDSIOBKYBwwGjhF0uiayc4GFkXEAcBY4DuStiyrJjMz21yZewSHAEsjYllEvAXMAMbXTBPADpIEbA+8DGwosSYzM6tRZhAMB1ZUtVemYdWuAP4SWAU8BZwXEe/ULkjSRElzJc1ds2ZNWfWamWWpzCBQnWFR0/5vwDxgT+BA4ApJQzabKWJKRLRGROuwYcN6uk4zs6yVGQQrgb2q2iMofvlXmwDcGoWlwLPAX5RYk5mZ1SgzCOYAoyTtk04AnwzMrJnmeeBIAEm7AfsBy0qsyczMapR2Q1lEbJB0DjAbGARMjYiFks5K4ycDFwLTJD1FcSjpixGxtqyazMxsc6XeWRwRs4BZNcMmV71fBRxdZg1mZtY+31lsZpY5B4GZWeYcBGZmmXMQmJllzkFgZpY5B4GZWeYcBGZmmXMQmJllzkFgZpY5B4GZWeYcBGZmmXMQmJllrtRO58w6q2XSHc0uoSHLLzqu2SWY9RjvEZiZZc5BYGaWOQeBmVnmHARmZplzEJiZZc5BYGaWOQeBmVnmHARmZplzEJiZZc5BYGaWOQeBmVnmHARmZplzEJiZZc5BYGaWOQeBmVnmHARmZplzEJiZZc5BYGaWOQeBmVnmHARmZplzEJiZZa7UIJB0jKQlkpZKmtTGNGMlzZO0UNL9ZdZjZmabG1zWgiUNAq4EPgysBOZImhkRi6qm2Qm4CjgmIp6XtGtZ9ZiZWX1tBoGk/97ejBFxawfLPgRYGhHL0vJmAOOBRVXTfBy4NSKeT8t8qZGizcys57S3R/D36e+uwN8Av0ztI4D7gI6CYDiwoqq9EhhTM82+wBaS7gN2AC6LiOtrFyRpIjARYOTIkR2s1szMOqPNIIiICQCSbgdGR8Tq1N6D4pBPR1RvsXXW/wHgSGAb4BFJj0bE0zW1TAGmALS2ttYuw8zMuqGRcwQtlRBIfkfxS74jK4G9qtojgFV1plkbEW8Ab0h6ADgAeBprSMukO5pdQkOWX3Rcs0swszY0ctXQfZJmSzpD0unAHcC9Dcw3BxglaR9JWwInAzNrpvkFcJikwZK2pTh0tLgT9ZuZWTd1uEcQEeekE8eHpUFTIuJnDcy3QdI5wGxgEDA1IhZKOiuNnxwRiyXdBcwH3gF+GBELuroxZmbWeQ1dPpquEOro5HC9+WYBs2qGTa5pfxv4dmeXbWZmPaO9y0dfY/OTu1CcBI6IGFJaVWZm1mvau2poh94sxMzMmqOhQ0OSDmDTOYIHImJ+eSWZmVlv6vCqIUnnAT+muLFsV+DHks4tuzAzM+sdjewRnAmMSdf6I+li4BHg+2UWZmZmvaOR+wgEbKxqb6T+XcNmZtYPNbJHcB3wa0mVewdOBK4trSIzM+tVjdxQ9t30nIAPUuwJTIiIJ0qvzMzMekWjzyOYB6yuTC9pZKXraDMz6986DIJ0hdBXKTqbq5wfCGD/ckszM7Pe0MgewXnAfhHx+7KLMTOz3tfIVUMrgHVlF2JmZs3RXl9DF6S3yyi6or4D+ENlfER8t+TazMysF7R3aKjS19Dz6bVlepmZ2QDSXqdzX6sdJuldwPYR8R+lVmVmZr2mkb6GfiJpiKTtgEXAEkn/WH5pZmbWGxo5WTw67QGcSPGQmZHAJ8ssyszMek8jQbCFpC0oguAXEfE29R9YY2Zm/VAjQfADYDmwHfCApL0BnyMwMxsgGulr6HLg8qpBz0k6orySzMysNzVysng3SddKujO1RwOnl16ZmZn1ikYODU0DZgN7pvbTwPkl1WNmZr2skSAYGhE3Ae8ARMQG/vRBNWZm1o81EgRvSNqFdKWQpENx30NmZgNGI72PXgDMBN4j6SFgGPDRUqsyM7Ne024QSBoEHJ5e+1E8i2BJupfAzMwGgHYPDUXERmB8RGyIiIURscAhYGY2sDRyaOghSVcANwJvVAZGxOOlVWVmZr2mkSD4m/T361XDAvi7ni/HzMx6WyN3FvsuYjOzAayRh9dvBZwEtFRPHxFfb2seMzPrPxo5NPQLivsGHqPqUZX9UcukO5pdQkOWX3Rcs0sws4w0EgQjIuKY0isxM7OmaOTO4oclvb/0SszMrCnaDAJJCyTNB/4WeFzSEknzJT2VhndI0jFpvqWSJrUz3cGSNkryHctmZr2svUNDw4EDu7rgdFfylcCHgZXAHEkzI2JRnekupujh1MzMell7QfBsRDzXjWUfAiyNiGUAkmYA44FFNdOdC9wCHNyNdZmZWRe1FwS7SrqgrZER8d0Olj0cWFHVXgmMqZ5A0nDgIxQ3pzkIzMyaoL0gGARsT9HRXFfUm6/2offfA74YERultlcjaSIwEWDkyJFdLMfMzOppLwhWd/OmsZXAXlXtEcCqmmlagRkpBIYCx0raEBE/r54oIqYAUwBaW1trw8TMzLqhvSDo6p5AxRxglKR9gBeAk4GPV08QEfv8cWXSNOD22hAwM7NytRcER3ZnwRGxQdI5FFcDDQKmRsRCSWel8ZO7s3wzM+sZbQZBRLzc3YVHxCxgVs2wugEQEWd0d31mZtZ5jdxZbGZmA5iDwMwscw4CM7PMOQjMzDLnIDAzy5yDwMwscw4CM7PMOQjMzDLnIDAzy5yDwMwscw4CM7PMOQjMzDLnIDAzy5yDwMwscw4CM7PMOQjMzDLnIDAzy5yDwMwscw4CM7PMOQjMzDLnIDAzy5yDwMwscw4CM7PMOQjMzDLnIDAzy5yDwMwscw4CM7PMOQjMzDLnIDAzy5yDwMwscw4CM7PMOQjMzDLnIDAzy5yDwMwscw4CM7PMlRoEko6RtETSUkmT6oz/hKT56fWwpAPKrMfMzDZXWhBIGgRcCYwDRgOnSBpdM9mzwOERsT9wITClrHrMzKy+MvcIDgGWRsSyiHgLmAGMr54gIh6OiFdS81FgRIn1mJlZHWUGwXBgRVV7ZRrWljOBO+uNkDRR0lxJc9esWdODJZqZWZlBoDrDou6E0hEUQfDFeuMjYkpEtEZE67Bhw3qwRDMzG1zislcCe1W1RwCraieStD/wQ2BcRPy+xHrMzKyOMvcI5gCjJO0jaUvgZGBm9QSSRgK3Ap+MiKdLrMXMzNpQ2h5BRGyQdA4wGxgETI2IhZLOSuMnA18BdgGukgSwISJay6rJzMw2V+ahISJiFjCrZtjkqvefAj5VZg1mZtY+31lsZpY5B4GZWeYcBGZmmXMQmJllzkFgZpY5B4GZWeYcBGZmmXMQmJllzkFgZpY5B4GZWeYcBGZmmXMQmJllzkFgZpY5B4GZWeYcBGZmmXMQmJllzkFgZpY5B4GZWeYcBGZmmXMQmJllzkFgZpY5B4GZWeYcBGZmmXMQmJllzkFgZpY5B4GZWeYcBGZmmXMQmJllzkFgZpY5B4GZWeYcBGZmmXMQmJllzkFgZpY5B4GZWeZKDQJJx0haImmppEl1xkvS5Wn8fEkHlVmPmZltrrQgkDQIuBIYB4wGTpE0umayccCo9JoIXF1WPWZmVl+ZewSHAEsjYllEvAXMAMbXTDMeuD4KjwI7SdqjxJrMzKzG4BKXPRxYUdVeCYxpYJrhwOrqiSRNpNhjAHhd0pKeLbVbhgJre3KBurgnl9YlA22bBtr2wMDbpoG2PdD3tmnvtkaUGQSqMyy6MA0RMQWY0hNF9TRJcyOitdl19KSBtk0DbXtg4G3TQNse6F/bVOahoZXAXlXtEcCqLkxjZmYlKjMI5gCjJO0jaUvgZGBmzTQzgdPS1UOHAusiYnXtgszMrDylHRqKiA2SzgFmA4OAqRGxUNJZafxkYBZwLLAUWA9MKKueEvXJQ1bdNNC2aaBtDwy8bRpo2wP9aJsUsdkheTMzy4jvLDYzy5yDwMwscw6CbuioC43+RtJUSS9JWtDsWnqCpL0k3StpsaSFks5rdk3dIWlrSb+R9GTanq81u6aeImmQpCck3d7sWrpL0nJJT0maJ2lus+tphM8RdFHqQuNp4MMUl8HOAU6JiEVNLawbJH0IeJ3ibu/3Nbue7kp3qe8REY9L2gF4DDixv/43kiRgu4h4XdIWwIPAeemu/H5N0gVAKzAkIo5vdj3dIWk50BoRPXozWZm8R9B1jXSh0a9ExAPAy82uo6dExOqIeDy9fw1YTHHner+UumJ5PTW3SK9+/0tO0gjgOOCHza4lVw6CrmurewzrgyS1AH8F/LrJpXRLOoQyD3gJ+NeI6Nfbk3wP+ALwTpPr6CkB3C3psdQ9Tp/nIOi6hrrHsOaTtD1wC3B+RPxHs+vpjojYGBEHUtyFf4ikfn0IT9LxwEsR8Viza+lBH4yIgyh6Vz47HXLt0xwEXefuMfqBdCz9FuDHEXFrs+vpKRHxKnAfcExzK+m2DwInpOPqM4C/kzS9uSV1T0SsSn9fAn5GcRi5T3MQdF0jXWhYE6WTq9cCiyPiu82up7skDZO0U3q/DXAU8NumFtVNEfGliBgRES0U/w/9MiJObXJZXSZpu3RhApK2A44G+vxVeA6CLoqIDUClC43FwE0RsbC5VXWPpBuAR4D9JK2UdGaza+qmDwKfpPiVOS+9jm12Ud2wB3CvpPkUP0T+NSL6/eWWA8xuwIOSngR+A9wREXc1uaYO+fJRM7PMeY/AzCxzDgIzs8w5CMzMMucgMDPLnIPAzCxzDgLr8yTtLmmGpGckLZI0S9K+Ja/zPkntPnhc0vmStq1qz6pc59/NdS+XNLQT07cMlB5jrTkcBNanpZvCfgbcFxHviYjRwJcprtdutvOBPwZBRByb7vg161ccBNbXHQG8nZ5xDUBEzIuIX0kaW91/vaQrJJ2R3i+X9C1Jj0iaK+kgSbPTXsVZaZo2568m6eq0jD8+A0DSZ4E9KW7wurdqnUMlXSzpH6rm/3+SPpfe/6OkOZLmd/Q8gfRLf7Gka9K67053FCPpA+m5BI8AZ1fNM0jSt6vW8Zk0/AJJU9P790taUL03Y3lzEFhf9z6K5wh0xYqI+GvgV8A04KPAocDXO7mc/xMRrcD+wOGS9o+Iyyn6ljoiIo6omX4G8D+q2h8DfirpaGAURd8zBwIfaKBDslHAlRHxXuBV4KQ0/Drgs2n7qp0JrIuIg4GDgU9L2oeih88/l/SRNO9nImJ9Q1tvA56DwAaySt9PTwG/jojXImIN8GYnj+V/TNLjwBPAe4HR7U0cEU8Au0raU9IBwCsR8TxFvzNHp+U8DvwFxRd9e56NiHnp/WNAi6QdgZ0i4v40/EdV0x8NnJa6qv41sAswKiLeAc5I094fEQ91uNWWjcHNLsCsAwspfsnXs4E//TGzdc34P6S/71S9r7QHNzA/6df054GDI+IVSdPqTVfHzanu3Sn2EKDouvz/R8QPGpi/dhsANgLbpOW01TeMgHMjYnadcaMonkC3ZyfWbxnwHoH1db8EtpL06coASQdLOhx4Dhgtaav0K/nITi67kfmHAG8A6yTtRtHHfMVrwA5tLHsGRW+aH6UIBSg6KPyf6fkISBouaddO1lzpgnqdpL9Ngz5RNXo28L9S99tI2jf1iLkjcBnwIWAXSW2Fq2XIewTWp0VEpOPa35M0CXgTWE7xkJkVkm4C5gP/TnHIpTPL7nD+iHhS0hMUeybLgOpDKlOAOyWtrj1PEBELU3fEL0TE6jTsbkl/CTxSXAzF68CpFE8b66wJwFRJ6ym+/Ct+CLQAj6crrtYAJwKXAldFxNOpV9l7JT2Q+sy3zLn3UTOzzPnQkJlZ5hwEZmaZcxCYmWXOQWBmljkHgZlZ5hwEZmaZcxCYmWXuvwBI6pGWZhoWWwAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "pca_section.plot_explained_variance()" - ] - }, - { - "cell_type": "markdown", - "id": "070b6a1b", - "metadata": {}, - "source": [ - "## PCA using Sklearn" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "bcf34f51", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.43153415 0.16003835 0.12774915 0.10458295 0.09506252 0.04183003]\n" - ] - } - ], - "source": [ - "from sklearn.decomposition import PCA\n", - "pca = PCA(n_components=0.95)\n", - "pca.fit(X)\n", - "PCA(n_components=0.95)\n", - "print(pca.explained_variance_ratio_)\n", - "cumulative_sum = pca.explained_variance_.cumsum()\n", - "index_ratio = 6" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "51c49b60", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.bar( np.arange(index_ratio) , cumulative_sum[0:index_ratio])\n", - "plt.axhline(cumulative_sum[index_ratio-1], color='red', ls='dotted')\n", - "plt.xlabel(\"Cumlative index\")\n", - "plt.ylabel(\"Therthold\")\n", - "plt.title(\"plot_explained_variance\")\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -}