{ "cells": [ { "cell_type": "code", "execution_count": 33, "id": "ad9dfc56", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)
05.13.51.40.2
14.93.01.40.2
24.73.21.30.2
34.63.11.50.2
45.03.61.40.2
...............
1456.73.05.22.3
1466.32.55.01.9
1476.53.05.22.0
1486.23.45.42.3
1495.93.05.11.8
\n", "

150 rows × 4 columns

\n", "
" ], "text/plain": [ " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n", "0 5.1 3.5 1.4 0.2\n", "1 4.9 3.0 1.4 0.2\n", "2 4.7 3.2 1.3 0.2\n", "3 4.6 3.1 1.5 0.2\n", "4 5.0 3.6 1.4 0.2\n", ".. ... ... ... ...\n", "145 6.7 3.0 5.2 2.3\n", "146 6.3 2.5 5.0 1.9\n", "147 6.5 3.0 5.2 2.0\n", "148 6.2 3.4 5.4 2.3\n", "149 5.9 3.0 5.1 1.8\n", "\n", "[150 rows x 4 columns]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "from sklearn.datasets import load_iris\n", "import pandas as pd\n", "\n", "dataset = load_iris()\n", "data = dataset[\"data\"]\n", "target = dataset[\"target\"]\n", "df = pd.DataFrame(data, columns=dataset.feature_names)\n", "df" ] }, { "cell_type": "code", "execution_count": 39, "id": "3d6c8091", "metadata": {}, "outputs": [], "source": [ "from sklearn.decomposition import PCA\n", "from sklearn.preprocessing import StandardScaler\n", "\n", "scaler = StandardScaler()\n", "data_scaled = scaler.fit_transform(data)\n", "pca = PCA(n_components=1)\n", "data_pca = pca.fit_transform(data_scaled)" ] }, { "cell_type": "code", "execution_count": 46, "id": "2b5ce1fb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'PCA')" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGxCAYAAACeKZf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAACS1UlEQVR4nOzdd3gUVdvA4d/sbnpPIKEFQu8dhNCRJqKf2AsWUFReARVUFDu22MUKohR5UeRVQEEUAalC6L13EiChBdKzye6c749NNlnSQ5JNwnNf115kZs7MPhsyJ0/OnKIppRRCCCGEEFWEwdkBCCGEEEKUJkluhBBCCFGlSHIjhBBCiCpFkhshhBBCVCmS3AghhBCiSpHkRgghhBBViiQ3QgghhKhSJLkRQgghRJUiyY0QQgghqhRJboTdpk2buP3226lbty5ubm6EhIQQHh7Oc8895+zQ7IYPH05YWFiJz+/Tpw99+vQp0bnvvfcev/32W4nfW4iqbtasWWiaZn+ZTCbq1KnDiBEjOHPmTLGv99NPPzF58uRriula7nmAsLAwhg8fXuzzUlJSePPNN1m9enWJ31uUnCQ3AoAlS5bQrVs3EhIS+PDDD1m2bBmff/453bt3Z968ec4Or0KQ5EaIopk5cyaRkZEsX76cxx9/nLlz59KzZ0+Sk5OLdZ3SSG6cJSUlhUmTJkly4yQmZwcgKoYPP/yQ+vXr8/fff2MyZf9Y3HfffXz44YdOjEwIUdm0atWKTp06AdC3b1+sVitvv/02v/32G8OGDXNydOJ6IC03AoBLly5RrVo1h8Qmi8GQ+8dk3rx5hIeH4+Xlhbe3N4MGDWLHjh0OZYYPH463tzf79u2jX79+eHl5Ub16dcaMGUNKSopD2a+//ppevXoRHByMl5cXrVu35sMPPyQjI6NEn0cpxYcffki9evVwd3enQ4cO/PXXX7nKpaWl8dxzz9GuXTv8/PwIDAwkPDyc33//3aGcpmkkJyfzww8/2Jvcs5q6L1y4wFNPPUWLFi3w9vYmODiYG2+8kXXr1pUodiGqmq5duwJw6tQpwHZ/fvPNN7Rr1w4PDw8CAgK46667OH78uP2cPn36sGTJEk6dOuXwqCvLpEmT6NKlC4GBgfj6+tKhQwemT59OSdeCzsjIYMKECdSoUQNPT0969OjB5s2bc5Uryv1+8uRJqlevbo8zK/asx1tHjx5lxIgRNG7cGE9PT2rXrs2tt97Knj17ShS7yE1abgQA4eHhfP/99zz99NMMGzaMDh064OLikmfZ9957j1dffZURI0bw6quvkp6ezkcffUTPnj3ZvHkzLVq0sJfNyMjg5ptv5sknn+Sll15iw4YNvPPOO5w6dYrFixfbyx07dowHHniA+vXr4+rqyq5du3j33Xc5ePAgM2bMKPbnmTRpEpMmTeKxxx7jrrvuIjo6mscffxyr1UrTpk3t5cxmM3FxcTz//PPUrl2b9PR0VqxYwR133MHMmTN5+OGHAYiMjOTGG2+kb9++vPbaawD4+voCEBcXB8Abb7xBjRo1SEpKYuHChfTp04d//vnnmp73C1EVHD16FMD+C//JJ59k1qxZPP3003zwwQfExcXx1ltv0a1bN3bt2kVISAjffPMNTzzxBMeOHWPhwoW5rnny5EmefPJJ6tatC8DGjRsZO3YsZ86c4fXXXy92jI8//jizZ8/m+eefZ8CAAezdu5c77riDxMREh3JFud9r1qzJ0qVLuemmm3jssccYOXKkw+c/e/YsQUFBvP/++1SvXp24uDh++OEHunTpwo4dOxzqKFFCSgil1MWLF1WPHj0UoADl4uKiunXrpiIiIlRiYqK9XFRUlDKZTGrs2LEO5ycmJqoaNWqoe+65x77vkUceUYD6/PPPHcq+++67ClD//vtvnrFYrVaVkZGhZs+erYxGo4qLi3O4Zr169Qr8LJcvX1bu7u7q9ttvd9i/fv16BajevXvne67FYlEZGRnqscceU+3bt3c45uXlpR555JEC3zvnNfr165crBiGqspkzZypAbdy4UWVkZKjExET1xx9/qOrVqysfHx8VGxurIiMjFaA++eQTh3Ojo6OVh4eHmjBhgn3fkCFDCr3flcquM9566y0VFBSkdF23H+vdu3eB97xSSh04cEABaty4cQ77f/zxRwUUeN/nd79fuHBBAeqNN94oNH6LxaLS09NV48aNc8UgSkYeSwkAgoKCWLduHVu2bOH999/ntttu4/Dhw0ycOJHWrVtz8eJFAP7++28sFgsPP/wwFovF/nJ3d6d37955dp67+hn7Aw88AMCqVavs+3bs2MH//d//ERQUhNFoxMXFhYcffhir1crhw4eL9VkiIyNJS0vL9b7dunWjXr16ucr/8ssvdO/eHW9vb0wmEy4uLkyfPp0DBw4U+T2nTp1Khw4dcHd3t1/jn3/+KdY1hKgqunbtiouLCz4+Ptxyyy3UqFGDv/76i5CQEP744w80TePBBx90qENq1KhB27Zti9wBd+XKlfTv3x8/Pz97nfH6669z6dIlzp8/X6x4s+qiq+uMe+65J89H9dd6v1ssFt577z1atGiBq6srJpMJV1dXjhw5InVGKZHkRjjo1KkTL774Ir/88gtnz55l3LhxnDx50t6p+Ny5cwB07twZFxcXh9e8efPsSVAWk8lEUFCQw74aNWoAtn4+AFFRUfTs2ZMzZ87w+eef25Osr7/+GoDU1NRifYas62a9T17vnWXBggXcc8891K5dmzlz5hAZGcmWLVt49NFHSUtLK9L7ffrpp/znP/+hS5cuzJ8/n40bN7JlyxZuuummYscuRFUwe/ZstmzZwo4dOzh79iy7d++me/fugK0OUUoREhKSqw7ZuHFjrjokL5s3b2bgwIEAfPfdd6xfv54tW7bwyiuvAKVXZ+RVf5XG/T5+/Hhee+01hg4dyuLFi9m0aRNbtmyhbdu2UmeUEulzI/Ll4uLCG2+8wWeffcbevXsBqFatGgC//vprnq0gV7NYLFy6dMmhgoiNjQWw7/vtt99ITk5mwYIFDtfcuXNnieLOum7W++QUGxvrME/OnDlzqF+/PvPmzXPorGg2m4v8fnPmzKFPnz5MmTLFYf/Vz+qFuF40b97cPlrqatWqVUPTNNatW4ebm1uu43ntu9rPP/+Mi4sLf/zxB+7u7vb9JZ2qIWedUbt2bfv+rPorp9K43+fMmcPDDz/Me++957D/4sWL+Pv7FzN6kRdpuREAxMTE5Lk/q4m0Vq1aAAwaNAiTycSxY8fo1KlTnq+r/fjjjw7bP/30E4C9o21WUpGzUlNK8d1335Xos3Tt2hV3d/dc77thwwb7aI0smqbh6urqkNjExsbmGi2VFV9ef1VpmparQt69ezeRkZElil+IquyWW25BKcWZM2fyrD9at25tL1vQPWcymTAajfZ9qamp/Pe//y1RTFl10dV1xv/+9z8sFkuu9y7K/Z5Vpqh1xpIlS0o00aHIm7TcCMCWtNSpU4dbb72VZs2aoes6O3fu5JNPPsHb25tnnnkGsM3W+dZbb/HKK69w/PhxbrrpJgICAjh37hybN2/Gy8uLSZMm2a/r6urKJ598QlJSEp07d7aPlho8eDA9evQAYMCAAbi6unL//fczYcIE0tLSmDJlCpcvXy7RZwkICOD555/nnXfeYeTIkdx9991ER0fz5ptv5mp2vuWWW1iwYAFPPfWUfVTV22+/Tc2aNTly5IhD2datW7N69WoWL15MzZo18fHxoWnTptxyyy28/fbbvPHGG/Tu3ZtDhw7x1ltvUb9+/VwVoxDXu+7du/PEE08wYsQItm7dSq9evfDy8iImJoZ///2X1q1b85///Aew3XMLFixgypQpdOzYEYPBQKdOnRgyZAiffvopDzzwAE888QSXLl3i448/LlKrT16aN2/Ogw8+yOTJk3FxcaF///7s3buXjz/+2D4qMktR73cfHx/q1avH77//Tr9+/QgMDKRatWqEhYVxyy23MGvWLJo1a0abNm3Ytm0bH330EXXq1Cn5N1Y4cnKHZlFBzJs3Tz3wwAOqcePGytvbW7m4uKi6deuqhx56SO3fvz9X+d9++0317dtX+fr6Kjc3N1WvXj111113qRUrVtjLPPLII8rLy0vt3r1b9enTR3l4eKjAwED1n//8RyUlJTlcb/Hixapt27bK3d1d1a5dW73wwgvqr7/+UoBatWqVwzWLMnpC13UVERGhQkNDlaurq2rTpo1avHhxniMn3n//fRUWFqbc3NxU8+bN1XfffafeeOMNdfXtsXPnTtW9e3fl6enpMOrKbDar559/XtWuXVu5u7urDh06qN9++63IsQpRVWSNltqyZUuhZWfMmKG6dOmivLy8lIeHh2rYsKF6+OGH1datW+1l4uLi1F133aX8/f2VpmkO9+SMGTNU06ZNlZubm2rQoIGKiIhQ06dPV4A6ceKEvVxRRkspZbuPn3vuORUcHKzc3d1V165dVWRkpKpXr57DaKni3O8rVqxQ7du3V25ubg6jri5fvqwee+wxFRwcrDw9PVWPHj3UunXrihyrKJymVAlnPBKiEMOHD+fXX38lKSnJ2aEIIYS4jkifGyGEEEJUKZLcCCGEEKJKkcdSQgghhKhSpOVGCCGEEFVKhUluIiIi0DSNZ599Nt8yq1evdlgdNut18ODB8gtUCCGEEBVahZjnZsuWLUybNo02bdoUqfyhQ4cc5h7IWmlVCCGEEMLpyU1SUhLDhg3ju+++45133inSOcHBwSWeolrXdc6ePYuPj4/DrLRCiPKjlCIxMZFatWphMFSY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VrGvV61aNYxGY55TQlzdOpOluFNI5KUy1h3Xw89Xccn3JG+V4ftSnHrjuktuDAZDoXPpVDa+vr4V9oexNFT1zwfX52csaYuNq6srHTt2ZPny5dx+++32/cuXL+e2227L85zw8HAWL17ssK+4U0hU5rrjevj5Ki75nuSton9filpvVJgZioUQoqjGjx/P999/z4wZMzhw4ADjxo0jKirKPmpSppAQ4vp23bXcCCEqv3vvvZdLly7x1ltvERMTQ6tWrfjzzz+pV8+2jEFMTIzDnDf169fnzz//ZNy4cXz99dfUqlWLL774gjvvvNNZH0EIUYYkuanE3NzceOONN6rc8hJZqvrnA/mM1+Kpp57iqaeeyvOYTCFhcz38fBWXfE/yVtW+L06dxE8IIYQQorRJnxshhBBCVCmS3AghhBCiSpHkRgghhBBViiQ3QgghhKhSJLmpZN588000TXN41ahRw9lhlbozZ87w4IMPEhQUhKenJ+3atWPbtm3ODqvUhIWF5fp/1DSN0aNHOzu0UmOxWHj11VepX78+Hh4eNGjQgLfeegtd150dWpUWERFB586d8fHxITg4mKFDh3Lo0CFnh1XhREREoGkazz77rLNDcaqqWtfKUPBKqGXLlqxYscK+bTQanRhN6bt8+TLdu3enb9++/PXXXwQHB3Ps2DH8/f2dHVqp2bJlC1ar1b69d+9eBgwYwN133+3EqErXBx98wNSpU/nhhx9o2bIlW7duZcSIEfj5+fHMM884O7wqa82aNYwePZrOnTtjsVh45ZVXGDhwIPv378fLy8vZ4VUIW7ZsYdq0abRp08bZoThVVa5rJbmphEwmU5VsrcnywQcfEBoaysyZM+37wsLCnBdQGahevbrD9vvvv0/Dhg3p3bu3kyIqfZGRkdx2220MGTIEsP0fzp07l61btzo5sqpt6dKlDtszZ84kODiYbdu20atXLydFVXEkJSUxbNgwvvvuO9555x1nh+NUVbmulcdSldCRI0eoVasW9evX57777uP48ePODqlEZs2a5fBIxmQyUadOHaZOnUqzZs24++67CQ4Opn379rz33nuMGTOGJk2a4OHhgaenJy1btuTVV1/lzJkzeV7/jjvuQNM0xowZU86frHjS09OZM2cOjz76aKVZkLEoevTowT///MPhw4cB2LVrF//++y8333yzkyO7vsTHxwMQGBjo5EgqhtGjRzNkyBD69+/v7FCcbtGiRXTq1Mmhrv3uu++cHVbpUKJS+fPPP9Wvv/6qdu/erZYvX6569+6tQkJC1MWLF50dWrHNnDlTAWrmzJkqMjJSrVy5Ur355psKUIB67rnn1Pbt29VTTz2lAFWtWjX10UcfqRUrVqh//vlHTZ48WbVp00a1a9cu17XPnTunXFxcFKD8/f1VamqqEz5h0cybN08ZjUZ15swZZ4dSqnRdVy+99JLSNE2ZTCalaZp67733nB3WdUXXdXXrrbeqHj16ODuUCmHu3LmqVatW9vqgd+/e6plnnnFuUE7k5uam3Nzc1MSJE9X27dvV1KlTlbu7u/rhhx+cHdo1k+SmkktKSlIhISHqk08+cXYoxZaV3GzZssVhv8FgUICaM2eOOn78uPLy8lLVq1dXnTp1ynUNXdfV/Pnzc+3/6KOPFKCGDBmiAPXjjz+W2ee4VgMHDlS33HKLs8ModXPnzlV16tRRc+fOVbt371azZ89WgYGBatasWc4O7brx1FNPqXr16qno6Ghnh+J0UVFRKjg4WO3cudO+73pPblxcXFR4eLjDvrFjx6quXbs6KaLSI4+lKjkvLy9at27NkSNHnB1KqQkKCgLg1KlTfPrppyQnJzN8+HDOnj2bq6ymadxxxx259s+YMYOQkBB++OEHPDw8mDFjRpnHXRKnTp1ixYoVjBw50tmhlLoXXniBl156ifvuu4/WrVvz0EMPMW7cOCIiIpwd2nVh7NixLFq0iFWrVlGnTh1nh+N027Zt4/z583Ts2BGTyYTJZGLNmjV88cUXmEwmhw7+14uaNWvSokULh33Nmzd3WHS2spLkppIzm80cOHCAmjVrOjuUUhMaGgrYOt0uW7aMkJAQMjIy7Cs+F2bDhg0cOHCAhx9+mKCgIO68805WrlzJiRMnyjLsEsnq7JnV6bYqSUlJwWBwrGKMRqMMBS9jSinGjBnDggULWLlyJfXr13d2SBVCv3792LNnDzt37rS/OnXqxLBhw9i5c2eVG3VaFN27d881TcDhw4eLXNdWZJLcVDLPP/88a9as4cSJE2zatIm77rqLhIQEHnnkEWeHVmJWqxWLxUJSUhJLliyxJyEnTpzg1KlT+Pj4MG3atCLPATN9+nQAHn30UQAee+wxlFIOIwIqAl3XmTlzJo888ggmU9UbuHjrrbfy7rvvsmTJEk6ePMnChQv59NNPuf32250dWpU2evRo5syZw08//YSPjw+xsbHExsaSmprq7NCcysfHh1atWjm8vLy8CAoKolWrVs4OzynGjRvHxo0bee+99zh69Cg//fRTseraCs3Zz8VE8dx7772qZs2aysXFRdWqVUvdcccdat++fc4Oq0Sy+txc/WrdurX64IMPVKtWrRSg3N3d1bRp04p0zcTEROXt7a26detm36frumrYsKEKDQ1VVqu1rD5Osf39998KUIcOHXJ2KGUiISFBPfPMM6pu3brK3d1dNWjQQL3yyivKbDY7O7QqLa97isyO+8LR9d7nRimlFi9erFq1aqXc3NxUs2bNilzXVnSaUko5JasS171Zs2YxYsQIZs+eTfPmzTGZTISEhDg8YmvatCnx8fHExsYW6ZrTp09n5MiRTJ482aE168MPPyQiIoKlS5cyaNCgUv8sQgghKg55LCWcrnnz5nTq1Il27drl6js0aNAgzp07x8aNG4t0raxHUs8++ywBAQH2V1Yn1qzjQgghqi5JbkSFNm7cOLy8vHjqqafsk5HlpJRi4cKFABw4cIDIyEjuvPNOVq1alevVr18/fv/9dy5dulTeH0MIIUQ5qnq9GEWVUr9+fX7++Wfuvfde2rVrx5gxY2jfvj0A+/fvZ8aMGSiluP322+2tMhMmTOCGG27Ida3ExET++ecf5syZI2sbCSFEFSZ9boTTZPW52bJlC506dSqw7PHjx/nkk09YtmwZ0dHRGAwG6tevz0033cTYsWOpXbs2derUoVatWuzYsSPPa1itVsLCwggICGD37t1l8ZGEEEJUAJLcCCGEEKJKkT43QgghhKhSJLkRQgghRJUiyY0QQgghqhRJbkSVdvLkSTRNY+fOnc4ORQhRSUi9UflJciPK1PDhwxk6dKizwyjQrFmz8Pf3d3YYQohMUm+Ia3XdzXOj6zpnz57Fx8cHTdOcHU6Vl56eTkZGBgkJCU55/8TERACSkpLyjSE1NRWllNNivB4ppUhMTKRWrVq5Vg4XQohr5qxFrZwlOjo634Xl5CUveZXvKzo62tlVgqiAHnnkEXXbbbfleWzfvn1q8ODBysvLSwUHB6sHH3xQXbhwwX68d+/eauzYseqFF15QAQEBKiQkRL3xxhsO1zhw4IDq3r27cnNzU82bN1fLly9XgFq4cKFSSqkTJ04oQM2fP1/16dNHeXh4qDZt2qgNGzYopZRatWpVrp/lq99DONd113Lj4+MDQHR0NL6+vk6ORojrU0JCAqGhofb7UYiiiImJoXfv3jz++ON8+umnpKam8uKLL3LPPfewcuVKe7kffviB8ePHs2nTJiIjIxk+fDjdu3dnwIAB6LrO0KFDqVu3Lps2bSIxMZHnnnsuz/d75ZVX+Pjjj2ncuDGvvPIK999/P0ePHqVbt25MnjyZ119/nUOHDgHg7e1dLt8DUTTXXXKT9SjK19dXkhshnEweDYvimDJlCh06dOC9996z75sxYwahoaEcPnyYJk2aANCmTRveeOMNABo3bsxXX33FP//8w4ABA1i2bBnHjh1j9erV1KhRA4B3332XAQMG5Hq/559/niFDhgAwadIkWrZsydGjR2nWrBl+fn5omma/hqhY5GG3EEKISmHbtm2sWrUKb29v+6tZs2YAHDt2zF6uTZs2DufVrFmT8+fPA3Do0CFCQ0MdkpK81qK7+jo1a9YEsF9HVGzXXcuNEEKIyknXdW699VY++OCDXMeykg8AFxcXh2OapqHrOgBKqSK3GOa8TtY5WdcRFZskN0IIISqFDh06MH/+fMLCwjCZSvbrq1mzZkRFRXHu3DlCQkIA2LJlS7Gv4+rqitVqLVEMouzJYykhRKmwWHU+X3GEB7/fxOcrjmCxyl+4ouTi4+PZuXOnw+vJJ58kLi6O+++/n82bN3P8+HGWLVvGo48+WuREY8CAATRs2JBHHnmE3bt3s379el555RWgeH3AwsLCSEpK4p9//uHixYukpKSU6HOKsiHJjRCiVHy96hiTVxzm36MXmbziMF+vOlb4SULkY/Xq1bRv397h9frrr7N+/XqsViuDBg2iVatWPPPMM/j5+RV5viSj0chvv/1GUlISnTt3ZuTIkbz66qsAuLu7Fzm+bt26MWrUKO69916qV6/Ohx9+WKLPKcqGppRSzg6iPCUkJODn50d8fLyMlhKiFD34/Sb+PXrRvt2jUTXmjOySZ1m5D0VFsn79enr06MHRo0dp2LChs8MRpUD63AghSkXnsEDWH72IArTMbSEqooULF+Lt7U3jxo05evQozzzzDN27d5fEpgqR5EYIUSpG97X9YthyMo7OYYH2bSEqmsTERCZMmEB0dDTVqlWjf//+fPLJJ84OS5QieSwlhCh3ch8KIcqSdCgWQgghRJUiyY0QQgghqhRJboQQQghRpUhyI4QQQogqRUZLCSEcWKw6X6865jDqyWSUv4OEEJWHJDdCCAdZMw0rYH3mpHzP9G/s3KCEEKIY5M8xIYSDLSfjyJofQmVuCyFEZSItN0Jc565+DNWxboDMNCyEqNQkuRHiOmax6jw0fTORxy8BtsdQT/drxLP9m8hMw0KISkuSGyGuY1+vOmZPbMD2GGrbqSv5LngphBCVgfS5EeI6lld/GnkMJYSo7CS5EeI6dnUiE94gSB5DCSEqPXksJcR1LK+VvGVOGyFEZSfJjRDXMZPRIHPYCCGqHPkTTQghhBBViiQ3QgghhKhS5LGUEFVMWrqFEbO2ciAmgeY1fZk5vBPurnKrCyGuH9JyI0QVM2LWViKPX+JKagaRxy8xYtZWZ4ckhBDlSpIbIaqYAzEJBW4LIURVJ23VQlRyVz+GahrizaaTl+3Hm9f0dWJ0QghR/iS5EaKSylrwcsb6E8SnZgAQefwSXcICCW8Q5NDnRgghrieS3AhRSX296hiTVxxGXbX/0LlEdr4x0CkxCSFERSDJjRCVTFaLzcz1J3IlNiCPoYQQQpIbISqZ/Fps3E0G2tcNkMdQQojrniQ3QlQyW07GOSQ2/h4ujOheX9aFEkKITJWuJoyIiKBz5874+PgQHBzM0KFDOXTokLPDEqLcdA4LRMv8WgNGdK/PM/0bS2IjhBCZKl3LzZo1axg9ejSdO3fGYrHwyiuvMHDgQPbv34+Xl5ezwxOi1FisOp+vOMzsjVGYM6y0C/Vn1ojOea7kLYQQIpumlMqrT2KlceHCBYKDg1mzZg29evUqtHxCQgJ+fn7Ex8fj6ysdL0XFZLHqPPj9JjaeiHPYH94giLlPdHVSVKVH7kMhRFmqdC03V4uPjwcgMDAwz+Nmsxmz2WzfTkiQ2VpFxWax6jw0fXOuxAZktmEhhCiKSv2QXinF+PHj6dGjB61atcqzTEREBH5+fvZXaGhoOUcpRNHYHkMd4cZP1hB5/FKeZWSYtxBCFK5SP5YaPXo0S5Ys4d9//6VOnTp5lsmr5SY0NFSaw0WFciU5jS4RqzBb9HzL1PH3YMX4XlVihW95LCWEKEuVtpYcO3YsixYtYu3atfkmNgBubm64ubmVY2RCFE9auoWO767Equf9d4afhwvDw8MY26+RjIgSQogiqHTJjVKKsWPHsnDhQlavXk39+vWdHZIQJZJzbai8Eht3k4H/9Gkk89cIIUQxVbrkZvTo0fz000/8/vvv+Pj4EBsbC4Cfnx8eHh5Ojk6IostvpuEsT/ZqyDP9G5drTEIIURVUuj43mqbluX/mzJkMHz680PPlWb9wpqzWmi0n44iKSyEqLiXPcv/pVZ/nBjWrsi02ch8KIcpSpWu5qWS5mBAOCmqtybk2VFXoNCyEEM4iNagQ5ejqdaHqBnpSN9DTPtNwVW2pEUKI8iTJjRBlKHsJhVOYM3SCvF3RAIVtXag7O9SRfjVCCFHKJLkRogx9+c9Rvlx1zL595koadQI8CAvyknWhhBCijEhyI0QZyOo4/O3aY7mOJaVZmDOyixOiEkKI64MkN0KUsrR0C/0/W8vpy6l5HpclFIQQomxJ70UhSpHFqheY2NTx92Dm8E7lHJUQQlxfpOVGiFL09apjeSY2dQM9ubNDHRkRJYQQ5UCSGyGugcWq89myQ3y//iTpFh1XU+7EpU6AByuf6y1JjRBClBNJboS4Bl+uPMLXa47bt69e1btOgAcrxvWSxEYIIcqRJDdCFJPFqvP58iPM3nSK+NSMXMc1oHujajIxnxBCOIkkN0IUg8WqM+y7jWw6eTnfMrUDPGSotxBCOJH8SSlEMXz5z9ECExsfdxNLn+5RjhEJIYS4mrTcCFEEaekWhs/cwsYTcXke9/Mw8Wj3BvIYSgghKgBJboQogMWq8+U/R5m69liuzsJZfN1NbJrYT1byFkKICkJqYyHyUdhMw2CblG/F+F6S2AghRAUiNbIQV8layfub1cewqvzLhTcI4r+P3SCPoYQQooKR5EaIHCxWnYembyby+KV8y7iZDDzRsz7P9G8iiY0QQlRAktwIkamwxMbNZGBU7waMvbGxJDVCCFGBSXIjBIX3r/F1N7H5Zek0LIQQlYHU1OK6l5Zu4Yb3/iEhzZLrmMmg0aleALNGdJbERgghKgmprcV1b8SsrXkmNtJhWAghKieptcV170BMQq59dQI8JLERQohKSmpucV1JS7dw/7SNtJu0jPunbSQt3ULzmr4OZXzdTbKStxBCVGJSe4vrRlbfmsjjl7iSmkHk8UsMn7mFmcM7Ed4gCH8PF8IbBEnHYSGEqOSkBhdVnsWq8/WqY8xYfzxX35qd0VdwdzUx94muTopOCCFEaZPkRlRphQ3xdnMxlnNEQgghypo8lhJV2ohZWwtcG+rhLvXKMRohhBDlQVpuRJWUtZr3phO5Zxs2GTS83Ew83KUezwxo7ITohBBClCVJbkSV9PWqY3y+8kiu/XUCPFj9fB8ZCSWEEFWYJDeiysjqOLzlZBxRcSm5jvt5yBBvIYS4HkhyI6qEwjoOAzzavYEM8RZCiOuA1PSiUrNYdb5ceYSpa45jtugOx0IDPNA0DYDb29didN+GzghRCCFEOZPkRlRahbXW3NUxlGf6S4dhIYS43kjnA1EpWax6gYlNnQAPaakRQojrlLTciErFYtX5fMVhpq07kesxVJY6AR7ScVgIIa5jktyISiMpNZ3w91eSaLbmedzNZGBUr4aM7ddIEhshhLiOSXIjKo2bvvg338Qmq7VGRkMJIYSQ3wSiQsuaaXjhzjMF9q+RifmEEEJkkeRGVGhf/nM0z5mGs9Txl/41QgghHFXa3wjffPMN9evXx93dnY4dO7Ju3TpnhyRKicWq89myw/T6cBVfrT6aZxk3k4HRfRqw+oU+8ihKCCGEg0r5W2HevHk8++yzfPPNN3Tv3p1vv/2WwYMHs3//furWrevs8MQ1sFh1Hpq+mcjjuRe8zDKufxOZv0YIIUS+NKWUcnYQxdWlSxc6dOjAlClT7PuaN2/O0KFDiYiIKPDchIQE/Pz8iI+Px9fXt6xDFcVQlMSma/1A5ozsIo+hKjm5D4UQZanStdykp6ezbds2XnrpJYf9AwcOZMOGDbnKm81mzGazfTshIaHMYxTFV9hsw3UDPbmzQx1G920oiY0QQogCVbrk5uLFi1itVkJCQhz2h4SEEBsbm6t8REQEkyZNKq/wRAmNmLU1z8TGz8PE8G5hjL2xsSQ1QgghiqTSJTdZshZEzKKUyrUPYOLEiYwfP96+nZCQQGhoaJnHJwpnsep8veoYW07GsSPqcq7j4Q2C+O9jN0hSI4QQolgqXXJTrVo1jEZjrlaa8+fP52rNAXBzc8PNza28whPF8PWqY0xecZi8On3VCfCQxEYIIUSJVLrfHK6urnTs2JHly5c77F++fDndunVzUlT/3979xkR9H3Ac/9xxCtcNMOdFiUN6J7aJCQ82gSDVGm52hO5JNYtpm41EKnZkyNrypK3dAm2ykFYa6ohS2RZ4sNT0kWkfNEtZRWxrbaWzaWymExjBcBhBtztkyuX+7IGTyrhDinf3u/vd+5WQcPf7Hfl4eLkP3z+/w3KcHb0+r9jk21dolX2FKjes5to1AIBlS7uRG0lqbm5WbW2tysrKVFlZqe7ubo2NjamhocHoaPgOyl0OfTo0pYgki6RntrrZ4g0AuG9pWW6efPJJXbt2Ta+99pomJiZUUlKiDz74QA8++KDR0fAdNHqKJd0ewSl3OeZuAwBwP9LyOjf3g+trAMbjdQggkdJy5Abp4e7dUHdGZlhHAwBINMoNEubu3VCfDk1JEmtqAAAJR7lBXN09WjN2/T9zu6Eiur22BgCARKPcIG4W+2woi27vjgIAINEoN4ibw/3DC4pNkeMBFTkeYDcUACBpKDeIm2jTTj/bXMg6GwBAUrF1BXHz/9NOlRtWM1oDAEg6Rm4QN9EuysfWbwBAslFuEDe2LCtTUAAAw/FnNQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBXKDQAAMBWb0QGwUDAUVueJSzp+zitJ2vXDH6hpx0bZsuiiAADcC+UmBXV+NKRDJ4bmbh86cUlWq0XPPfaQgakAAEgPaTUUMDo6qr1798rtdstut6u4uFgtLS0KBAJGR4uLW4Ggnu4+o87+SwuOnR29bkAiAADST1qN3Fy4cEHhcFhHjx7Vxo0bdf78ee3bt08zMzNqb283Ot6y3QoEVdc7qC9GrykUjn5OucuR3FAAAKQpSyQSiRgd4n4cPHhQXV1dGhkZWdL5fr9f+fn58vl8ysvLS3C6pXm6+4w+G7kW8/gWt0N/rq9gzQ1MIxVfhwDMI61GbqLx+XxyOGKPaszOzmp2dnbutt/vT0ase7ozWvP3Cb+mZ4NRz8m32/TM1g1q9BRTbAAAWKK0LjfDw8Pq7OzUm2++GfOctrY2vfrqq0lMdW83bgZU+ruPNBuMPgdls1pU7nKoZ0+Zclam9a8IAICkS4nhgNbWVlkslkW/BgcH5z3G6/WqpqZGu3fvVn19fcyf/fLLL8vn8819Xb58OdH/nEUFQ2E98nr/gmJjs1q0yr5ClRtW63xrtY49u4ViAwDAMqTEmpupqSlNTU0teo7L5VJOTo6k28XG4/GooqJCvb29slqX3tGMmuu/cTOg6rdOyeubjXq8csNqHXt2S9LyAEZizQ2AREqJoQGn0ymn07mkc8fHx+XxeFRaWqqenp7vVGyMcsV3Q1vaBmIez7ZZ1bOnLImJAAAwr5QoN0vl9XpVVVWloqIitbe3a3Jycu5YQUGBgcli+/fMrUWLTV6OTadf9DAFBQBAnKTVO+qHH36ooaEhDQ0NqbCwcN6xFJhdmycYCquj76IOn4y9RT0vx6a//fYn7IQCACCOUmLNTTIlY64/GArrF3/8XGf+GfuqwrnZNn32kkfft69MSAYglbHmBkAipdXITaoLhsI61HdJ3Z+MxNzmLUn7trr04k83MWIDAEACUG7iJBgK6+d/+FyfL/IZUBaLdO43O7TqezlJTAYAQGah3MTBjZsBPfJ6v/y3ol9pWJJys7P02Us/ZhoKAIAEo9zEQc3vP4lZbLJtVjVsL1bTjo1MQwEAkASUm2UKhsI63D+ss6PXNf6vm1HPycux6YsDO9jmDQBAEvGuuwzBUFi1f/rinp/k3VtXTrEBACDJeOddhsP9wwuKTbbNqlA4ooL8HP3l19tYWwMAgEEoN0sUDIXV+dGQjn81rqv+WwuO/6pqo5577CEDkgEAgLtRbpbocP+wDp24FPVY5YbVavQUJzkRAACIhnKzRGejXL9mlX2F6ra61egpZicUAAApgnfkJSp3ORbcV7fVrecee4hiAwBACmHkJoa7t3qXuxz65Xa3wuGIjn81Lkna9aN1TEUBAJCCKDcxHO4f1lt//Ycikj4dmpIkvVD9sF6oftjYYAAAYFHMp8RwdvS67nxcekTR19wAAIDUQ7mJodzlkOV/31sUfc0NAABIPUxLxXBnPc2dNTesrwEAID1QbmKwZVm5KB8AAGmIaSkAAGAqlBsAAGAqGTctFYnc3gPl9/sNTgJkrjuvvzuvRwCIp4wrN9PT05Kk9evXG5wEwPT0tPLz842OAcBkLJEM+9MpHA7L6/UqNzdXFovl3g9IAr/fr/Xr1+vy5cvKy8szOo6heC6+ZebnIhKJaHp6WuvWrZPVyuw4gPjKuJEbq9WqwsJCo2NElZeXZ7o3seXiufiWWZ8LRmwAJAp/MgEAAFOh3AAAAFOh3KSA7OxstbS0KDs72+gohuO5+BbPBQAsT8YtKAYAAObGyA0AADAVyg0AADAVyg0AADAVyg0AADAVyg0AADAVyk0KGR0d1d69e+V2u2W321VcXKyWlhYFAgGjoyXNkSNH5Ha7lZOTo9LSUn388cdGR0q6trY2lZeXKzc3V2vWrNHOnTt18eJFo2MBQNqg3KSQCxcuKBwO6+jRo/rmm2/U0dGht99+WwcOHDA6WlK8++67ev755/XKK6/o3LlzevTRR/X4449rbGzM6GhJNTAwoMbGRp05c0Z9fX0KBoOqrq7WzMyM0dEAIC1wnZsUd/DgQXV1dWlkZMToKAlXUVGhzZs3q6ura+6+TZs2aefOnWprazMwmbEmJye1Zs0aDQwMaPv27UbHAYCUx8hNivP5fHI4HEbHSLhAIKAvv/xS1dXV8+6vrq7W6dOnDUqVGnw+nyRlxP8DAIgHyk0KGx4eVmdnpxoaGoyOknBTU1MKhUJau3btvPvXrl2rK1euGJTKeJFIRM3Nzdq2bZtKSkqMjgMAaYFykwStra2yWCyLfg0ODs57jNfrVU1NjXbv3q36+nqDkiefxWKZdzsSiSy4L5Ps379fX3/9tY4dO2Z0FABIGzajA2SC/fv366mnnlr0HJfLNfe91+uVx+NRZWWluru7E5wuNTidTmVlZS0Ypbl69eqC0ZxM0dTUpPfff1+nTp1SYWGh0XEAIG1QbpLA6XTK6XQu6dzx8XF5PB6Vlpaqp6dHVmtmDK6tXLlSpaWl6uvr065du+bu7+vr0xNPPGFgsuSLRCJqamrS8ePHdfLkSbndbqMjAUBaodykEK/Xq6qqKhUVFam9vV2Tk5NzxwoKCgxMlhzNzc2qra1VWVnZ3KjV2NhYRqw5ultjY6Peeecdvffee8rNzZ0bzcrPz5fdbjc4HQCkPraCp5De3l7V1dVFPZYpv6YjR47ojTfe0MTEhEpKStTR0ZFx259jrTHq6enRnj17khsGANIQ5QYAAJhKZizoAAAAGYNyAwAATIVyAwAATIVyAwAATIVyAwAATIVyAwAATIVyAwAATIVyAwAATIVyAwAATIVyAwAATIVyAwAATOW/mbvfem/aH9YAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.subplot(2, 2, 1)\n", "plt.scatter(data[:, 0], data[:, 1] , s = 5, c=target)\n", "plt.title(\"Sepal data\")\n", "plt.xlabel(\"Lenght\")\n", "plt.ylabel(\"Width\")\n", "plt.subplot(2, 2, 2)\n", "plt.scatter(data[:, 2], data[:, 3] , s = 5, c=target)\n", "plt.title(\"Petal data\")\n", "plt.xlabel(\"Lenght\")\n", "plt.ylabel(\"Width\")\n", "\n", "plt.subplot(2, 2, 3)\n", "plt.scatter(data_pca, data_pca, s=5)\n", "plt.title(\"PCA\")" ] }, { "cell_type": "code", "execution_count": 41, "id": "8927eaee", "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", "X_train_pca, X_test_pca, y_train_pca, y_test_pca = train_test_split(data_pca, target, test_size=0.2, random_state=42)" ] }, { "cell_type": "code", "execution_count": 42, "id": "e7fe4afc", "metadata": {}, "outputs": [], "source": [ "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.model_selection import cross_val_score" ] }, { "cell_type": "markdown", "id": "05475e3b", "metadata": {}, "source": [ "Now we Try to use PCA" ] }, { "cell_type": "code", "execution_count": 43, "id": "a61716a1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Without PCA: \n", "Fold 1\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 10\n", " 1 1.00 1.00 1.00 9\n", " 2 1.00 1.00 1.00 11\n", "\n", " accuracy 1.00 30\n", " macro avg 1.00 1.00 1.00 30\n", "weighted avg 1.00 1.00 1.00 30\n", "\n", "[[10 0 0]\n", " [ 0 9 0]\n", " [ 0 0 11]]\n", "Fold 2\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 13\n", " 1 1.00 1.00 1.00 10\n", " 2 1.00 1.00 1.00 7\n", "\n", " accuracy 1.00 30\n", " macro avg 1.00 1.00 1.00 30\n", "weighted avg 1.00 1.00 1.00 30\n", "\n", "[[13 0 0]\n", " [ 0 10 0]\n", " [ 0 0 7]]\n", "Fold 3\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 12\n", " 1 1.00 0.90 0.95 10\n", " 2 0.89 1.00 0.94 8\n", "\n", " accuracy 0.97 30\n", " macro avg 0.96 0.97 0.96 30\n", "weighted avg 0.97 0.97 0.97 30\n", "\n", "[[12 0 0]\n", " [ 0 9 1]\n", " [ 0 0 8]]\n", "Fold 4\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 8\n", " 1 1.00 0.80 0.89 10\n", " 2 0.86 1.00 0.92 12\n", "\n", " accuracy 0.93 30\n", " macro avg 0.95 0.93 0.94 30\n", "weighted avg 0.94 0.93 0.93 30\n", "\n", "[[ 8 0 0]\n", " [ 0 8 2]\n", " [ 0 0 12]]\n", "Fold 5\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 7\n", " 1 0.92 1.00 0.96 11\n", " 2 1.00 0.92 0.96 12\n", "\n", " accuracy 0.97 30\n", " macro avg 0.97 0.97 0.97 30\n", "weighted avg 0.97 0.97 0.97 30\n", "\n", "[[ 7 0 0]\n", " [ 0 11 0]\n", " [ 0 1 11]]\n", "AVG Accuracy: 0.9733333333333334 +- 0.024944382578492935\n", "With PCA: \n", "Fold 1\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 10\n", " 1 0.88 0.78 0.82 9\n", " 2 0.83 0.91 0.87 11\n", "\n", " accuracy 0.90 30\n", " macro avg 0.90 0.90 0.90 30\n", "weighted avg 0.90 0.90 0.90 30\n", "\n", "[[10 0 0]\n", " [ 0 7 2]\n", " [ 0 1 10]]\n", "Fold 2\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 13\n", " 1 0.89 0.80 0.84 10\n", " 2 0.75 0.86 0.80 7\n", "\n", " accuracy 0.90 30\n", " macro avg 0.88 0.89 0.88 30\n", "weighted avg 0.90 0.90 0.90 30\n", "\n", "[[13 0 0]\n", " [ 0 8 2]\n", " [ 0 1 6]]\n", "Fold 3\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 12\n", " 1 0.82 0.90 0.86 10\n", " 2 0.86 0.75 0.80 8\n", "\n", " accuracy 0.90 30\n", " macro avg 0.89 0.88 0.89 30\n", "weighted avg 0.90 0.90 0.90 30\n", "\n", "[[12 0 0]\n", " [ 0 9 1]\n", " [ 0 2 6]]\n", "Fold 4\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 8\n", " 1 0.78 0.70 0.74 10\n", " 2 0.77 0.83 0.80 12\n", "\n", " accuracy 0.83 30\n", " macro avg 0.85 0.84 0.85 30\n", "weighted avg 0.83 0.83 0.83 30\n", "\n", "[[ 8 0 0]\n", " [ 0 7 3]\n", " [ 0 2 10]]\n", "Fold 5\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 7\n", " 1 0.79 1.00 0.88 11\n", " 2 1.00 0.75 0.86 12\n", "\n", " accuracy 0.90 30\n", " macro avg 0.93 0.92 0.91 30\n", "weighted avg 0.92 0.90 0.90 30\n", "\n", "[[ 7 0 0]\n", " [ 0 11 0]\n", " [ 0 3 9]]\n", "AVG Accuracy: 0.8866666666666667 +- 0.02666666666666666\n", "Score difference: -0.08666666666666667\n" ] } ], "source": [ "from sklearn.model_selection import KFold\n", "from sklearn import metrics\n", "\n", "\n", "def KFoldValidation(X, y):\n", " skf = KFold(n_splits=5, shuffle=True, random_state=42)\n", " fold, accs = 1, []\n", " for train, test in skf.split(X, y):\n", " print(\"Fold\", fold)\n", " X_train, X_test = X[train], X[test]\n", " clf = KNeighborsClassifier()\n", " clf.fit(X_train, y[train])\n", " y_pred = clf.predict(X_test)\n", " y_true = y[test]\n", "\n", " print(metrics.classification_report(y_true, y_pred))\n", " print(metrics.confusion_matrix(y_true, y_pred))\n", " accs.append(metrics.accuracy_score(y_true, y_pred))\n", " fold += 1\n", "\n", " print(\"AVG Accuracy:\", np.mean(accs), \"+-\", np.std(accs))\n", " return np.mean(accs)\n", "\n", "print(\"Without PCA: \")\n", "score = KFoldValidation(data, target)\n", "print(\"With PCA: \")\n", "score_pca = KFoldValidation(data_pca, target)\n", "\n", "print(f\"Score difference: {score_pca - score}\")" ] }, { "cell_type": "markdown", "id": "e429db79", "metadata": {}, "source": [ "As we can see with this dataset, the classifier trained on the principal components gives worse results than the same classifier trained on the \"normal\" training set" ] } ], "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.10.8" } }, "nbformat": 4, "nbformat_minor": 5 }