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 b31514a..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": 1,
- "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": 2,
- "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",
- "
- " #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(\"Explained variance Plot\")\n",
- " plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "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": 4,
- "id": "15735b25",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\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": 5,
- "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": 6,
- "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(\"Threshold\")\n",
- "plt.title(\"Explained variance Plot\")\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
-}