diff --git a/22-06-09-PCA/code.ipynb b/22-06-09-PCA/code.ipynb new file mode 100644 index 0000000..9772e32 --- /dev/null +++ b/22-06-09-PCA/code.ipynb @@ -0,0 +1,1268 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "April PCA.ipynb", + "provenance": [], + "authorship_tag": "ABX9TyPxwXIudwOoac7pfXlTlaLi", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "NbcIoYBbe6m0" + }, + "outputs": [], + "source": [ + "from sklearn.datasets import load_breast_cancer\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "source": [ + "cancer = load_breast_cancer()\n", + "cancer.keys()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "oS454e4sfAA_", + "outputId": "dfd77c05-e48e-4d04-e09a-8937ef7dfd9b" + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(cancer.DESCR)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Iro6FZawfUzw", + "outputId": "2d38595b-f2ae-4336-d3d5-e21368ef8975" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + ".. _breast_cancer_dataset:\n", + "\n", + "Breast cancer wisconsin (diagnostic) dataset\n", + "--------------------------------------------\n", + "\n", + "**Data Set Characteristics:**\n", + "\n", + " :Number of Instances: 569\n", + "\n", + " :Number of Attributes: 30 numeric, predictive attributes and the class\n", + "\n", + " :Attribute Information:\n", + " - radius (mean of distances from center to points on the perimeter)\n", + " - texture (standard deviation of gray-scale values)\n", + " - perimeter\n", + " - area\n", + " - smoothness (local variation in radius lengths)\n", + " - compactness (perimeter^2 / area - 1.0)\n", + " - concavity (severity of concave portions of the contour)\n", + " - concave points (number of concave portions of the contour)\n", + " - symmetry\n", + " - fractal dimension (\"coastline approximation\" - 1)\n", + "\n", + " The mean, standard error, and \"worst\" or largest (mean of the three\n", + " worst/largest values) of these features were computed for each image,\n", + " resulting in 30 features. For instance, field 0 is Mean Radius, field\n", + " 10 is Radius SE, field 20 is Worst Radius.\n", + "\n", + " - class:\n", + " - WDBC-Malignant\n", + " - WDBC-Benign\n", + "\n", + " :Summary Statistics:\n", + "\n", + " ===================================== ====== ======\n", + " Min Max\n", + " ===================================== ====== ======\n", + " radius (mean): 6.981 28.11\n", + " texture (mean): 9.71 39.28\n", + " perimeter (mean): 43.79 188.5\n", + " area (mean): 143.5 2501.0\n", + " smoothness (mean): 0.053 0.163\n", + " compactness (mean): 0.019 0.345\n", + " concavity (mean): 0.0 0.427\n", + " concave points (mean): 0.0 0.201\n", + " symmetry (mean): 0.106 0.304\n", + " fractal dimension (mean): 0.05 0.097\n", + " radius (standard error): 0.112 2.873\n", + " texture (standard error): 0.36 4.885\n", + " perimeter (standard error): 0.757 21.98\n", + " area (standard error): 6.802 542.2\n", + " smoothness (standard error): 0.002 0.031\n", + " compactness (standard error): 0.002 0.135\n", + " concavity (standard error): 0.0 0.396\n", + " concave points (standard error): 0.0 0.053\n", + " symmetry (standard error): 0.008 0.079\n", + " fractal dimension (standard error): 0.001 0.03\n", + " radius (worst): 7.93 36.04\n", + " texture (worst): 12.02 49.54\n", + " perimeter (worst): 50.41 251.2\n", + " area (worst): 185.2 4254.0\n", + " smoothness (worst): 0.071 0.223\n", + " compactness (worst): 0.027 1.058\n", + " concavity (worst): 0.0 1.252\n", + " concave points (worst): 0.0 0.291\n", + " symmetry (worst): 0.156 0.664\n", + " fractal dimension (worst): 0.055 0.208\n", + " ===================================== ====== ======\n", + "\n", + " :Missing Attribute Values: None\n", + "\n", + " :Class Distribution: 212 - Malignant, 357 - Benign\n", + "\n", + " :Creator: Dr. William H. Wolberg, W. Nick Street, Olvi L. Mangasarian\n", + "\n", + " :Donor: Nick Street\n", + "\n", + " :Date: November, 1995\n", + "\n", + "This is a copy of UCI ML Breast Cancer Wisconsin (Diagnostic) datasets.\n", + "https://goo.gl/U2Uwz2\n", + "\n", + "Features are computed from a digitized image of a fine needle\n", + "aspirate (FNA) of a breast mass. They describe\n", + "characteristics of the cell nuclei present in the image.\n", + "\n", + "Separating plane described above was obtained using\n", + "Multisurface Method-Tree (MSM-T) [K. P. Bennett, \"Decision Tree\n", + "Construction Via Linear Programming.\" Proceedings of the 4th\n", + "Midwest Artificial Intelligence and Cognitive Science Society,\n", + "pp. 97-101, 1992], a classification method which uses linear\n", + "programming to construct a decision tree. Relevant features\n", + "were selected using an exhaustive search in the space of 1-4\n", + "features and 1-3 separating planes.\n", + "\n", + "The actual linear program used to obtain the separating plane\n", + "in the 3-dimensional space is that described in:\n", + "[K. P. Bennett and O. L. Mangasarian: \"Robust Linear\n", + "Programming Discrimination of Two Linearly Inseparable Sets\",\n", + "Optimization Methods and Software 1, 1992, 23-34].\n", + "\n", + "This database is also available through the UW CS ftp server:\n", + "\n", + "ftp ftp.cs.wisc.edu\n", + "cd math-prog/cpo-dataset/machine-learn/WDBC/\n", + "\n", + ".. topic:: References\n", + "\n", + " - W.N. Street, W.H. Wolberg and O.L. Mangasarian. Nuclear feature extraction \n", + " for breast tumor diagnosis. IS&T/SPIE 1993 International Symposium on \n", + " Electronic Imaging: Science and Technology, volume 1905, pages 861-870,\n", + " San Jose, CA, 1993.\n", + " - O.L. Mangasarian, W.N. Street and W.H. Wolberg. Breast cancer diagnosis and \n", + " prognosis via linear programming. Operations Research, 43(4), pages 570-577, \n", + " July-August 1995.\n", + " - W.H. Wolberg, W.N. Street, and O.L. Mangasarian. Machine learning techniques\n", + " to diagnose breast cancer from fine-needle aspirates. Cancer Letters 77 (1994) \n", + " 163-171.\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "X = pd.DataFrame(cancer.data, columns=cancer.feature_names)\n", + "y = cancer.target" + ], + "metadata": { + "id": "dCBWA-vkfXN-" + }, + "execution_count": 4, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "X" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 522 + }, + "id": "40f2FNGcfgEi", + "outputId": "4ba0321b-55c7-4aff-dc25-00b341654267" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " mean radius mean texture mean perimeter mean area mean smoothness \\\n", + "0 17.99 10.38 122.80 1001.0 0.11840 \n", + "1 20.57 17.77 132.90 1326.0 0.08474 \n", + "2 19.69 21.25 130.00 1203.0 0.10960 \n", + "3 11.42 20.38 77.58 386.1 0.14250 \n", + "4 20.29 14.34 135.10 1297.0 0.10030 \n", + ".. ... ... ... ... ... \n", + "564 21.56 22.39 142.00 1479.0 0.11100 \n", + "565 20.13 28.25 131.20 1261.0 0.09780 \n", + "566 16.60 28.08 108.30 858.1 0.08455 \n", + "567 20.60 29.33 140.10 1265.0 0.11780 \n", + "568 7.76 24.54 47.92 181.0 0.05263 \n", + "\n", + " mean compactness mean concavity mean concave points mean symmetry \\\n", + "0 0.27760 0.30010 0.14710 0.2419 \n", + "1 0.07864 0.08690 0.07017 0.1812 \n", + "2 0.15990 0.19740 0.12790 0.2069 \n", + "3 0.28390 0.24140 0.10520 0.2597 \n", + "4 0.13280 0.19800 0.10430 0.1809 \n", + ".. ... ... ... ... \n", + "564 0.11590 0.24390 0.13890 0.1726 \n", + "565 0.10340 0.14400 0.09791 0.1752 \n", + "566 0.10230 0.09251 0.05302 0.1590 \n", + "567 0.27700 0.35140 0.15200 0.2397 \n", + "568 0.04362 0.00000 0.00000 0.1587 \n", + "\n", + " mean fractal dimension ... worst radius worst texture \\\n", + "0 0.07871 ... 25.380 17.33 \n", + "1 0.05667 ... 24.990 23.41 \n", + "2 0.05999 ... 23.570 25.53 \n", + "3 0.09744 ... 14.910 26.50 \n", + "4 0.05883 ... 22.540 16.67 \n", + ".. ... ... ... ... \n", + "564 0.05623 ... 25.450 26.40 \n", + "565 0.05533 ... 23.690 38.25 \n", + "566 0.05648 ... 18.980 34.12 \n", + "567 0.07016 ... 25.740 39.42 \n", + "568 0.05884 ... 9.456 30.37 \n", + "\n", + " worst perimeter worst area worst smoothness worst compactness \\\n", + "0 184.60 2019.0 0.16220 0.66560 \n", + "1 158.80 1956.0 0.12380 0.18660 \n", + "2 152.50 1709.0 0.14440 0.42450 \n", + "3 98.87 567.7 0.20980 0.86630 \n", + "4 152.20 1575.0 0.13740 0.20500 \n", + ".. ... ... ... ... \n", + "564 166.10 2027.0 0.14100 0.21130 \n", + "565 155.00 1731.0 0.11660 0.19220 \n", + "566 126.70 1124.0 0.11390 0.30940 \n", + "567 184.60 1821.0 0.16500 0.86810 \n", + "568 59.16 268.6 0.08996 0.06444 \n", + "\n", + " worst concavity worst concave points worst symmetry \\\n", + "0 0.7119 0.2654 0.4601 \n", + "1 0.2416 0.1860 0.2750 \n", + "2 0.4504 0.2430 0.3613 \n", + "3 0.6869 0.2575 0.6638 \n", + "4 0.4000 0.1625 0.2364 \n", + ".. ... ... ... \n", + "564 0.4107 0.2216 0.2060 \n", + "565 0.3215 0.1628 0.2572 \n", + "566 0.3403 0.1418 0.2218 \n", + "567 0.9387 0.2650 0.4087 \n", + "568 0.0000 0.0000 0.2871 \n", + "\n", + " worst fractal dimension \n", + "0 0.11890 \n", + "1 0.08902 \n", + "2 0.08758 \n", + "3 0.17300 \n", + "4 0.07678 \n", + ".. ... \n", + "564 0.07115 \n", + "565 0.06637 \n", + "566 0.07820 \n", + "567 0.12400 \n", + "568 0.07039 \n", + "\n", + "[569 rows x 30 columns]" + ], + "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", + " \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", + " \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", + " \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", + "
mean radiusmean texturemean perimetermean areamean smoothnessmean compactnessmean concavitymean concave pointsmean symmetrymean fractal dimension...worst radiusworst textureworst perimeterworst areaworst smoothnessworst compactnessworst concavityworst concave pointsworst symmetryworst fractal dimension
017.9910.38122.801001.00.118400.277600.300100.147100.24190.07871...25.38017.33184.602019.00.162200.665600.71190.26540.46010.11890
120.5717.77132.901326.00.084740.078640.086900.070170.18120.05667...24.99023.41158.801956.00.123800.186600.24160.18600.27500.08902
219.6921.25130.001203.00.109600.159900.197400.127900.20690.05999...23.57025.53152.501709.00.144400.424500.45040.24300.36130.08758
311.4220.3877.58386.10.142500.283900.241400.105200.25970.09744...14.91026.5098.87567.70.209800.866300.68690.25750.66380.17300
420.2914.34135.101297.00.100300.132800.198000.104300.18090.05883...22.54016.67152.201575.00.137400.205000.40000.16250.23640.07678
..................................................................
56421.5622.39142.001479.00.111000.115900.243900.138900.17260.05623...25.45026.40166.102027.00.141000.211300.41070.22160.20600.07115
56520.1328.25131.201261.00.097800.103400.144000.097910.17520.05533...23.69038.25155.001731.00.116600.192200.32150.16280.25720.06637
56616.6028.08108.30858.10.084550.102300.092510.053020.15900.05648...18.98034.12126.701124.00.113900.309400.34030.14180.22180.07820
56720.6029.33140.101265.00.117800.277000.351400.152000.23970.07016...25.74039.42184.601821.00.165000.868100.93870.26500.40870.12400
5687.7624.5447.92181.00.052630.043620.000000.000000.15870.05884...9.45630.3759.16268.60.089960.064440.00000.00000.28710.07039
\n", + "

569 rows × 30 columns

\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ] + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "code", + "source": [ + "X.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tjs6dWUGfgfE", + "outputId": "704dec97-d84f-4b61-9b06-ab133c305da9" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(569, 30)" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "scaled = StandardScaler().fit_transform(X)" + ], + "metadata": { + "id": "lzI1KvNRfmnC" + }, + "execution_count": 7, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# Co-Variance Matrix\n", + "\n", + "cov_mat = np.matmul(scaled.T, scaled)\n", + "cov_mat.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6RykrBR6gLBK", + "outputId": "fa0c4079-4729-4390-e978-4711e69c042f" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(30, 30)" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Eigen Value\n", + "# Eigen Vector\n", + "\n", + "values, vectors = np.linalg.eig(cov_mat)\n", + "\n", + "values.shape, vectors.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1stFD43ngNgb", + "outputId": "5847c3aa-b5d3-403b-d62d-adbc74f5318e" + }, + "execution_count": 9, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "((30,), (30, 30))" + ] + }, + "metadata": {}, + "execution_count": 9 + } + ] + }, + { + "cell_type": "code", + "source": [ + "np.round(values, 1)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9FY_uFSVhBq0", + "outputId": "34afa57c-cbe7-407d-f455-a4441bff8620" + }, + "execution_count": 14, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([7.5572e+03, 3.2384e+03, 1.6034e+03, 1.1270e+03, 9.3810e+02,\n", + " 6.8700e+02, 3.8420e+02, 2.7120e+02, 2.3720e+02, 1.9950e+02,\n", + " 1.6720e+02, 1.4860e+02, 1.3730e+02, 8.9300e+01, 5.3600e+01,\n", + " 4.5400e+01, 3.3800e+01, 2.9900e+01, 2.8200e+01, 1.0000e-01,\n", + " 4.0000e-01, 9.0000e-01, 3.9000e+00, 4.7000e+00, 8.8000e+00,\n", + " 1.0300e+01, 1.3800e+01, 1.5600e+01, 1.7700e+01, 1.7100e+01])" + ] + }, + "metadata": {}, + "execution_count": 14 + } + ] + }, + { + "cell_type": "code", + "source": [ + "# prefix sum\n", + "\n", + "np.round(np.cumsum(values) / values.sum(), 3)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "aFTWOePHgadw", + "outputId": "5747dfb4-e078-47f7-ebe5-410d4183f3e8" + }, + "execution_count": 20, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([0.443, 0.632, 0.726, 0.792, 0.847, 0.888, 0.91 , 0.926, 0.94 ,\n", + " 0.952, 0.961, 0.97 , 0.978, 0.983, 0.986, 0.989, 0.991, 0.993,\n", + " 0.995, 0.995, 0.995, 0.995, 0.995, 0.995, 0.996, 0.996, 0.997,\n", + " 0.998, 0.999, 1. ])" + ] + }, + "metadata": {}, + "execution_count": 20 + } + ] + }, + { + "cell_type": "code", + "source": [ + "plt.plot(np.cumsum(values) * 100 / values.sum())" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 282 + }, + "id": "lX6gceOZghaq", + "outputId": "a0c1b783-8f6f-4d6c-c880-40a22fec4238" + }, + "execution_count": 21, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 21 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "source": [ + "v = vectors[:, :2]" + ], + "metadata": { + "id": "KfwAamuJiQce" + }, + "execution_count": 22, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "v.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FlmuPhJkijee", + "outputId": "5600b5a6-d23c-466d-a000-b915136465a6" + }, + "execution_count": 23, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(30, 2)" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Project each dataset to Principle component\n", + "\n", + "D2 = np.matmul(scaled, v)\n", + "\n", + "print(scaled.shape, ' x ', v.shape, ' = ', D2.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "aQ2ewOl6ikyi", + "outputId": "96a8e1b8-6c6d-4410-c2e3-221cba4c4e6c" + }, + "execution_count": 24, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(569, 30) x (30, 2) = (569, 2)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "plt.scatter(D2[:, 0], D2[:, 1], c = y)\n", + "plt.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + }, + "id": "zQ8FsjFFiyfK", + "outputId": "f2063495-a372-47a3-9f22-66f3d47adad4" + }, + "execution_count": 25, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "source": [ + "# same result at random_state = 7\n", + "\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "xtrain, xtest, ytrain, ytest = train_test_split(D2, y, random_state = 9)" + ], + "metadata": { + "id": "Kua8YaKxjFPg" + }, + "execution_count": 26, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "log = LogisticRegression()\n", + "log.fit(xtrain, ytrain)\n", + "log.score(xtest, ytest)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "kdsQTLMljTla", + "outputId": "a8556eab-aa7b-4ed8-fefd-91610787fd87" + }, + "execution_count": 27, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.958041958041958" + ] + }, + "metadata": {}, + "execution_count": 27 + } + ] + }, + { + "cell_type": "code", + "source": [ + "xtrain, xtest, ytrain, ytest = train_test_split(scaled, y, random_state = 9)\n", + "\n", + "log.fit(xtrain, ytrain)\n", + "log.score(xtest, ytest)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LO8RQGfljWDz", + "outputId": "8875e3d8-12c7-4863-f0ba-8efe862a9908" + }, + "execution_count": 28, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.986013986013986" + ] + }, + "metadata": {}, + "execution_count": 28 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Sklearn PCA" + ], + "metadata": { + "id": "R5B78jzOjrAe" + } + }, + { + "cell_type": "code", + "source": [ + "from sklearn.decomposition import PCA\n", + "\n", + "pca = PCA(n_components = 2)\n", + "\n", + "D3 = pca.fit_transform(scaled)" + ], + "metadata": { + "id": "lm-GFLvujhDp" + }, + "execution_count": 29, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "D3.shape" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "S1HgO-MijzPJ", + "outputId": "75724234-0263-4fc3-a16e-cb8f17dc724c" + }, + "execution_count": 30, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(569, 2)" + ] + }, + "metadata": {}, + "execution_count": 30 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# PC" + ], + "metadata": { + "id": "yNN1qNVuj4Rm" + } + }, + { + "cell_type": "code", + "source": [ + "x1 = np.linspace(20, 100)\n", + "x2 = x1 + np.random.randn(x1.size)*10\n", + "plt.scatter(x1, x2)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 282 + }, + "id": "lc7AYOZBj03d", + "outputId": "c74297b5-88a4-48ab-c99f-1ebe7de83845" + }, + "execution_count": 31, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 31 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "source": [ + "X = np.dstack([x1,x2])[0]\n", + "\n", + "from sklearn.preprocessing import StandardScaler\n", + "X = StandardScaler().fit_transform(X)\n", + "\n", + "pca = PCA()\n", + "\n", + "pca.fit_transform(X)" + ], + "metadata": { + "id": "jIRFQOp0j6H3" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "def draw(X, pca):\n", + " plt.scatter(X[:, 0], X[:, 1], alpha=0.2)\n", + "\n", + " for length, vector in zip(pca.explained_variance_, pca.components_):\n", + " v = vector * 3 * np.sqrt(length)\n", + " v0 = pca.mean_\n", + " v1 = pca.mean_ + v\n", + "\n", + " ax = plt.gca()\n", + " arrowprops = {\n", + " 'arrowstyle':'<-',\n", + " 'linewidth' : 2,\n", + " 'shrinkA':0,\n", + " 'shrinkB':0\n", + " }\n", + " ax.annotate('', v0, v1, arrowprops=arrowprops)\n", + " \n", + " plt.axis('equal')\n", + "\n", + "draw(X, pca)\n", + "\n", + "plt.scatter(X[:, 0], X[:, 1])\n", + "plt.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 292 + }, + "id": "gQO416eqkBmI", + "outputId": "a1f3aa57-84c1-4c9d-9d67-155a8b068e37" + }, + "execution_count": 33, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "source": [ + "" + ], + "metadata": { + "id": "GHThJ83-kFfc" + }, + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file