PCA与LDA.ipynb 440 KB
Newer Older
20200318086 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PCA和LDA原理与实战\n",
    "\n",
    "**2020年4月19日**\n",
    "\n",
    "![title](img/1.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1、PCA\n",
    "主成分分析简称 PCA(Principal Component Analysis),是一种非监督学习方法,处理的数据不包括,类别信息\n",
    "\n",
    "主成分分析主要用于降维,也常用于数据可视化,或者去噪声,特征提取等\n",
    "\n",
    "- 降维\n",
    "    - 降低高维特征,简化计算\n",
    "    - 降低维度,压缩,去噪\n",
    "\n",
    "- 一般原则\n",
    "    -  原来的数据集是d维,转换成k维的数据,k<d\n",
    "    - 新的k维数据尽可能多的包含原来d维数据的信息\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/10.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/11.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/12.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/13.JPG)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-2.7391278364515688,\n",
       " 2.5801310701596343,\n",
       " -0.9477947579593762,\n",
       " 1.019590430670684)"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    " %matplotlib inline\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns; \n",
    "rng = np.random.RandomState(1)\n",
    "X = np.dot(rng.rand(2,2),rng.randn(2,200)).T\n",
    "plt.scatter(X[:,0], X[:,1])\n",
    "plt.axis('equal')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,\n",
       "    svd_solver='auto', tol=0.0, whiten=False)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "pca_test = PCA(n_components=2)\n",
    "pca_test.fit(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-0.94446029 -0.32862557]\n",
      " [-0.32862557  0.94446029]]\n"
     ]
    }
   ],
   "source": [
    "print(pca_test.components_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.7625315 0.0184779]\n"
     ]
    }
   ],
   "source": [
    "print(pca_test.explained_variance_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们使用可视化的方式来解释,components和explained variance的意义\n",
    "\n",
    "compontents为两个向量的方向\n",
    "\n",
    "explained variance为向量的长度的平方"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def draw_vector(v0, v1, ax=None): \n",
    "    ax = ax or plt.gca()\n",
    "    arrowprops=dict(arrowstyle='->', linewidth=2, shrinkA=0, shrinkB=0) \n",
    "    ax.annotate('', v1, v0, arrowprops=arrowprops)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3de5Bc1Z3g+e8v8+Y7syrrqSo9ShIChAQGBOLVxm5wGxuwDQ3YmPJ270xPu5mebcfORuxu2O6OmI7YiI5x9ERvxHrdPR52x9vjnu6ibbd52ODGgNuAeRnJSEJCCEmlV6lU78r3697Ms39kVZJVqndlPaT8fSKwqm5e3XsyMb978pzf+R0xxqCUUury51rrBiillFodGvCVUqpOaMBXSqk6oQFfKaXqhAZ8pZSqE9ZaN2Aura2tZtu2bWvdDKWUumTs379/xBjTNtNr6zrgb9u2jX379q11M5RS6pIhImdme02HdJRSqk5owFdKqTqhAV8ppeqEBnyllKoTGvCVUqpOaMBXSqk6oQFfKaXqhAZ8pZSqExrwlVKqTmjAV0qpOqEBXyml6oQGfKWUqhM1Cfgi8j0RGRKRw7O8fpeIxEXkwMQ//6EW91VKKbVwtaqW+bfAd4Dvz3HOa8aYz9fofkoppRapJj18Y8yrwFgtrqWUUmplrOYY/h0iclBEfiYi1852kog8LiL7RGTf8PDwKjZPKaUub6sV8H8DbDXG3AD838DTs51ojHnCGLPXGLO3rW3GTVuUUkotwaoEfGNMwhiTmvj5ecAjIq2rcW+llFJlqxLwRaRDRGTi51sn7ju6GvdWSilVVpMsHRHpAe4CWkWkD/hzwANgjPku8EXg34mIA2SBx4wxphb3VkoptTA1CfjGmO55Xv8O5bRNpZRSa0RX2iqlVJ3QgK+UUnVCA75SStUJDfhKKVUnNOArpVSd0ICvlFJ1QgO+UkrVCQ34SilVJzTgK6VUndCAr5RSdUIDvlJK1QkN+EopVSc04CulVJ3QgK+UUnVCA75SStUJDfhKKVUnNOArpVSd0ICvlFJ1QgO+UkrVCQ34SilVJzTgK6VUndCAr5RSdaImAV9EviciQyJyeJbXRUS+LSInROSQiNxUi/sqpZRauFr18P8WuHeO1+8Drpr453HgP9fovkoppRaoJgHfGPMqMDbHKQ8C3zdlbwFREemsxb2VUkotzGqN4W8CzlX93jdx7CIi8riI7BORfcPDw6vSOKWUqgerFfBlhmNmphONMU8YY/YaY/a2tbWtcLOUUqp+rFbA7wO2VP2+GehfpXsrpZQCrFW6z7PA10TkSeA2IG6MubBK91ZKqUtCLFPg1EiaRNamIeBhe2uIaNBbs+vXJOCLSA9wF9AqIn3AnwMeAGPMd4HngfuBE0AG+INa3FcppS4XsUyBd8+OE/RaNAW9ZO0i754dZ09XU82Cfk0CvjGme57XDfAntbiXUkpdjk6NpAl6LYLeclie/PPUSJo9XbUJ+LrSViml1oFE1ibgcU85FvC4SWTtmt1DA75SSq0DDQEPWbs45VjWLtIQ8NTsHhrwlVJqHdjeGiJTcMgUHIwxlZ+3t4Zqdg8N+EoptQ5Eg172dDXhtVyMZwp4LVdNJ2xh9dIylVJKzaMc9GsX4KfTHr5SStUJDfhKKVUnNOArpVSd0DF8pdQlZ6VLEFyutIevlLqkTJYgKDglmoJeCk6Jd8+OE8sU1rpp654GfKXUJaW6BIGIVH4+NZJe66atexrwlVKXlNUoQXC50oCvlLqkrEYJgsuVBnyl1CVlNUoQXK40S0cpdUmZLEFwaiTNeKZAQ8DDzo7aliCYzUKyg9ZzBpEGfKXUurCYQLlSJQjmasNCNihZjU1MlkOHdJRSa249pFrO14aFZAet9wwi7eErpRallkMWk9d69+wYTsngs9wYA2FfuYdcy92e5jPfjlOJrE3TtPcZ8LgZr3ooLeSctaQ9fKXUgtWyJ159rZxd4vxYht7hNJZLsIslzoym6I9lV+BdzGy+dM+FZAet9wwiDfhKqQWr5ZBF9bWyhSI+yyLi89A3nmEgnqd3OMWR/sSqDevMF6wXkh203jOINOArpRasP5bl7Gia/WfGOTaQIJmzl7zoqbpHHfBalICs7XBqJMN4Jk88a9Mfy/Cj/X2cGV35MfD5gvVCNihZjU1MlkPH8JVSCxLLFLgQz2EJNAS85J0SxwaSdDUHaQ4vPqBN9qiDXov2iA+fJRzpT2BMiXjWpinkoynoxRJ48f0B7tndwVi6sGLpjgtJ91xIdtBKb2KyHNrDV0otyKmRNNtbQhgg7xTxWS4Ew6nR1JKGLKp71J2NfuxiCbfLxbaWIBsiPnyWi7YGPw0BL6lckRffH1zxLJ7JoP/bO9vXVc+8VmoS8EXkXhE5JiInROQbM7x+l4jEReTAxD//oRb3VUqtnkTWpi3iY2dHAx63i0TOJuSz6GwMLDkwul3C4f44xwYTdLWE2NUZJp5zCHgttraGCXkt8k4Jp1SiWCqt23THS8Wyh3RExA38NXAP0Ae8IyLPGmPen3bqa8aYzy/3fkqp5VlqWuXkEEzE72FnR3kiM1Nw8FqL7zdWL1C6ZWszWbtIpuDwO7s6KBnBEgh63OTsIjm7iOUSmtdxuuOlohY9/FuBE8aYXmNMAXgSeLAG11VK1dhS0ypjmQLJnM3bvSMc7BsnkS0sKwNltmyfsXSBe3ZvwDGG4VQeywVdzUHCfovmkG/KNYaTeQbiOV45NqT18BeoFgF/E3Cu6ve+iWPT3SEiB0XkZyJy7WwXE5HHRWSfiOwbHh6uQfOUUpOWklY5+ZDwWW5u3toMBvafGSfvFJc8zj1XzvvWlhBfvHkLt25vpr3BT3PYyz27O3C5qGTQDCVyHD4fozXs001QFqEWWToywzEz7fffAFuNMSkRuR94GrhqposZY54AngDYu3fv9OsopZZhKStBp69AvWGLtzKUs9Sx++oMnUnVOe+TmS6Tw0+nR9K4XULeKQ/xjKTyXLcpSnuDH7h4VayaWS0Cfh+wper3zUB/9QnGmETVz8+LyN+ISKsxZqQG91dKLdB8gXYmC3lILHZeYHtriHfPjleuNTmG39EY5t2z4/THsgwlcgwl82yKBtjeGsJyu8gUHPZ0NQGxdV3CYL2qxZDOO8BVIrJdRLzAY8Cz1SeISIeIyMTPt07cd7QG91ZKLcJSVoLOtwJ1KfMCMy1QuqItTO9wirFUgcFEjvPjGdJ5h7xT4sPBJMWSqQw/rfcSBuvVsgO+McYBvga8ABwFfmCMOSIifywifzxx2heBwyJyEPg28JgxRodrlFpli10JupDJ2qWWW5ie8z6WLhD0WoxnCgQ8Fi6Xm4jPIpmz8Xvc9MeylXH+9V7CYL2qyUpbY8zzwPPTjn236ufvAN+pxb2UUssz30rQyeGZ/liWC/Ec21tC3Ly1mVMj5ZIKN3ZFpzwkllohcvowUH8sy5amIKl8kQa/RcDjximVyBSK+Cw3iZxd6cWv5SYolzItraCUqqjOj8/kHSyBs2NpdnY0cMOWposma2OZAgPxHB8MJGkJedkYDRDxe2YdXpn6MMmyvSVMW8RH1i5yIZ7Fb7kJ+9zknRJtER/HhxKEvBY528FyCZmCw86OJmB9lzBYrzTgK7WGar0d3nw7Ns13r+rhmXShNFEzp0h/LMvODs+Unvvkw6E17COdt0nlbD4YsNnaHMLlohKYq9s29WEinB3LEPC6ifg9bG8Jc2q0XL7hzFgaF9Ae9uGx3Iyk8tzY1cT1m6Pai18GraWj1CK88847PPTQQwwNDS37WrXe5Wmu6y30XtX58ZM9bZ/lJpV3gKkTo5MPh/YGP9d0NhL2e7CLJUZS+RnnBaY+TIo0BLyVsXmAtoiPzsZy3v2GBj8Br8W2tjC3bG/mf/yt7Xzy6nYN9sukPXylFuGrX/0qhw4dYv/+/Rw8eJCmpqb5/9Is5tthabnXK5YM52NZekfShL0WrWHfvPeqTtvcGA1wbCBJ3nYI+azKxOhkz7167H6y3IIxhvFMYcbAXH1+2GdNFGBzk8h99DDZGA2wp6tpIvVS1Zr28JVaBMcpB6dz587xqU99ipGRpS8lmexNJ3M2xwYS7D8zztnR9JJ3earunZevmcSF4AJi2QJnxtIkcx/VrZ+pjn119kvYZ9HVHMQxhqDPuiijZ7GpkZPnJ3M26YLD4fMxjlyII5Q0y2aVaMBXdWNyWGM5tVfi8Xjl5wMHDnD33Xez1BIgDQEPw8k8xwaS2EVDg98inXe4EM8tqW3VAbg/lsXvcSNS7n23hHy4Jo5Pmik4T2a/jKbzPH3gHC99MIBL4LpNjRcN02xvDTGczHHw3Dj7To9y8Nw4w8ncrEF78vxDfeN4XMIVrWEKTomBRH5ZZRrUwumQjqoL1ROGTUEvWbvIu2fHFxVk8vk8/f39iAjGGFpbWzl8+DD/13f+hkf+8H+eMhkKzDhBWj1xKgJHL8QJ+yx8lou8U8QA21tCSxrWqV69mso5eC0h75TY2lJuzwcXCoymCxhjKitbp0+sAsSzNscHknQ1hYj4PSRzNk//po/fvWlz5VqTDICAlP/nopoq1aJBLw0BD+Gsh0IRGoNe7tvYiNslyyrTsBC1nhy/VGnAV3VhuePlsUyBV/cfwRhDc2sbYyPDRCIR/u3/9DWu/eT9lcnQ4WSeXx0fJlMoVkoCTE6QTq4krX7opO0iYb9FImcT9llsbQkR9llLKhFQnZueKjgk4w7RUDm/fWM0wNaWMCOp/Ix569UB8e1TY4R9bhqD5eqUjUEfGbvIP75zjtu2N1cC5qmRNO0RP9tawpU2ZArOnJ+pMXD9pigTC+8njpklvd+FBvFaPOwvFzqko+rCXNUZ5zMZMJpaO9h7x518+V//W5paWjl16hS7bv0kV2y/gqDXIpV3ODuWIZ4pgClv7lFdEuCtk6MXrUjdFA1guVzcvLWZnR0Nc+awT2/PTENT0aCX7a0htrYEiYY8eF3CiaEkT7/bx/sX4ty+o+Wi3ZymZ/CMpvKMpvKkC+X5inTBqRyrzvCZXPm6mM+0ViURFpPhVMuN1y91GvBVXVhOoJkMGNFIiO/94Kf8u3//v/E79/8uAM/+0w8rQW9y3NwlLpxSCb/HmlISYDiZuyhAbm8JMZYuzFkioDrAv/rhEK8dH54z0E32vHe0humPZ8k5JVpCPnweF73DqYuC4vSA2B7xUSwaRpI5AEaSOYpFQ3vENyVgpnLOoj/TWpVEWEwQX87D/nKjAV/VheUEmpkCxhce+iIAr/zzM6Tz5cCRypf3ebXcgsdd/k9rMoc9axdpi/grWSrHBhK8dnyYV48Pky8WOT2S5tx45qJMmFimwK+OD3PkfJze4RSvHx/lxFCKeMbmw8EkRy8kOD+e5VBf7KL2JnI2V7ZHuGFzE1dtiOB1zxwUp7+/j22Kki+WGE7lKZXKf+aLJT62KVo5J+BxE/Zbi/5MF1vLZzH/TmYL4lpo7SM6hq/qwmSgOdQX43B/HMFwZXtkQX93ppLCV19/M52bt3Ch7xxvv/k6d3z8E4S8LhLZAmGfBQI5u4gxpUpJgNt3tHCoL0bfeBaPSxhMZHGKJTZGA7SGfbhcXDS5+/qJEQYTOTZEypt8nxxJYUyJ/liGm7qaafB7yNkOb/WWi88aAwPxHE7RkMo7NPjLQS3vlAj73JWVstXj35Pntzf4SeZsEjmbxoCHoVSe3pE0jQEvOzdE6IwGKu9/Mmd+cix/MfVsFlrLZ66x+cWUeZ6tFPNME9aXO+3hq7pSLBmu29jI3q0t+Cz3gtIzZ/p2kLWLPProlwE49OrzeC0XQZ+FYyjXndkcpWjKq067WoLs6Wpia0uIxoCHiM9iIJEj5LXYtTFKc8jHeKZQ6X2fGU3zo/3n+PWpMY4NJMjbDu+dj5MqFGkNecjaJU4NZyiWQETI2iWSWZuzYxmagl5awz4On49RKBbJ2U5lX9iN0QBZu4gIU8a/J8/vHU7xwYU4qZxNe4Ofz123kb3bmvjyLVtoCFgz9uSnV7xc7iToQsfmF/ONrVbfKi4Hsp6rFO/du9fs27dvrZuhLhOTgaS6VzhZDGy+lZ0z9TrPHD/KjTfeSEtLCxcuXMDj8czbO33l2BCWS/iXY8O4gIDXojXipVgy3NTVxLnxDBfiOSyBhoCXl48OMp4t0BT00OD3EA352H9qFBHh9ita6GgMcGIoSWejD8ttcfPW8vsYSuQ4M5YilXNoDvvY3vLRBiJul+Cz3FM+h97hFK8cH6JUAo8LmoLlMX+3S+hsDHD7jhbG0oUVT2tczL8jTbWcmYjsN8bsnek1HdJRdWOpZXxh5mGIxuuvZ9euXRw9epSXXnqJ++67b87hilimwMnhJEcvpCiWSjQFvKTzDseHErSEvVhuoeAUKZYMzWE/IsKW5gADp3Jk3A4etxt3tkAy7+A4Rd7uHeGunR20hH0EvR681kdf2NsiPiy3cMOWaCUoBn0udnY0cfBcbMr4dzJnM5rOUyoZWkM+CsUSZ0ZTbGgM4HW7uECO3uHUqvSKF/PvSKtlLp4O6ai6UevJOxGhu7sbgJ6enjnPnRyqSOaKpHI28UyBA31jfDiYoFg0uMVFKmczkipUFmEBbG4O0Rr2kMo55WqUg0lawz62tYVpCfk4M5rCLhaJ52w2Thtjr64bXz3kMv1z6I9lcQEelwuXCHaxRNDnoeAYXOKiWCqtWhqjTrCuLA346pK0lDIJK7FL0mTAf+qpp8hmZ66BE8sUeOHwAAfPxXj/fIyWkJe2iB9ByoXGQuXe/fWbm9gYDVAolibG3R2CHjdXdzTQEPICho0Nfq7uaKAjGmBLSxCX20U8W2BzU4BsocgHF+K8cXKE987HaA7N3Pud/jmMpguUjKEzGqBkSiTzDj7LRargUDIlgj5r1dIYdSerlaUBX11yllpWeCUm76688kpuueUWUqkUzz333KxtjWULlEoGv88ilnVoCvnY3ByiqyVIc8jLNROLrra3hMgVSnQ1h8g7RQ6cG2c4lefeaztoDJbLBoe9FjvbG9jZ0chNW6I0B31cvznKqdE0Y5kCzcFybfmZcu4nx70zhSLv98d59fgwA4ksjjG0hr10RoNYLuH0SJpExqZkDCGve1mLoxbzUNYJ1pWlY/jqkrOcMglLHfeda4Kwu7ubd955h56eHr74xS/O2NaWkI8L8RwbGwOcHctwfjxDMmeTLZRwiqnKhKTldnFjVznfPZG1ubojUplwPdKfoCnkpbMxWLl+MmfTFvEzli7wsU2NF012Vn8m1SUGogEPZ8cyWC64fXsLvSNpRlN5ShMrhEM+FxujAYrGMJIq0JTM8Ymr2hb1eS21nIGOza8cDfjqkrOcydelmCt4AVx752cREX763HO8d6ofxx24aJ/WjdEARwcSFIsl2kJeDl9IEPRZhP0u2iI++sbS5OwiQ8k8nY1+UjmHazdGaW/wV9qxZ0sTb5wcIehxV4qaxbM2d+/awOmR9LyfSfWD8thAgmigPEyUzDncsDlK70iKo+cTtIZ9bGoMYjAEvBYNfovGifmAhap1rX9VGxrw1SVnMYtuFmquHvxswetQX4xiydDYsoGbb/84+978Fd/6m+/zb/7gDy7ap7W9wc9t21t4+9QoA4kcW5qCXLepgbxdIuy3GEsXODE0woZGP785k+H4UAq/5eKazka6moOVRU55p4gxcCGepS3i5+5dG9g6UZ5hvs+k+kE5uVE4QCJnE/F7uH5TlFi6wCevbl92cbPVfiirhdExfHXJqfXE3nxzArMt4z8xlKw8CO5/sDyUc+jV5xnPFCr1Xba3hHn/Qpw3e4d5u3eEVN4h5xTZ3BSgMeDlxq4m9nQ10xT0kLaLjKVtBKFYLDGaLvDhYJJ41ubA2XHe6h0lmXe4uiPC792xjS/f2lUpV9wc8vLe+ThvnBzmgwtxhhK5iz6T6gyYye0L806xvDIYppR/qLaUh6lm26xPNQn4InKviBwTkRMi8o0ZXhcR+fbE64dE5KZa3FfVp+VO7E0vRvb3b53mXz4Y4sX3BzhwbrxS3XIyDXG24GWQyoPg0/c/gNtt8f7+N+jt65/YwWqMc+NpBmJZzo1myOQdCnaJYgkGkzka/B4iE6UPeofLm3ZHfB7GMgVcbhdZu0TfWIazoynOj2c4N57hmg2Rix5IsUyB3uEU21tCNAe9jGVsTo2muKItfNGGJZMPx85GP7FsgXi2QGejv3L89h0tNXmYarbN+rTsgC8ibuCvgfuA3UC3iOyedtp9wFUT/zwO/Ofl3lddnhaa2bHUJf3VvXnLJew7Xe45Wy7B53ZzcijNgXPjOMVSJQ1xtuB1VXu48iCINjVz3W2foFQs8uxTP+bkcArLJZwbyzKascvZNQEvm6JBrt4QJpaxee3EMIlsuVJmoViurlk0Jc6OZsjlHVyYifmCOF6rPInaEPBeVBly+mbiv7WjlY9tijKWnvrZVT8onZLh2o0N7N7YiFMylYfm1pZQTbJkNNtmfarFGP6twAljTC+AiDwJPAi8X3XOg8D3TbmOw1siEhWRTmPMhRrcX10mVmOjiukTl07R0Bz2kcg5RIPl8r+pnMOp0TTXbmwEpm4sUl0kDKgU5XKKJXZ//F4OvvEvnHj1GVyP/WuODyYZy9g4xSK/Oj6C5RZKCF4RLEuwi0WODSbY09XMJ65u483eUc4MZyg4RVwuF26Xmw0NXuxiCSPQFvZV3kf1eHitV6fWKktGs23Wn1oM6WwCzlX93jdxbLHnACAij4vIPhHZt9S9QtWlaSU3qph8mLx+fJizo+XNvFP5Ik6xRGeDn1TeoeAUsdyQLhQZS+XnHX6IBr3cuCXKB4f28+d/+r/z3H/9TwAMnj5GNlfA5RIKdhHL5WIwkeV8PMeFeIbRTJ5YpoBbXGxoCLCnq4nf2tHKtZ0NDKay+CwXxpTweIRo0EtLyMe50fSMK2lBx8vVwtWihy8zHJtekW0h55QPGvME8ASUi6ctr2nqUrLYzI6FFM+KZQoc6otx4Ow4zWEfkYmNwo8NJHC7BMvtwimW2NoSxHILsawNxhD2Wxw8F6Mh4KE55KV3OEWpBGPpPB8MJHnmF2/St+8l/vnZH3P+3JnK/aIt7ey++Q6u6IxyqC9GvlhiNJVnLGsT9Fh43UIy52CFPBSKJVK58q5S0aCXO3a08osPBhlLFwj4yt9yGvwWyaxDwikXONve+lERtMlvGVr+Vy1ULQJ+H7Cl6vfNQP8SzlF1bnq6ZTJn0zuSIu+ULgroCxn+mTzn/HiW1rAPEReJQnmxU7Zgk7NLFEolcnaJGzY1EvC6MUDBLrK1OVy57ovvD9IW9nHw/Q9448Wf8O6/PMfQ2ROVdrdt6OTmu+7nmjvv5eprb+DkSJo3jg+TcxwiPg9nRjP43S4MhmJJcLsNLWEfibRNeCI1cnLide/WFvrGM/gtF1mnhO2UaAx5uG5zAwjsPzM2kdnz0fucbchJx8vVdLUI+O8AV4nIduA88BjwlWnnPAt8bWJ8/zYgruP3arrqnqpTLHHofJycXaQp6OHXp0bZf2ac27Y345QMvzk7js9ycUVruDL8A1MX9kwOETklQ4Pfg0i5LHB/LEvEV364XNkWJp61yTolcAmNAYutm6IEvG4+HEzSd76fnz37Y4689jPOH3+v0lZ/uJGum+7ioS99mce+8FmGUgVePHKB0VSe5oBFNm8Ty9hYLjftER+FgAcE3G7BcUo4xRKtDYHKMM1kW6/b1IhTKvf8R8ezuN3Crs4GbtjSRMTvqZQKnh7MdbxcLcSyA74xxhGRrwEvAG7ge8aYIyLyxxOvfxd4HrgfOAFkgD9Y7n3V5ae6p3qkP4bbBV7Lhc9y0+D3MpDI8vdvneae3Z24ABfCsYEkOzsiRPyei4Z/ElkbyyWMpgqcHs0QDVhkCw6W201XSxCPO8zOjoYp9dZfOTZEJhnnv/+3H/HOL37K0d+8RalUAsDyBdh5693c8ukvENi6B7/fQzjkw+0uFxbb2dHAQCJHxi5yZXsDuzobea8vTnvEx1AqTzxj0xr20tLgJ5512NQUqMwTTA5niQg3bmmiP5Ylni0Q8Fhc2RahP5YllU8S8roJ+qx56/crNZOarLQ1xjxPOahXH/tu1c8G+JNa3Etd3iZ7qomszVAih1My+D3l/5vm7SKWq1xhMuL3YBdLlU3Cd3Z4LpqoFIFfnx5jNJWndzg5cQ3Dro1hcnaxsmgp4HHTPzJOz+v/zHe/931e/+XLFJ1ySqbl8bJj78cJ7PwE195+F5tam8gWihSNIez96F6pvEPQa3FNRwMAdrGEz3IzmMzhcbmI5xxawkLYb5GzS3RG/Txw46ZKT716OCvi97Czw0POLpIpFDkfy+D3uGnwe0hkC8RzNrFMQYds1KJpaQW1LonAe+fj+CwXIZ9Fa6TcK24O+Ujli1y9IcyxgUS5jG/uo9z46onKVN7h2ECy0uvP2yViWZvekQxdzRHe7xvj+P7XeOfln/LmL39OLpsp39vl4rpb7uST9z5I+8c+QckbJG87nBjOkrVL+Dwu/JaLjFNkc0sAYwyWSxhM5gh43PTFMgzHc7Q1+NkcDWIEIn6L5pCXnGNwu+Ce3R00Bjy8e3acRNZGBOJZm/aIvzLxGg16GM/YeN1ufFZ5ZaxBaAv7eOHwAB2N/hnnNnQXKDUbDfhq3YllCsSzNkYABNspcXwggWMMfo+bsM890QtuKGfPUMJruSoTlZNB72fvXeD0aBqh3IuPBD0EvNB76G1O/Ph1jr31EqlEvHLfO+64g+7ubjbfdDdpdxinCH3jaa5oCU0s1HLTEPBiF4vknRJ7tzSwMRpgPFOgJezj5FCSkWKJxoAHV0OAvlgGj9vFLdubCfssjKEShIGLJp0Fm7xT3n+2IeDhzqvaEBkhk3dI5BzCPjctofJ17WKJXZ0NFxVyW+l1DOrSpgFfrTunRtK0R/x8Ykcbb58aJW0bCk6R4VSeU0MprtoQIeK3iAa9bGoKXJSZ86vjw5wcSnHwbIy07dDosygOHueDfS9x+p2XyMZHK/faetUuPv25h3noi1/icx+/oXKNycAZ8rpI5x1cInzy6nYSOZvRdIFowNth+VkAABiGSURBVMNnr+uo3Pfds+N0NgUYz9g4RWgOe9naGsLncdHZGLhozH3y+tUF2doi/ov2bt0YDUzZ4/XYQAIX0BLyXTRZPXkdrVCpZqMBX607/bEsmbxDulDOjx9NFTgwnMRvubn1ikZODqf529dPcedVrXz+hk1Teq+H+mIcH0xyfCiFPXKG/nde5PB7r1AY/ygpLNK+mc98/mF+73/4CjuuvuaiapDVk8dBn0U8Z7O9JURbxEdj0IPP46Ix4Knk6W9vDZHI2nhcLq5qi1QqTRpjSGTtGXeKWuiag+k59qPpAh4XUxZhVf89rVCp5qIBX9XcXOPIM70GVI6JlBcYRXwWDQEveadE73B5lWljwEM6X2Jrc5iOBj+JrEPvcGpKrfY3Dhzll889xa9/8VPG+05W2mSFm2m5/rfZePOn+cQdt/HlW7ZWCpfNtCp1cvJ4T1dTpc3lKpjlVYQ+y10Za3/37Dhul+Bxl/eirUwyOyUsS2Zc8brQEs/Tc+yjAQ+tYV+l7dP/Xq3LRqvLiwZ8tWALXdlaPY48nMyz/8w4nY1+In6LRLa8Q9PkGPOvjg9jgPaJY4fOx3BKhrRdxOcp4rPcpAo2hWKRrF3EKUHYa9EYLK+YDXotfn3kJEff+Dk9PT28/fbblbZ4gxE23PDbhHb9NoEtuwkHfDQFy8XHDvfH8LhceNwuosHyePlsqnPc3z07js9yUywZPhxMksqXyzE0h7xEgx76xjOUk9KEeM5mc1XqZfVn2B/LciGeq3xzmGt1bPX9Jz/fTMGZcVWtrrhVc9GArxZkoYXNquvhJHM2Z8fSWAKZvMN4pkAqZ9NcNf4cy9ggsK0lDIBThA0RH/GcQ38sy0Aiz2gyT75Yoi0cYEODl5IxfHjmArGjr/PSX/2Cd958rZIrHwgGueLmu+jc8zu0776FZB5S+QI+j0Vr2Muuzkb8HjejyQKdjQGQWWp8zGIyt//DwdREqqRFzi5yYjDFg3s20RDwcHwohVCuRnn95uiMq4O3NAXxW25OjabIOUU2RgMLWh0736paXXGr5qIBXy3IQresqx6b7o9lKRlIZAucGE7j97jpaPBW8uahnK8uVaWWwj43sUyBvrEMV7SFyRYcmkMe+sazZLJJ3vr1G/T/5mXOHnyDUrFch8bj9fKF++6ju7ubOz/1GV47leDF9weIZ2ziuTw+t5uN0QB7tjSRd4p0NPgpFEvcvLUZuHjv17k0BDwc6Y/j97jxT9TCFyn38Mcmdov65NXtC/oMA143fsvNYCI7ZUx+PnOtqtUVt2ouGvAvQyuRi73QScaGgIfhZJ7xTIG3T42St4sTFR/LZX7PjWcpFGFnR/l8j9s1pbTexmiAg+di+D3l1aslx2HgyJuc//WLvLLvFZx8Fijnyl+957d48JEv8nuPfYmipzxxenK83AMPeDzEKOe1RwIWApweSxOYmHCt/jwWM7G5vTXEax8O0Rr2YYyrkkZ59YbIjJOzs32GyZxdWUfgwlXZ1ERTKNVK0oB/mVmpmvILnWRsDnl59dgQjRPHC3aJwUSOzc1Bgl6L9/vjxDMFjDGVxUUGKmPSbpcQ9ArjJ9/lxz95imNvvUw29VGu/Oad17Pjts+w687P4A40s3t7M7/uz7O9xYPf4+LQ+Tj9sSw3bmlkT1eUDy4k6Y9liAY8NAc8lIzh2ECCe67tnPN9zCYaLG9LeHY0QyJnE/ZZbG0Jldvtm7vaePVn2B/LTnxDEML+mWsBKVVrGvAvMwsdepnJXN8MFlqCdyxdYFtrmBNDSS7E82BKbGoKkM45RHwWG6N+gMoY8+Rkae9wijfeeovXXniGF559itHhwco1t+y4ho03f4pdd9zL7muuIltwyNlFNjcHGUnmaQ17OTuWwe2CaMDLYCJPMuewrTVMWyRP2F8uSzCaznP1hgij6QJDiRwdDf4lTWxevzla2QZxMZOj1Z9hMmdPrJ4tsrUlUvlcNYVSrSQN+JeZxdaUnzTfN4OFluDtj2UZTefZGA3iknLdm1i2QH88x5bmILs6GmkOeyuLi44cOUJPTw9PPvkkJ09+lEbZuWUrd9/3ENd8/DNsuWIn7/XHafB5iGUKBL1udrRHaAp6+c3ZMToa/fTHspwcTrGtJUgsnadvPA2Ua88HPG46Gv1saQ6ys6OBRLbAscHEkic2l1qOuPrvlYASplL4DTSFUq08DfiXmYUOvUy3kG8GC5kQTOUcXIDf46Yt4idjF2nGS9jvYUtzkEzBwZUa4j/+x+/S09PDe+99VHK4s7OTL3/5y3R3d3PVtTdwejRTrhKZc9jeGiYa9HBFa5gPB1M0+K2JnHc3J4aShLwWbhHOjGYpOEW8HhfZglMuVxzyTCmWZrld7OlqXlbFyaVOjk7+vcnevtslleEtTaFUK00D/mVmqbsfLfWbwXRhv0U6b5OzHYJeNx0NPs6PZ0iMDfNPf/c0v3z+ad759Ue58k1NTTzyyCM88PCX6LzmJtKFEp5AuXZ9dengzqifRNbG7RJCXheJbAEDtIZ9XIjnsIvlUso5u4jX42ZDxIfbLXgsFyUjdDWHCPusGYusrQXdtEStBQ34l5mFBpLp4/UitVmluTEawG+VHxQDw6McfuNF3n7pJxx4+1eVXPlgMMiDDz5Id3c3n/3sZ8k45QVDRSOzLsjK2kXMRHGxoM9iIJHD53FxbiyN1+0iY9tYlputDeWNvtOFIjvawtx5ZSuxrE1z2LvuAqumUKrVpgH/MjRfIJlpvD6etRHKq2CXs0pzQ1B46kdP88rPnuHNV1/GLpS/IVgeD3fcdQ+ff+iL/P6XH2FT20fXPTJwcSGx6Quygl6L9oniYtdvjlIyhnjWJuCxyDlFMOC3XLhdLlrCPhoDHjZGA/QOpygUywubbtgSXReBXqm1ogG/Ds00Xt8e8ZN3ingt16w94dmyeAqFAj//ebm0wTPPPEM6Xa7cKCLcfMcnuOMzD/DAgw+xobWFrF3kw9ECodBHG3jMNJyUyNmMpQo4xfJirI3RAGGfxfhEG9ojfra1hGmP+PnlB4N43S68lot4psBwMscdO1o51DeOQbh+U6PmuSuFBvw1s5YbVcw2Xp+zi7NOZE7/VpDKFfjeD3/CoVee5yfPPM3Y2Fjl3Ntuu43u7m4effRRBmz/lPK+M00Gz7R5+YV4Dp9bJiZnSxwbSJY3ELGLvNcXY0ODn01NQRJZmx3tERLZAqNpm52dDeTsEofPJ7iiPcQVreEphcY0z13VMw34a2ClFkct1FIyeU6NpAl43PS+f4jnn/4hP//p0wwNflRy+LrrrqO7u5vHHnuMK664onL8w2ND804GT59o7h1O0Rzy4puoPumz3Ixn8rx5Ml7ez1YgnXc4cHacC/HyLlOW28XVG8Ls6WrGGMOrHw5x/aZopVTx9PvqzlCqHmnAXwPLWRxVC4vJ5IllCrz8xn7+n7/9Ow688jyDfWcqr23aspW77/9dvv61r3LdddfNeK+FPFymTzQXikVu3daMiNAfy5LI2WTyRToaA7Q3+Al43bx5coRjg0mSOYe2iJeQ1yLsd5PMlTN52iL+We+71g9cpdaKBvw1UKsUyKVaSCbP6dOn+f++//f893/4B3qPvV853tjcxme+8BAPPvIoO3bfgM/j5ro58tkX+nCpnmhuCHgqw0CTRdbeODlM80T7UjmHDweSJLIOjimRKRQJeix8bhe9Iyk2RQPcvqOF3uHUjPdd6weuUmtFA/4aWOriqFqaKZNncHCQH/zgB/T09PDmm29WjkcaG7nrs1/gmt+6l2tuvJVI0EdXS4hMweGazoZ57+V2CYf74wiGK9sj8/akZ3pIuF0umkM+kjmbt0+N4nK52NzsB4Sg143bLfTHs2xsClau3xjwzPhQS2RjujOUqksa8NfAUhdHrYRYLMaPf/xjenp6+MUvfjElV/72uz7Dgw9/iY/f9Wm8vnKwPT+eYTCR48oNkXnz2auHTm7Z2lx5n/OZ6RvIPbs30DuconckNVHHxkXWLtLVEsYNE8XL3NxU9TCZLT11PTxwlVoLywr4ItIM/COwDTgNPGqMGZ/hvNNAEigCjjFm73Lue6lb61WWmUyGn/zkJ/T09PCzn/2MwkSuvMfj4XOf+xzd3d088MADfDhaoOCU8E4ExojfQ1dLiCs3RBZUlmA5QyczBevGgIfekTRuV/nnoLFwIzilIscH0zSHvWxpDpL80MYYZp2MXU8PXKVW03J7+N8AXjbGfEtEvjHx+9dnOfduY8zIMu932VjtVZaFQoEXX3yRnp4enn766Sm58p/61Kfo7u7m4Ycfprm5ufJ3totnWYGx1nMV0aCXm7qa2NYc4uxYhpIxDCZyHB9M4vO6uWVbM2dH0/Pm3q/1A1eptbLcgP8gcNfEz/8N+CWzB/xLxuWSslcqlXj11Vfp6enhRz/60ay58p2dnTP+/cUGxpUq11Bte2uIWKZAV3OQsXSes6NFNjcF+cRVbSRyNo0BLyBciOfY2VGeX5jpG4WWNVD1aLkBf4Mx5gKAMeaCiMy8t1t529Cfi4gB/osx5onZLigijwOPA3R1dS2zeYt3qafsGWPYt28fPT09/OM//iP9/f2V12bLlZ/LQgPjSpZruLg95YeQ5Ra25m12bmigIeCl/0yWholFVolcea5AJ2OV+si8AV9EXgI6ZnjpzxZxn48bY/onHggvisgHxphXZzpx4mHwBMDevXsXs790TVyqKXvvv/9+pa78iRMnKse3bdtGd3c33d3dfOxjH1v2fWb79rPUcg1LMVMKJ0DYVy6ZDELYV95vVidjlfrIvAHfGPPp2V4TkUER6Zzo3XcCQ7Nco3/izyEReQq4FZgx4K+1lcyRr/VQ0enTp3nyySfp6enh0KFDleMbNmyo1JW/7bbbpqw2XU575vr2s5RyDbVQPQHb2ejnvfOxyhj+eimFrNR6sdwhnWeBfwV8a+LPZ6afICIhwGWMSU78/Bng/1jmfVfMSqXs1WqoaHBwkB/+8If09PTwxhtvVI5Ho1EeeeQRuru7ueuuu3C73TVvz1zfftYq1bF6iCdnF9m9sREAp2QI+lw6GatUleUG/G8BPxCRPwTOAl8CEJGNwP9rjLkf2AA8NdHLtIB/MMb88zLvu2JWKmVvWXvNxmI89dRT9PT08PLLL1dy5QOBwJS68j6fb8ntKZYM58eznBpJsaerecbe/lzffm7YEl2zVEedgFVqYZYV8I0xo8DvzHC8H7h/4ude4Ibl3Gc1rVTK3mKHijKZDD/96U/p6enh+eefn5Irf//991dy5cPh8LLbk8zZHBtI4LNcuHDNms44Vy9eUx2VWv90pe0MVqLHuJAhD9u2p9SVT6XKtWBEhLvvvpvu7m4eeeSRKbnykxY7Hl/dnv5YFr/HDQhhv8z67WO+bz/a01ZqfdOAv0pmC5ZXtTfyy1/+csZc+VtvvbWSK79x48ZZr72U8fjq9iRzNj7LTd4psrUlUmnj9G8f2otX6tKmAX+VVAfLsXSe8yeO8ObPn+X3f/wjzp8/Xzlv9+7dfOUrX+Gxxx5jx44dC7r2UuYHqttTAkoYdnZEKpuFzDbhqr14pS5dGvBX0YUzJ3mqp4eenp6LcuUfe+yxSq78bGmUs1lqKulk8J7s7btdgjFGa8sodZnSgL/Czpw5U8mVP3jwYOX4hg0bePTRR+nu7ub2229fdJCvttyUSB2qUao+aMBfAbPlyjc2Nk7Jlbes2nz8tUgl1aEapS5/GvBrJB6PV+rKT8+Vf+CBB+ju7ubee+9dVK78QmkPXSm1EBrwlyGbzVZy5Z977rlKrrxlWTXJlV+MyR76ZHrmwXOxS7rSp1Kq9jTgL5Jt21Pqylfnyt91112VXPmWlpZVb9ulXulTKbWyNOAvQKlU4rXXXqvkyo+OjlZeu+WWWyq58ps2bVrDVl66lT6VUqtDA/4sjDHs37+/Uld+eq78ZF35K6+8cg1bOdVKVvpUSl366jbgx2IxotHoRcc/+OADeiZy5Y8fP145vnXr1il15ZeTRrlSdHNupdRcLruAv5CaMt/61rf40z/9U7797W/zta99jbNnz1Zy5Q8cOFA5r729nUcffZSvfOUrS86VX83tEnVzbqXUXC6rgL+QScu/+qu/4pvf/CYiwtGjR7nzzjt5/fXXK9dobGzk4Ycfpru7m7vvvntZufKrPYmq6ZlKqbmIMau+i+CC7d271+zbt2/B5797dpyCU5oypJEpOHgtF3u6mvjLv/xLvv718h7rIuUyAlDOlf/CF75Ad3c39913X81y5edrj1JK1ZqI7DfG7J3ptcuqhz/XpOW3vvUtvvnNb055bdeuXfzRH/0RX/3qV4lEIqvaHqWUWm2utW5ALU1OWlabnLRMJpNTjhtjOHr0KH/3d3+3IsF+vvYopdRqu6x6+HNNWv7FX/wFX//61+nt7eXUqVP09vZy5swZ7rnnnjVpj1JKrbbLagwfVjcr5lJsj1Lq8lY3Y/iw/qo+rrf2KKXq12U1hq+UUmp2GvCVUqpOLCvgi8iXROSIiJREZMYxo4nz7hWRYyJyQkS+sZx7KqWUWprl9vAPAw8Dr852goi4gb8G7gN2A90isnuZ91VKKbVIy5q0NcYcBearMXMrcMIY0ztx7pPAg8D7y7m3UkqpxVmNMfxNwLmq3/smjs1IRB4XkX0ism94eHjFG6eUUvVi3h6+iLwEdMzw0p8ZY55ZwD1m6v7PmvxvjHkCeALKefgLuL5SSqkFmDfgG2M+vcx79AFbqn7fDPQv85pKKaUWaTWGdN4BrhKR7SLiBR4Dnl2F+yqllKqy3LTMh0SkD7gDeE5EXpg4vlFEngcwxjjA14AXgKPAD4wxR5bXbKWUUou13Cydp4CnZjjeD9xf9fvzwPPLuZdSSqnl0ZW2SilVJzTgK6VUndCAr5RSdUIDvlJK1QkN+EopVSc04CulVJ3QgK+UUnVCA75SStUJDfhKKVUnNOArpVSd0ICvlFJ1QgO+UkrVCQ34SilVJzTgK6VUndCAr5RSdUIDvlJK1QkN+EopVSc04CulVJ3QgK+UUnVCA75SStUJDfhKKVUnNOArpVSd0ICvlFJ1YlkBX0S+JCJHRKQkInvnOO+0iLwnIgdEZN9y7qmUUmpprGX+/cPAw8B/WcC5dxtjRpZ5P6WUUku0rIBvjDkKICK1aY1SSqkVs1pj+Ab4uYjsF5HH5zpRRB4XkX0ism94eHiVmqeUUpe/eXv4IvIS0DHDS39mjHlmgff5uDGmX0TagRdF5ANjzKsznWiMeQJ4AmDv3r1mgddXSik1j3kDvjHm08u9iTGmf+LPIRF5CrgVmDHgK6WUWhkrPqQjIiERiUz+DHyG8mSvUkqpVbTctMyHRKQPuAN4TkRemDi+UUSenzhtA/ArETkI/Bp4zhjzz8u5r1JKqcVbbpbOU8BTMxzvB+6f+LkXuGE591FKKbV8utJWKaXqhAZ8pZSqExrwlVKqTmjAV0qpOqEBXyml6oQGfKWUqhNizPqtXiAiw8CZtW7HErQC9VoZVN97fdL3vn5sNca0zfTCug74lyoR2WeMmXV/gMuZvnd97/XmUnrvOqSjlFJ1QgO+UkrVCQ34K+OJtW7AGtL3Xp/0vV8CdAxfKaXqhPbwlVKqTmjAV0qpOqEBf4WIyH8SkQ9E5JCIPCUi0bVu02oRkS+JyBERKYnIJZGuthwicq+IHBOREyLyjbVuz2oSke+JyJCI1NWmRiKyRUT+RUSOTvx//d+vdZsWQgP+ynkRuM4Ycz3wIfDNNW7PajoMPEwdbGMpIm7gr4H7gN1At4jsXttWraq/Be5d60asAQf4X40xu4DbgT+5FP69a8BfIcaYnxtjnIlf3wI2r2V7VpMx5qgx5that2OV3AqcMMb0GmMKwJPAg2vcplVjjHkVGFvrdqw2Y8wFY8xvJn5OAkeBTWvbqvlpwF8d/wb42Vo3Qq2ITcC5qt/7uAT+w1e1IyLbgD3A22vbkvkta4vDeiciLwEdM7z0Z8aYZybO+TPKX//+fjXbttIW8t7rhMxwTHOd64SIhIF/Av4XY0xirdszHw34y2CM+fRcr4vIvwI+D/yOucwWPMz33utIH7Cl6vfNQP8atUWtIhHxUA72f2+M+fFat2chdEhnhYjIvcDXgQeMMZm1bo9aMe8AV4nIdhHxAo8Bz65xm9QKExEB/itw1Bjzf651exZKA/7K+Q4QAV4UkQMi8t21btBqEZGHRKQPuAN4TkReWOs2rZSJifmvAS9Qnrj7gTHmyNq2avWISA/wJrBTRPpE5A/Xuk2r5OPA7wOfmvjv+4CI3L/WjZqPllZQSqk6oT18pZSqExrwlVKqTmjAV0qpOqEBXyml6oQGfKWUqhMa8JVSqk5owFdKqTrx/wO1nVxai3ZjhwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:, 0], X[:, 1], alpha=0.2) \n",
    "for length, vector in zip(pca_test.explained_variance_, pca_test.components_): \n",
    "    v = vector * 3 * np.sqrt(length) \n",
    "    draw_vector(pca_test.mean_, pca_test.mean_ + v) \n",
    "    plt.axis('equal')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用PCA降维意味着去除一个或多个最小主成分,得到一个更低维度且保留最大数据方差的数据投影\n",
    "\n",
    "上面这些向量表示数据主轴,箭头的长度表示输入数据各个轴的重要程度。\n",
    "\n",
    "更准确的说,它衡量了数据投影到主轴上的方差的大小。\n",
    "\n",
    "每个数据点在主轴上的投影就是数据的主成分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "original shape: (200, 2)\n",
      "transformed shape: (200, 1)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(-2.771528780690219, 2.661757596590678, -0.9964674432667128, 1.021908177590081)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pca_t = PCA(n_components=1)\n",
    "pca_t.fit(X)\n",
    "X_pca = pca_t.transform(X)\n",
    "print(\"original shape:\", X.shape)\n",
    "print(\"transformed shape:\", X_pca.shape)\n",
    "('original shape:', (200, 2))\n",
    "('transformed shape:', (200, 1))\n",
    "X_new = pca_t.inverse_transform(X_pca)\n",
    "plt.scatter(X[:,0],X[:,1],alpha=0.2)\n",
    "plt.scatter(X_new[:,0],X_new[:,1],alpha=0.8)\n",
    "plt.axis('equal')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为什么长的向量比短的向量好?有两种解释,\n",
    "\n",
    "- 第一种解释是样本点到这个直线的距离足够近,**基于最小投影距离**\n",
    "\n",
    "- 第二种解释是样本点在这个直线上的投影尽可能的分开,**基于最大投影方差**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-1、内积\n",
    "\n",
    "![title](img/14.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/15.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/16.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-2、基\n",
    "\n",
    "![title](img/17.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/18.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "基的性质\n",
    "- 基是正交的,内积为0,或者互相垂直\n",
    "\n",
    "- 线性无关"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/19.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-3、基变换的矩阵表示\n",
    "\n",
    "![title](img/20.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-4、协方差矩阵及优化目标\n",
    "\n",
    "![title](img/21.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "两种方法\n",
    "- 基于最小投影距离\n",
    "\n",
    "- 基于最大投影方差"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/22.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/23.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-5、方差\n",
    "![title](img/24.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-6、协方差\n",
    "\n",
    "![title](img/26.JPG)\n",
    "\n",
    "![title](img/25.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-7、协方差矩阵\n",
    "\n",
    "![title](img/27.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-8、协方差矩阵对角化\n",
    "\n",
    "![title](img/28.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1-9、算法及实例\n",
    "\n",
    "![title](img/29.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/30.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/31.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/43.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/44.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-10、代码讲解\n",
    "\n",
    "### python 实现PCA降维"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.导入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris_data = pd.read_csv(\"iris.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Number</th>\n",
       "      <th>Sepal.Length</th>\n",
       "      <th>Sepal.Width</th>\n",
       "      <th>Petal.Length</th>\n",
       "      <th>Petal.Width</th>\n",
       "      <th>Species</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Number  Sepal.Length  Sepal.Width  Petal.Length  Petal.Width Species\n",
       "0       1           5.1          3.5           1.4          0.2  setosa\n",
       "1       2           4.9          3.0           1.4          0.2  setosa\n",
       "2       3           4.7          3.2           1.3          0.2  setosa\n",
       "3       4           4.6          3.1           1.5          0.2  setosa\n",
       "4       5           5.0          3.6           1.4          0.2  setosa"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = iris_data.iloc[:,1:5].values\n",
    "y = iris_data.iloc[:,5].values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "特征可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "label_dict = {1:'setosa',2:'versicolor',3:\"virginica\"}\n",
    "\n",
    "feature_dict = {0:\"sepal length [cm]\",1:\"sepal width [cm]\",2:\"petal length\",3:\"petal width [cm]\"}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,6))\n",
    "for cnt in range(4):\n",
    "    plt.subplot(2,2,cnt + 1)\n",
    "    for lab in ('setosa','versicolor','virginica'):\n",
    "        plt.hist(X[y == lab, cnt], label=lab, bins=10,alpha = 0.3)\n",
    "        plt.xlabel(feature_dict[cnt])\n",
    "        plt.legend(loc='upper right', fancybox=True, fontsize = 8)\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "X_std = StandardScaler().fit_transform(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "计算协方差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "协方差矩阵 \n",
      " [[ 1.00671141 -0.11835884  0.87760447  0.82343066]\n",
      " [-0.11835884  1.00671141 -0.43131554 -0.36858315]\n",
      " [ 0.87760447 -0.43131554  1.00671141  0.96932762]\n",
      " [ 0.82343066 -0.36858315  0.96932762  1.00671141]]\n"
     ]
    }
   ],
   "source": [
    "mean_vec = np.mean(X_std, axis=0)\n",
    "cov_mat = (X_std - mean_vec).T.dot((X_std - mean_vec)) / (X_std.shape[0] - 1)\n",
    "print('协方差矩阵 \\n %s' % cov_mat)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Numpy 计算协方差矩阵 : \n",
      " [[ 1.00671141 -0.11835884  0.87760447  0.82343066]\n",
      " [-0.11835884  1.00671141 -0.43131554 -0.36858315]\n",
      " [ 0.87760447 -0.43131554  1.00671141  0.96932762]\n",
      " [ 0.82343066 -0.36858315  0.96932762  1.00671141]]\n"
     ]
    }
   ],
   "source": [
    "print('Numpy 计算协方差矩阵 : \\n %s' % np.cov(X_std.T))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "特征值 \n",
      " [2.93808505 0.9201649  0.14774182 0.02085386]\n",
      "\n",
      " 特征向量 \n",
      " [[ 0.52106591 -0.37741762 -0.71956635  0.26128628]\n",
      " [-0.26934744 -0.92329566  0.24438178 -0.12350962]\n",
      " [ 0.5804131  -0.02449161  0.14212637 -0.80144925]\n",
      " [ 0.56485654 -0.06694199  0.63427274  0.52359713]]\n"
     ]
    }
   ],
   "source": [
    "cov_mat = np.cov(X_std.T)\n",
    "# 计算特征值和特征向量\n",
    "eig_vals, eig_vecs = np.linalg.eig(cov_mat)\n",
    "\n",
    "print('特征值 \\n %s' % eig_vals)\n",
    "print('\\n 特征向量 \\n %s' % eig_vecs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(2.9380850501999944, array([ 0.52106591, -0.26934744,  0.5804131 ,  0.56485654])), (0.9201649041624874, array([-0.37741762, -0.92329566, -0.02449161, -0.06694199])), (0.14774182104494807, array([-0.71956635,  0.24438178,  0.14212637,  0.63427274])), (0.02085386217646228, array([ 0.26128628, -0.12350962, -0.80144925,  0.52359713]))]\n",
      "-------\n",
      "特征值由大到小排序 \n",
      "2.9380850501999944\n",
      "0.9201649041624874\n",
      "0.14774182104494807\n",
      "0.02085386217646228\n"
     ]
    }
   ],
   "source": [
    "# 特征值和特征向量对应起来\n",
    "eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:,i]) for i in range(len(eig_vals))]\n",
    "print(eig_pairs)\n",
    "print(\"-------\")\n",
    "# 按照特征值的大小进行排序\n",
    "eig_pairs.sort(key= lambda x : x[0], reverse=True)\n",
    "# 打印排序结果\n",
    "print('特征值由大到小排序 ')\n",
    "for i in eig_pairs:\n",
    "    print(i[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[72.96244541329987, 22.850761786701774, 3.668921889282877, 0.51787091071548]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([ 72.96244541,  95.8132072 ,  99.48212909, 100.        ])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算累加结果\n",
    "tot = sum(eig_vals)\n",
    "var_exp = [(i/tot)* 100 for i in sorted(eig_vals, reverse=True)]\n",
    "print(var_exp)\n",
    "cum_var_exp = np.cumsum(var_exp)\n",
    "cum_var_exp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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duzYwaBBg3jllVd46623+Pzzz/fZr27durRp04Y333wTgFdeeYUePXpQo0aNxDZRjpPME088wYIFCygsLGTkyJGJfgOT+fLLL7nvvvuYMWMGCxcupKCggAcffJC6devyhz/8gQEDBvDcc8/xz3/+k0GDBgFBAsnPz2fhwoV07tw56bhPgwcP5r333mPp0qVs3749MRRISfXr12fhwoXccMMNiYR7//33c/bZZ/Pee+8xa9Ys7rzzTr755hseeeQRatWqxZIlSxg6dGii78LiunXrxrvvvss33wSd90yYMCHRxdP9999PYWEhS5Ys4c0332TJkh/qDNnZ2bz99tv07ds38nXs3r2b+fPn89BDDyXKYMyYMaxevZpFixaxZMkSrrzySnbt2sXNN9/MpEmTWLBgAddccw1Dhw5N+W9yIJSZoNz9zfA230nAGOBygoYSInKIKBoWIisrKzEsxIcffkjjxo05+eSTMTP69++fdN8+ffowYcIEgL2GwigS9TgljRw5kjZt2tC+fXv+8Y9/sGrVqpTbvvvuuyxfvpyOHTuSl5fHuHHjEh2fduvWjdatW3PTTTfx2GOPJfbJyspKxNq/f/9EJ63FzZo1i9NOO43WrVvzxhtvsGzZsqTnv+SSYFSiomEpIKjRDR8+nLy8PLp06cKOHTtYu3Ytc+bMSZRBbm4uubm5+xyvevXqnHvuubzyyivs3r2bP//5z/Tq1QuAiRMnkp+fzymnnMKyZcv2Gm6kZNlHuY5ksc+YMYNf/vKXVK8ePAWqV68eH330UWKYkLy8PO677z7WrVuX9HwHStQXdWsSDLvRB8gHxqUzKBGpXMmGhYB9h5lIpmfPntx1111s3ryZBQsWcPbZZ++zTarjFB+eA0gM9TB79mxmzJjBO++8Q61atRK/4FNxd7p168azzz67z7o9e/awYsUKatasyebNmxPjM5UV444dO7jxxhspLCzkhBNO4O67704ZQ1H5FS87d2fy5Mk0bdq0zHMl06dPHx5++GHq1atH27ZtqV27NqtXr+aBBx7gvffe46ijjmLAgAF7xZSsg9iyriNV7CVjTDVMSDpFeQY1AVgBnA08DPzE3W9Od2AiklnNmjVj9erViSG9k/3yh+BZTrt27bj11lu58MILqVatWuTj5OTksHDhQgAWLlzI6tWrgWAYiKOOOopatWrx4Ycf8u67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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(6,4))\n",
    "plt.bar(range(4), var_exp,alpha = 0.5, align='center', label = 'individual explained variance')\n",
    "plt.step(range(4), cum_var_exp, where='mid', label= 'cumulative explained variance')\n",
    "plt.ylabel(\"Explained variance ratio\")\n",
    "plt.xlabel(\"Principal components\")\n",
    "plt.legend(loc='best')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "matrix_w = np.hstack((eig_pairs[0][1].reshape(4,1),eig_pairs[1][1].reshape(4,1)))\n",
    "\n",
    "Y = X_std.dot(matrix_w)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-2.26470281, -0.4800266 ],\n",
       "       [-2.08096115,  0.67413356],\n",
       "       [-2.36422905,  0.34190802],\n",
       "       [-2.29938422,  0.59739451],\n",
       "       [-2.38984217, -0.64683538],\n",
       "       [-2.07563095, -1.48917752],\n",
       "       [-2.44402884, -0.0476442 ],\n",
       "       [-2.23284716, -0.22314807],\n",
       "       [-2.33464048,  1.11532768],\n",
       "       [-2.18432817,  0.46901356],\n",
       "       [-2.1663101 , -1.04369065],\n",
       "       [-2.32613087, -0.13307834],\n",
       "       [-2.2184509 ,  0.72867617],\n",
       "       [-2.6331007 ,  0.96150673],\n",
       "       [-2.1987406 , -1.86005711],\n",
       "       [-2.26221453, -2.68628449],\n",
       "       [-2.2075877 , -1.48360936],\n",
       "       [-2.19034951, -0.48883832],\n",
       "       [-1.898572  , -1.40501879],\n",
       "       [-2.34336905, -1.12784938],\n",
       "       [-1.914323  , -0.40885571],\n",
       "       [-2.20701284, -0.92412143],\n",
       "       [-2.7743447 , -0.45834367],\n",
       "       [-1.81866953, -0.08555853],\n",
       "       [-2.22716331, -0.13725446],\n",
       "       [-1.95184633,  0.62561859],\n",
       "       [-2.05115137, -0.24216355],\n",
       "       [-2.16857717, -0.52714953],\n",
       "       [-2.13956345, -0.31321781],\n",
       "       [-2.26526149,  0.3377319 ],\n",
       "       [-2.14012214,  0.50454069],\n",
       "       [-1.83159477, -0.42369507],\n",
       "       [-2.61494794, -1.79357586],\n",
       "       [-2.44617739, -2.15072788],\n",
       "       [-2.10997488,  0.46020184],\n",
       "       [-2.2078089 ,  0.2061074 ],\n",
       "       [-2.04514621, -0.66155811],\n",
       "       [-2.52733191, -0.59229277],\n",
       "       [-2.42963258,  0.90418004],\n",
       "       [-2.16971071, -0.26887896],\n",
       "       [-2.28647514, -0.44171539],\n",
       "       [-1.85812246,  2.33741516],\n",
       "       [-2.5536384 ,  0.47910069],\n",
       "       [-1.96444768, -0.47232667],\n",
       "       [-2.13705901, -1.14222926],\n",
       "       [-2.0697443 ,  0.71105273],\n",
       "       [-2.38473317, -1.1204297 ],\n",
       "       [-2.39437631,  0.38624687],\n",
       "       [-2.22944655, -0.99795976],\n",
       "       [-2.20383344, -0.00921636],\n",
       "       [ 1.10178118, -0.86297242],\n",
       "       [ 0.73133743, -0.59461473],\n",
       "       [ 1.24097932, -0.61629765],\n",
       "       [ 0.40748306,  1.75440399],\n",
       "       [ 1.0754747 ,  0.20842105],\n",
       "       [ 0.38868734,  0.59328364],\n",
       "       [ 0.74652974, -0.77301931],\n",
       "       [-0.48732274,  1.85242909],\n",
       "       [ 0.92790164, -0.03222608],\n",
       "       [ 0.01142619,  1.03401828],\n",
       "       [-0.11019628,  2.65407282],\n",
       "       [ 0.44069345,  0.06329519],\n",
       "       [ 0.56210831,  1.76472438],\n",
       "       [ 0.71956189,  0.18622461],\n",
       "       [-0.0333547 ,  0.43900321],\n",
       "       [ 0.87540719, -0.50906396],\n",
       "       [ 0.35025167,  0.19631173],\n",
       "       [ 0.15881005,  0.79209574],\n",
       "       [ 1.22509363,  1.6222438 ],\n",
       "       [ 0.1649179 ,  1.30260923],\n",
       "       [ 0.73768265, -0.39657156],\n",
       "       [ 0.47628719,  0.41732028],\n",
       "       [ 1.2341781 ,  0.93332573],\n",
       "       [ 0.6328582 ,  0.41638772],\n",
       "       [ 0.70266118,  0.06341182],\n",
       "       [ 0.87427365, -0.25079339],\n",
       "       [ 1.25650912,  0.07725602],\n",
       "       [ 1.35840512, -0.33131168],\n",
       "       [ 0.66480037,  0.22592785],\n",
       "       [-0.04025861,  1.05871855],\n",
       "       [ 0.13079518,  1.56227183],\n",
       "       [ 0.02345269,  1.57247559],\n",
       "       [ 0.24153827,  0.77725638],\n",
       "       [ 1.06109461,  0.63384324],\n",
       "       [ 0.22397877,  0.28777351],\n",
       "       [ 0.42913912, -0.84558224],\n",
       "       [ 1.04872805, -0.5220518 ],\n",
       "       [ 1.04453138,  1.38298872],\n",
       "       [ 0.06958832,  0.21950333],\n",
       "       [ 0.28347724,  1.32932464],\n",
       "       [ 0.27907778,  1.12002852],\n",
       "       [ 0.62456979, -0.02492303],\n",
       "       [ 0.33653037,  0.98840402],\n",
       "       [-0.36218338,  2.01923787],\n",
       "       [ 0.28858624,  0.85573032],\n",
       "       [ 0.09136066,  0.18119213],\n",
       "       [ 0.22771687,  0.38492008],\n",
       "       [ 0.57638829,  0.1548736 ],\n",
       "       [-0.44766702,  1.54379203],\n",
       "       [ 0.25673059,  0.5988518 ],\n",
       "       [ 1.84456887, -0.87042131],\n",
       "       [ 1.15788161,  0.69886986],\n",
       "       [ 2.20526679, -0.56201048],\n",
       "       [ 1.44015066,  0.04698759],\n",
       "       [ 1.86781222, -0.29504482],\n",
       "       [ 2.75187334, -0.8004092 ],\n",
       "       [ 0.36701769,  1.56150289],\n",
       "       [ 2.30243944, -0.42006558],\n",
       "       [ 2.00668647,  0.71143865],\n",
       "       [ 2.25977735, -1.92101038],\n",
       "       [ 1.36417549, -0.69275645],\n",
       "       [ 1.60267867,  0.42170045],\n",
       "       [ 1.8839007 , -0.41924965],\n",
       "       [ 1.2601151 ,  1.16226042],\n",
       "       [ 1.4676452 ,  0.44227159],\n",
       "       [ 1.59007732, -0.67624481],\n",
       "       [ 1.47143146, -0.25562182],\n",
       "       [ 2.42632899, -2.55666125],\n",
       "       [ 3.31069558, -0.01778095],\n",
       "       [ 1.26376667,  1.70674538],\n",
       "       [ 2.0377163 , -0.91046741],\n",
       "       [ 0.97798073,  0.57176432],\n",
       "       [ 2.89765149, -0.41364106],\n",
       "       [ 1.33323218,  0.48181122],\n",
       "       [ 1.7007339 , -1.01392187],\n",
       "       [ 1.95432671, -1.0077776 ],\n",
       "       [ 1.17510363,  0.31639447],\n",
       "       [ 1.02095055, -0.06434603],\n",
       "       [ 1.78834992,  0.18736121],\n",
       "       [ 1.86364755, -0.56229073],\n",
       "       [ 2.43595373, -0.25928443],\n",
       "       [ 2.30492772, -2.62632347],\n",
       "       [ 1.86270322,  0.17854949],\n",
       "       [ 1.11414774,  0.29292262],\n",
       "       [ 1.2024733 ,  0.81131527],\n",
       "       [ 2.79877045, -0.85680333],\n",
       "       [ 1.57625591, -1.06858111],\n",
       "       [ 1.3462921 , -0.42243061],\n",
       "       [ 0.92482492, -0.0172231 ],\n",
       "       [ 1.85204505, -0.67612817],\n",
       "       [ 2.01481043, -0.61388564],\n",
       "       [ 1.90178409, -0.68957549],\n",
       "       [ 1.15788161,  0.69886986],\n",
       "       [ 2.04055823, -0.8675206 ],\n",
       "       [ 1.9981471 , -1.04916875],\n",
       "       [ 1.87050329, -0.38696608],\n",
       "       [ 1.56458048,  0.89668681],\n",
       "       [ 1.5211705 , -0.26906914],\n",
       "       [ 1.37278779, -1.01125442],\n",
       "       [ 0.96065603,  0.02433167]])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(6,4))\n",
    "for lab, col, marker in zip(('setosa','versicolor','virginica'),('blue','red','green'),('^','s','o')):\n",
    "    plt.scatter(X[y==lab, 0], X[y==lab,1], marker=marker, label = lab, c = col)\n",
    "plt.ylabel(\"Sepal_len\")\n",
    "plt.xlabel(\"Sepal_wid\")\n",
    "plt.legend(loc='best')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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qyciUlpRXYP6v8BI4DdmtszM/i2iOAqmvnoiIqUVVRXfJ9z94+5+eGKbHUUchSp113ORfHzve9/j0Ucfzft5Tz75JKeddloJIhIpjjhU8VUc9dWrEaNGgVn/bdSosofi7vT0bWuR8P3vf58ZM7Je8i2KHTt25H6QSBEpQeVJffVqSKLNUOj9IVx++eX89Kc/3XV73rx5/OhHP+Laa6/lqKOOYtKkSVx99dUAdHR08KlPfYo5c+ZwxBFH8MYbb3DxxRdz2GGH0dTUtKtrxMUXX8yiRYsAWLJkCZ/+9KeZPHkyRx99NJs3b+b9999n5syZNDU1MWXKFJ544ol+cW3cuJHPf/7zTJo0iWnTprFixYpd8bW0tHDSSSdx4YUXFvy+RQqhBJUn9dWTgTj//PO55557dt2+9957GTt2LH/60594/vnnWbZsGW1tbTz11FNA0MX8wgsv5A9/+APvvPMOa9euZeXKlbS3tzNz5sxex96+fTvnnXce//qv/8ry5ct59NFHGT58ONcn+jK1t7fz85//nIsuuqhf89irr76aKVOmsGLFCv7pn/6pVzJqa2tj8eLF/Pu//3upfiwiaSlB5amUXc+l+k2ZMoW3336bdevWsXz5cj7ykY+wYsUKHnnkEaZMmcIRRxzBH//4R/70pz8B0NDQwLRp0wA44IADeO2117j00kv51a9+xag+pxpffvll9ttvP4466igARo0axZAhQ/jd737HBRdcAARNZxsaGnjllVd6PTf1MZ/73OfYsGED3d3dAJxxxhkMHz68dD8UkQwiaRZbyYrR3Vxq2znnnMOiRYt48803Of/88+no6ODKK6/kK1/5Sq/HdXR0sOeee+66/ZGPfITly5fz61//muuvv557772XW265Zdf97o6Z9Xu9MNMM0z0meazUGETKSSMokTI7//zzufvuu1m0aBHnnHMOJ598MrfccgtbtmwBYO3atbz99tv9nvfOO+/Q09PD2Wefzfz583nhhRd63X/IIYewbt06lixZAsDmzZvZsWMHxx9/PK2tQbOWV155hTVr1nDwwQf3em7qY5588kn22WeffiM0kXLTCEokk5Ej0xdEjBw5oMNOnDiRzZs3M27cOPbbbz/2228/XnrpJY499lgARowYwV133cXgwYN7PW/t2rXMnDlzVzXfP//zP/e6f+jQodxzzz1ceumlbNu2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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(6,4))\n",
    "for lab, col, marker in zip(('setosa','versicolor','virginica'),('blue','red','green'),('^','s','o')):\n",
    "    plt.scatter(Y[y==lab, 0], Y[y==lab,1], marker=marker, label = lab, c = col)\n",
    "plt.ylabel(\"Principal Component 1\")\n",
    "plt.xlabel(\"Principal Component 2\")\n",
    "plt.legend(loc='lower center')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 图像示例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Ariel Sharon' 'Colin Powell' 'Donald Rumsfeld' 'George W Bush'\n",
      " 'Gerhard Schroeder' 'Hugo Chavez' 'Junichiro Koizumi' 'Tony Blair']\n",
      "(1348, 62, 47)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns; \n",
    "from sklearn.datasets import fetch_lfw_people\n",
    "faces = fetch_lfw_people(min_faces_per_person=60)\n",
    "print(faces.target_names)\n",
    "print(faces.images.shape)\n",
    "\n",
    "n_samples, h, w = faces.images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PCA(copy=True, iterated_power='auto', n_components=150, random_state=None,\n",
       "    svd_solver='auto', tol=0.0, whiten=False)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca_demo = PCA(150)\n",
    "pca_demo.fit(faces.data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 648x288 with 24 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,axes = plt.subplots(3,8, figsize=(9,4),\n",
    "                   subplot_kw={'xticks':[],'yticks':[]},\n",
    "                    gridspec_kw = dict(hspace=0.1, wspace=0.1)\n",
    "                       )\n",
    "for i,ax in enumerate(axes.flat):\n",
    "    ax.imshow(pca_demo.components_[i].reshape(62,47),cmap='bone')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "invalid character in identifier (<ipython-input-30-1580ae8d6bde>, line 1)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;36m  File \u001b[1;32m\"<ipython-input-30-1580ae8d6bde>\"\u001b[1;36m, line \u001b[1;32m1\u001b[0m\n\u001b[1;33m    前面的特征对应了光照,后面的特征对应了某些人脸的特征,例如,鼻子,眼睛等\u001b[0m\n\u001b[1;37m                                       ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid character in identifier\n"
     ]
    }
   ],
   "source": [
    "前面的特征对应了光照,后面的特征对应了某些人脸的特征,例如,鼻子,眼睛等"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'cumulative explained variance')"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(np.cumsum(pca_demo.explained_variance_ratio_))\n",
    "plt.grid()\n",
    "plt.xlabel('number of components')\n",
    "plt.ylabel('cumulative explained variance')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "前150个主成分包含了90%的方差,我们可以比较实用前150个主成分重构的图像和原来图像的区别\n",
    "\n",
    "关于成分的数量,可以将累计方差贡献率看作是关于成分数量的函数,从而确定需要成分的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "kernel PCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.spatial.distance import pdist, squareform\n",
    "from scipy import exp\n",
    "from scipy.linalg import eigh\n",
    "import numpy as np\n",
    "\n",
    "def rbf_kernel_pca(X, gamma, n_components):\n",
    "    \"\"\"\n",
    "    RBF kernel PCA implementation.\n",
    "\n",
    "    Parameters\n",
    "    ------------\n",
    "    X: {NumPy ndarray}, shape = [n_samples, n_features]\n",
    "        \n",
    "    gamma: float\n",
    "      Tuning parameter of the RBF kernel\n",
    "        \n",
    "    n_components: int\n",
    "      Number of principal components to return\n",
    "\n",
    "    Returns\n",
    "    ------------\n",
    "     X_pc: {NumPy ndarray}, shape = [n_samples, k_features]\n",
    "       Projected dataset   \n",
    "\n",
    "    \"\"\"\n",
    "    # Calculate pairwise squared Euclidean distances\n",
    "    # in the MxN dimensional dataset.\n",
    "    sq_dists = pdist(X, 'sqeuclidean')\n",
    "\n",
    "    # Convert pairwise distances into a square matrix.\n",
    "    mat_sq_dists = squareform(sq_dists)\n",
    "\n",
    "    # Compute the symmetric kernel matrix.\n",
    "    K = exp(-gamma * mat_sq_dists)\n",
    "\n",
    "    # Center the kernel matrix.\n",
    "    N = K.shape[0]\n",
    "    one_n = np.ones((N, N)) / N\n",
    "    K = K - one_n.dot(K) - K.dot(one_n) + one_n.dot(K).dot(one_n)\n",
    "\n",
    "    # Obtaining eigenpairs from the centered kernel matrix\n",
    "    # scipy.linalg.eigh returns them in ascending order\n",
    "    eigvals, eigvecs = eigh(K)\n",
    "    eigvals, eigvecs = eigvals[::-1], eigvecs[:, ::-1]\n",
    "\n",
    "    # Collect the top k eigenvectors (projected samples)\n",
    "    X_pc = np.column_stack((eigvecs[:, i]\n",
    "                            for i in range(n_components)))\n",
    "\n",
    "    return X_pc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAcqElEQVR4nO3df6wc13ne8ecxJblopch0dS3J/FEqBuVKCehGvZHdGm2oOIolJgodwgbktLarqCBYWYUNlKiZFkwEGAEUwQ5Ut7IIwhEqIz8EI2ZiVqatyIYNOwhs6NKlaNGsIlZRqFsS0ZUl0FRdQGD09o/dGy6vdmf37s7unHPm+wEu7t2Z4c7ZnXP25Zx531lHhAAASM0bmm4AAAD9EKAAAEkiQAEAkkSAAgAkiQAFAEjSRU03oMoVV1wRmzZtaroZAIApOnz48IsRMbdyedIBatOmTVpYWGi6GQCAKbL91/2WM8UHAEgSAQoAkCQCFAAgSQQoAECSCFAAgCQRoAAASSJAAQCSRIACACSJAAUASFItAcr2Q7ZfsP3UgPW2/RnbJ2wftX1DHftF5s6ele67T3rllfrWjbIeQBbqOoP675JuqVh/q6TN3Z+dkh6sab/I2Te+IX37253fda0bZT2ALNQSoCLiW5Jeqthku6TPR8d3JL3J9tV17BsJG3YW9OUvS9deKz366IXbjLtu1PWcXQFZmNU1qHWSnu95vNhd9jq2d9pesL2wtLQ0k8ZhAlUf+MPOgl59Vbrsss7v3m3GXTfq+kFtIngBSZlVgHKfZdFvw4jYHxHzETE/N/e6u68jNYM+8Ec5C7rqqs7jq646v82464Y977A2Vb0WAI2YVYBalLSh5/F6SadmtG9MS9UH/ihnQW98Y+fxG994fptx1w173mFtGha8AMzcrALUQUkf7mbzvUvSmYg4PaN9Y1KDpr4GfeAPO5N58kkpQnruufM/EdKRI+OvG/a8w9o0bGqQ6T9g5mr5wkLbfyRpq6QrbC9K+i1JF0tSROyTdEjSNkknJP1Y0h117Bczsjz1dd110m23dZYN+sC/6abqM5nbbpP27p1OO6ue9+DBwW3aunXwa7n00s6yfu8BgKmqJUBFxAeHrA9JH61jX5ixlVNfyx/aVUGo90ym15EjzX24V7UpojqgDnoPAExV0l/5jhk6e1Z68EHprrsu/PDtnfp66aXzH9pVH/jTOkOaRFWbPvnJ6oA66D1YNui9AzARAhQ6VjuNl2IQGlfVa6l6D5j+A6aKe/FhcAbbsKy4Nhj2HpD9B0wNAapt+mWjDcpgG5Y11wbD3gOy/4CpYYqvbVZOR7VlGm9cTP8BjeEMqk36TUcxjTc+pv+AqSJAtUm/6Sim8cY36fQfgEpM8bXFoOmoT3+a1OhxTTr9B6ASZ1AlqkqEYCpvNkaZ/iN5AqhEgCpRv7tyM5U3W6NM/3HndKCSO3chStP8/HwsLCw03Yy8nD0r7d7dmUZ65RWm8FLEMQIuYPtwRMyvXM4ZVGm4MJ8+jhEwEgJUzlZexxj2lRJo3ijHiOtTgCQCVN5WXscgESJ9oxwjrk8BkghQ+epXBEoiRPqGHSOKe4G/Qx1Urvp9BQS3JkrfsGM07Ks9gBbhDCpHXGsqE8cVuAABKnUU3bYHxb3ABQhQqaPotj0o7gUuQKFuyijoxDL6Ago21UJd27fYftr2Cdt7+qy/3Pb/sP2k7WO276hjv8WjoBPL6AtooYkDlO01kh6QdKuk6yV90Pb1Kzb7qKQfRMQ7JG2V9Gnbl0y676JxwRzL6AtoqTrOoG6UdCIino2IVyU9Imn7im1C0mW2LelSSS9JOlfDvstFIgSW0RfQUnUEqHWSnu95vNhd1uu/SbpO0ilJ35f0sYh4rd+T2d5pe8H2wtLSUg3Ny0hvlhaJEFg2SnEv2X0oUB2Fuu6zbGXmxXslHZH085LeJulx29+OiB+97h9G7Je0X+okSdTQvnwsZ2lddx1FtzhvlOLe5X5DUS8KUscZ1KKkDT2P16tzptTrDkkHouOEpL+S9I9r2Hc5uMUNxkG/QcHqCFBPSNps+5pu4sPtkg6u2OakpPdIku0rJb1d0rM17LscZGlhHPQbFGziABUR5yTdLekxScclfSEijtneZXtXd7NPSvrntr8v6euSPhERL06672KQpYVx0G9QuFpuFhsRhyQdWrFsX8/fpyT9Yh37KlJVlhbXFDAI/QaF41ZHTViZdUXGHsZR1W/I7EMB+LqNJqzMuiJjD+Oo6jcHD5LZh+xxBjVrZF1h2uhjKAQBatbIusK00cdQCALULJF1hWmjj6EgBKhZ4p5qmDb6GApCgJolsvUwbfQxFIQvLJy2s2elBx+U7rqLL5hDs+iLSNRUv7AQFfiabqSCvojMEKCmiXRfpIK+iAwRoKaJdF+kgr6IDBGgpoV0X6SCvohMEaCmhXRfpIK+iEwRoKaFdF+kgr6ITJFmXifSeJEb+iwSQJr5LJDGi9zQZ5EwAlRdSONFbuizSBwBqi6k8SI39FkkjgBVB9J4kRv6LDJAgKoDabzIDX0WGSBA1YE0XuSGPosM1JJmbvsWSf9F0hpJn4uIe/tss1XS/ZIulvRiRPzcsOdNOs2c9FyUir6NGZtamrntNZIekHSrpOslfdD29Su2eZOkz0r6lYj4KUkfmHS/jSM9F6WibyMRdUzx3SjpREQ8GxGvSnpE0vYV2/yapAMRcVKSIuKFGvbbHNJzUSr6NhJSR4BaJ+n5nseL3WW9rpW01vY3bR+2/eFBT2Z7p+0F2wtLS0s1NG8KSM9FqejbSEgdAcp9lq28sHWRpH8q6ZckvVfSXtvX9nuyiNgfEfMRMT83N1dD82pGei5KRd9GYuoIUIuSNvQ8Xi/pVJ9tvhoR/zciXpT0LUnvqGHfs0d6LkpF30Zi6ghQT0jabPsa25dIul3SwRXbfEnSv7B9ke2/L+mdko7XsO/ZIz0XpaJvIzEXTfoEEXHO9t2SHlMnzfyhiDhme1d3/b6IOG77q5KOSnpNnVT0pybddyP27m26BcB00LeRGL5uY1TUhqCt6PuYMr5uY1LUhqCt6PtoCAFqFNSGoK3o+2gQAWoU1Iagrej7aBABahhqQ9BW9H00jAA1DLUhaCv6PhpGgBqG2hC0FX0fDSPNHMk7elQ6cEA6eVLauFHasUPasqXpVgHtM62xSJr5ap09K913H/PtDTt6VPrUp6SXX5bWr+/8/tSnOsvREMZGKzUxFglQg1D7kYQDB6S1azs/b3jD+b8PHGi6ZS3G2GilJsYiAaofaj+ScfKkdPnlFy67/PLOcjSAsdFaTYxFAlQ/1H4kY+NG6cyZC5edOdNZjgYwNlqribFIgFqJ2o+k7NjRmet++WXptdfO/71jR9MtayHGRqs1MRYJUCtR+5GULVuk3bs7c92Li53fu3eTxdcIxkarNTEWJ/66jeL01n70OnJEuu22RprUdlu2EJCSwNhovVmPReqgAACNGlQHxRkUkkehLpCGWY9FrkH1ogAxORTqJo4x0xoU6jaNAsTkUKibOMZMa1Co2yQKEJNEoW7CGDOtQqFukyhATBKFugljzLQKhbpNoQAxWRTqJoox0zrZFuravsX207ZP2N5Tsd3P2v5b2++vY7+1oQAxWRTqJoox0zpZFuraXiPpAUk3S1qU9ITtgxHxgz7b/Y6kxybdZ+0oQEwahboJYsy00qzHYh11UDdKOhERz0qS7UckbZf0gxXb/XtJX5T0szXss1579zbdAiAvjBnMQB1TfOskPd/zeLG77O/YXifpVyXtG/ZktnfaXrC9sLS0VEPzhqCOA6gHYwk1q+MMyn2Wrbx/0v2SPhERf2v327znH0bsl7Rf6tzqqIb2VVuu47juOqYmEsbdJDLAWCpaE2OwjjOoRUkbeh6vl3RqxTbzkh6x/Zyk90v6rO331bDvyVDHkQXuJpEBxlLRmhqDdQSoJyRttn2N7Usk3S7pYO8GEXFNRGyKiE2S/ljSXRHxpzXsezLUcWSBu0lkgLFUtKbG4MQBKiLOSbpbney845K+EBHHbO+yvWvS558a6jiywd0kEsdYKl5TY7CWOqiIOBQR10bE2yLit7vL9kXE65IiIuLfRMQf17HfiVDHkQ3uJpE4xlLxmhqD7b2TRG8dx/JPRKeOA0nhbhKJYywVr6kxyBcWIgtk8QHNmuYY5AsLkTXuJgE0q4kx2N4pPooKgelhfKEG7T2DoqgwO0zzZYTxVZSmxl47z6AoKswOxboZYXwVpcmx184ARVFhdijWzQjjqyhNjr32BSiKCrNEsW4mGF/FaXLstS9AUVSYJYp1M8H4Kk6TY699AYqiwixRrJsJxldxmhx7FOoiG2TxAc2Y9tijUBfZo1gXaEZTY699U3wUEAKzw3jDBNoXoJYLCLloC0wf4w0TaNcU38oCwptuki69tOlWYRW4DpURxlv2mh5v7TqDooAwa9xNIjOMt6ylMN7aE6AoIMwed5PICOMteymMt/YEKAoIs8fdJDLCeMteCuOtPQGKAsLscTeJjDDespfCeGtPksTevU23ABPasaMzBy51/id35kxnXvzOO5ttF/pgvGUvhfFWyxmU7VtsP237hO09fdb/K9tHuz9/YfsddewX7bJli7R7d2cefHGx83v3brL4gGlIYbxNfAZle42kByTdLGlR0hO2D0bED3o2+ytJPxcRL9u+VdJ+Se+cdN9oH+4mAcxO0+OtjjOoGyWdiIhnI+JVSY9I2t67QUT8RUS83H34HUnra9jv6lDRDjSDsYcx1XENap2k53seL6r67OhOSV8ZtNL2Tkk7JWljnVfj+ArqojRdQIhVYOxlJ5XxVccZlPss63uLdNs3qROgPjHoySJif0TMR8T83NxcDc0TX0FdmBQKCDEixl52UhpfdQSoRUkbeh6vl3Rq5Ua2t0j6nKTtEfHDGvY7Oirai5JCASFGxNjLTkrjq44A9YSkzbavsX2JpNslHezdwPZGSQckfSgi/rKGfY6OivbipFBAiBEw9rKU0viaOEBFxDlJd0t6TNJxSV+IiGO2d9ne1d3sNyX9Q0mftX3E9uy+hZCK9uKkUECIETD2spTS+KqlDioiDkXEtRHxtoj47e6yfRGxr/v3v42ItRHxT7o/r/vmxKmhor04fP17Jhh7WUppfPGV78hSKllGQIlmPb74yncUpekCQqBkqYyvdtwslkJBoFmMQYyhHWdQFAoWjem+DDAGs5DaWCr/DIpCwaKlVFSIARiDWUhxLJUfoCgULFpKRYUYgDGYhRTHUtkBikLB4qVUVIg+GIPZSHEslR2gKBQsXkpFheiDMZiNFMdS2QGKQsHipVRUiD4Yg9lIcSxRqIvspZZ5BOSqqbFEoS6KlUpRIZC71MYSAQpF4WwKWJ2Ux0zZ16AkKthbJMU6DvRgLCYn9TFTfoBarmAna6h4KdZxoAdjMTmpj5myAxQV7K2SYh0HuhiLSUp9zJQdoKhgb5UU6zjQxVhMUupjptwARQV766RYxwExFhOW+pgpN0BRwd46W7ZIu3d35tAXFzu/d+9OJyOptRiLyUp9zJSbZt5bwd7ryBFu91+w1Oo4IMZi4lIeM9xJAgDQKO4kgdZJuQARaEpO46KWa1C2b7H9tO0Ttvf0WW/bn+muP2r7hjr2OxKKA1sp9QLEVmIsNi63cTFxgLK9RtIDkm6VdL2kD9q+fsVmt0ra3P3ZKenBSfc7MooDWyn1AsRWYiw2LrdxUccZ1I2STkTEsxHxqqRHJG1fsc12SZ+Pju9IepPtq2vYdzWKA1sr9QLE1mEsJiG3cVFHgFon6fmex4vdZavdRpJke6ftBdsLS0tLk7WM4sDWSr0AsXUYi0nIbVzUEaDcZ9nK1MBRtuksjNgfEfMRMT83Nzd+qygObLXUCxBbhbGYjNzGRR0BalHShp7H6yWdGmObelEc2GqpFyC2CmMxGbmNizrSzJ+QtNn2NZL+j6TbJf3aim0OSrrb9iOS3inpTEScrmHfg1Ec2HopFyC2CmMxKTmNi4kDVEScs323pMckrZH0UEQcs72ru36fpEOStkk6IenHku6YdL9D7d079V0gLznVfxSFsdi4XPs+d5JAKyzXf6xd28laOnOmM/ee8vQGUIcc+v6gO0mUe7NYoEdu9R9AXXLu+wQotEJu9R9AXXLu+wQotEJu9R9AXXLu+wQotEJu9R9AXXLu+wQotEJu9R9AXXLu+3zdBlojp/oPoE659n0CFFor19oQYJhS+jZTfGil3L4XBxhVSX2bAIVWyrk2BKhSUt8mQKGVcq4NAaqU1LcJUGilnGtDgCol9W0CFFop59oQoEpJfZsAhVbKuTYEqFJS3ybNHK3VrzaklPRctMegPltCv+UMCugqKT0X7VB6nyVAAV0lpeeiHUrvswQooKuk9Fy0Q+l9lgAFdJWUnot2KL3PEqCArpLSc9EOpfdZAhTQVVJ6Ltqh9D5LmjnQg9RzpKzklPJ+JjqDsv1m24/bfqb7e22fbTbY/obt47aP2f7YJPsEZqn0NF7ko419cdIpvj2Svh4RmyV9vft4pXOS/kNEXCfpXZI+avv6CfcLzETpabzIRxv74qQBarukh7t/PyzpfSs3iIjTEfG97t9nJR2XtG7C/QIzUXoaL/LRxr44aYC6MiJOS51AJOktVRvb3iTpZyR9t2KbnbYXbC8sLS1N2DxgMqWn8SIfbeyLQwOU7a/ZfqrPz/bV7Mj2pZK+KOnjEfGjQdtFxP6ImI+I+bm5udXsAqhd6Wm8yEcb+6IjYvx/bD8taWtEnLZ9taRvRsTb+2x3saRHJT0WEb876vPPz8/HwsLC2O0D6kAWH1JRal+0fTgi5lcunzTN/KCkj0i6t/v7S312bEm/J+n4aoITkApSz9GEtqWU9zPpNah7Jd1s+xlJN3cfy/ZbbR/qbvNuSR+S9PO2j3R/tk24X6AxbUz3xWzRxzomOoOKiB9Kek+f5ackbev+/eeSPMl+gJT0pvtK538fONCu/91ieuhjHdzqCFilNqb7YrboYx0EKGCV2pjui9mij3UQoIBVamO6L2aLPtYxUZr5tJFmjlT1y7CSyOzD6g3K1mtTpuigNHMCFFCD5ayrtWs71wrOnOn8j7ekrz5A/eg3HYMCFFN8QA3aeCNPTI5+U40ABdSArCuMg35TjQAF1ICsK4yDflONAAXUgKwrjIN+U40kCaAmZGOhCv1jMLL4gAaQpQWJfjAMWXxAA8jSgkQ/GBcBCpgisrQg0Q/GRYACpogsLUj0g3FN+oWFACrs2NG59iBdeO3hzju5OF6qfse1qh9gMM6ggCnasqVzIXztWmlxsfN79+7OOr6QrjyDvmhQ6t8P+A9JNc6ggCnr9zXd99zDF9KVqOqLBu+5h2O7WpxBAQ3gonmZOK714gwKaMDGjZ3pn+X/YUsXXjTn+lT6+h2jYccVq8MZFNCAqlvcDLqOwfWpdAw6Rj/909y6qE4TBSjbb7b9uO1nur/XVmy7xvb/tP3oJPsESjAoeWLLFoo6czDoGD31FMkQdZp0im+PpK9HxL2293Qff2LAth+TdFzST0y4T6AI/ZInpM6U0fr1Fy7jOkZaqo7RoOOK1Zt0im+7pIe7fz8s6X39NrK9XtIvSfrchPsDikdRZ/o4RrMx6RnUlRFxWpIi4rTttwzY7n5J/1HSZcOe0PZOSTslaSNHGy1EcW86Br3fFN7OxtAzKNtfs/1Un5/to+zA9i9LeiEiDo+yfUTsj4j5iJifm5sb5Z8ARaG4Nw1VySpV1xBRn6FnUBHxC4PW2f4b21d3z56ulvRCn83eLelXbG+T9Pck/YTt34+Ifz12q4HCUdzbvKqi2+Xjw/s+XZNO8R2U9BFJ93Z/f2nlBhHxG5J+Q5Jsb5W0m+AErN6w5Amm/8bX770jWaV5kyZJ3CvpZtvPSLq5+1i232r70KSNA3Be1YV5aqfGN+i9u+QSEiGaNlGAiogfRsR7ImJz9/dL3eWnImJbn+2/GRG/PMk+gbaqKu6ldmp8g947m6LbpnGrIyATyxfme6ei7ryzs/z++5n+G2bQezBoKm9xcfD7jdkgQAEZGXRhvuoecMtTWGvXXjiF1aass6r3oOq9IxGiWdyLDygA03/Vqt6DqvcOzeIMCigA038dq53GW741EVN5aSJAAYWYxvRfisFrUJvGncaTmMpLFVN8QOHGnf5LMXW9qk1M45XHEdF0Gwaan5+PhYWFppsBZG/QWcev/3rng/4NPf9Vfe21TgZbv7OO5cf33DP87Kpq/bjr7rlncJuWp/H6vZaHHkrzbBAdtg9HxPzrlhOggPYa9wP/4x8/P53We7PU3qnBQeul8dZNGlCRrkEBiik+oMWqpr6q7lwxLDOwav2466TqNjGNVx4CFNBiVXflrvrAP3myc4bTqzczsGr9uOuk6jZxh/HykMUHtNygDLaq9OthWXHD1o+7blhKONl4ZSFAARho0Af+sC/sG7Z+3HVVbUJ5SJIAMJYmsvhQJrL4AABJIosPAJAVAhQAIEkEKABAkghQAIAkEaAAAEkiQAEAkkSAAgAkiQAFAEgSAQoAkKSk7yRhe0nSX9fwVFdIerGG50kZrzF/pb8+iddYirpf4z+KiLmVC5MOUHWxvdDvNhol4TXmr/TXJ/EaSzGr18gUHwAgSQQoAECS2hKg9jfdgBngNeav9Ncn8RpLMZPX2IprUACA/LTlDAoAkBkCFAAgSUUGKNsfsH3M9mu2B6ZC2r7F9tO2T9jeM8s2Tsr2m20/bvuZ7u+1A7Z7zvb3bR+xnfzXEw87Ju74THf9Uds3NNHOSYzwGrfaPtM9Zkds/2YT7RyX7Ydsv2D7qQHrSziGw15j1sdQkmxvsP0N28e7n6cf67PNdI9lRBT3I+k6SW+X9E1J8wO2WSPpf0v6SUmXSHpS0vVNt30Vr/E+SXu6f++R9DsDtntO0hVNt3fE1zT0mEjaJukrkizpXZK+23S7p/Aat0p6tOm2TvAa/6WkGyQ9NWB91sdwxNeY9THsvoarJd3Q/fsySX856/FY5BlURByPiKeHbHajpBMR8WxEvCrpEUnbp9+62myX9HD374clva/BttRllGOyXdLno+M7kt5k++pZN3QCufe7oSLiW5Jeqtgk92M4ymvMXkScjojvdf8+K+m4pHUrNpvqsSwyQI1onaTnex4v6vVvfsqujIjTUqcjSXrLgO1C0p/ZPmx758xaN55Rjknux23U9v8z20/a/ortn5pN02Ym92M4qmKOoe1Nkn5G0ndXrJrqsbyorieaNdtfk3RVn1X/OSK+NMpT9FmWVM591WtcxdO8OyJO2X6LpMdt/6/u//5SNMoxSf64DTFK+7+nzr3JXrG9TdKfSto89ZbNTu7HcBTFHEPbl0r6oqSPR8SPVq7u809qO5bZBqiI+IUJn2JR0oaex+slnZrwOWtV9Rpt/43tqyPidPeU+oUBz3Gq+/sF23+izhRTqgFqlGOS/HEbYmj7ez8EIuKQ7c/aviIiSrkBae7HcKhSjqHti9UJTn8QEQf6bDLVY9nmKb4nJG22fY3tSyTdLulgw21ajYOSPtL9+yOSXnfWaPsf2L5s+W9Jvyipb9ZRIkY5JgclfbibPfQuSWeWpzozMfQ12r7Ktrt/36jOOP3hzFs6Pbkfw6FKOIbd9v+epOMR8bsDNpvqscz2DKqK7V+V9F8lzUn6su0jEfFe22+V9LmI2BYR52zfLekxdTKrHoqIYw02e7XulfQF23dKOinpA5LU+xolXSnpT7rj5CJJfxgRX22ovUMNOia2d3XX75N0SJ3MoROSfizpjqbaO44RX+P7Jf072+ck/T9Jt0c3ZSoHtv9InSy2K2wvSvotSRdLZRxDaaTXmPUx7Hq3pA9J+r7tI91l/0nSRmk2x5JbHQEAktTmKT4AQMIIUACAJBGgAABJIkABAJJEgAIAJIkABQBIEgEKAJCk/w8fdcOTbGXFiQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import make_moons\n",
    "\n",
    "X, y = make_moons(n_samples=100, random_state=123)\n",
    "\n",
    "plt.scatter(X[y == 0, 0], X[y == 0, 1], color='red', marker='^', alpha=0.5)\n",
    "plt.scatter(X[y == 1, 0], X[y == 1, 1], color='blue', marker='o', alpha=0.5)\n",
    "\n",
    "plt.tight_layout()\n",
    "# plt.savefig('images/05_12.png', dpi=300)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x216 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "\n",
    "scikit_pca = PCA(n_components=2)\n",
    "X_spca = scikit_pca.fit_transform(X)\n",
    "\n",
    "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(7, 3))\n",
    "\n",
    "ax[0].scatter(X_spca[y == 0, 0], X_spca[y == 0, 1],\n",
    "              color='red', marker='^', alpha=0.5)\n",
    "ax[0].scatter(X_spca[y == 1, 0], X_spca[y == 1, 1],\n",
    "              color='blue', marker='o', alpha=0.5)\n",
    "\n",
    "ax[1].scatter(X_spca[y == 0, 0], np.zeros((50, 1)) + 0.02,\n",
    "              color='red', marker='^', alpha=0.5)\n",
    "ax[1].scatter(X_spca[y == 1, 0], np.zeros((50, 1)) - 0.02,\n",
    "              color='blue', marker='o', alpha=0.5)\n",
    "\n",
    "ax[0].set_xlabel('PC1')\n",
    "ax[0].set_ylabel('PC2')\n",
    "ax[1].set_ylim([-1, 1])\n",
    "ax[1].set_yticks([])\n",
    "ax[1].set_xlabel('PC1')\n",
    "\n",
    "plt.tight_layout()\n",
    "# plt.savefig('images/05_13.png', dpi=300)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\hsh\\Miniconda3\\envs\\venv\\lib\\site-packages\\ipykernel_launcher.py:48: FutureWarning: arrays to stack must be passed as a \"sequence\" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x216 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_kpca = rbf_kernel_pca(X, gamma=15, n_components=2)\n",
    "\n",
    "fig, ax = plt.subplots(nrows=1,ncols=2, figsize=(7,3))\n",
    "ax[0].scatter(X_kpca[y==0, 0], X_kpca[y==0, 1], \n",
    "            color='red', marker='^', alpha=0.5)\n",
    "ax[0].scatter(X_kpca[y==1, 0], X_kpca[y==1, 1],\n",
    "            color='blue', marker='o', alpha=0.5)\n",
    "\n",
    "ax[1].scatter(X_kpca[y==0, 0], np.zeros((50,1))+0.02, \n",
    "            color='red', marker='^', alpha=0.5)\n",
    "ax[1].scatter(X_kpca[y==1, 0], np.zeros((50,1))-0.02,\n",
    "            color='blue', marker='o', alpha=0.5)\n",
    "\n",
    "ax[0].set_xlabel('PC1')\n",
    "ax[0].set_ylabel('PC2')\n",
    "ax[1].set_ylim([-1, 1])\n",
    "ax[1].set_yticks([])\n",
    "ax[1].set_xlabel('PC1')\n",
    "\n",
    "plt.tight_layout()\n",
    "# plt.savefig('images/05_14.png', dpi=300)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2、LDA 线性判别分析\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "LDA是有监督的,带标签的\n",
    "\n",
    "LDA的中心思想就是最大化类间距离以及最小化类内距离\n",
    "\n",
    "![title](img/32.JPG)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/33.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "两个目标\n",
    "\n",
    "- 对于不同类别的数据点,希望其经过投影后能离的越远越好,也就是两类数据点区别越明显越好,不要混在一起\n",
    "\n",
    "- 对于同类别的数据点,希望他们能更集中,离组织的中心越近越好"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2-1、优化目标\n",
    "\n",
    "![title](img/34.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/35.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2-2、线性判别分析求解\n",
    "\n",
    "\n",
    "![title](img/36.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/37.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/38.JPG)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2-3、代码讲解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Number</th>\n",
       "      <th>Sepal.Length</th>\n",
       "      <th>Sepal.Width</th>\n",
       "      <th>Petal.Length</th>\n",
       "      <th>Petal.Width</th>\n",
       "      <th>Species</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Number  Sepal.Length  Sepal.Width  Petal.Length  Petal.Width Species\n",
       "0       1           5.1          3.5           1.4          0.2  setosa\n",
       "1       2           4.9          3.0           1.4          0.2  setosa\n",
       "2       3           4.7          3.2           1.3          0.2  setosa\n",
       "3       4           4.6          3.1           1.5          0.2  setosa\n",
       "4       5           5.0          3.6           1.4          0.2  setosa"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from matplotlib import pyplot as plt\n",
    "iris_data = pd.read_csv(\"iris.csv\")\n",
    "iris_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = iris_data.iloc[:,1:5].values\n",
    "y = iris_data.iloc[:,5].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa',\n",
       "       'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa',\n",
       "       'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa',\n",
       "       'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa',\n",
       "       'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa',\n",
       "       'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa',\n",
       "       'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa',\n",
       "       'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa',\n",
       "       'setosa', 'setosa', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'versicolor',\n",
       "       'versicolor', 'versicolor', 'versicolor', 'virginica', 'virginica',\n",
       "       'virginica', 'virginica', 'virginica', 'virginica', 'virginica',\n",
       "       'virginica', 'virginica', 'virginica', 'virginica', 'virginica',\n",
       "       'virginica', 'virginica', 'virginica', 'virginica', 'virginica',\n",
       "       'virginica', 'virginica', 'virginica', 'virginica', 'virginica',\n",
       "       'virginica', 'virginica', 'virginica', 'virginica', 'virginica',\n",
       "       'virginica', 'virginica', 'virginica', 'virginica', 'virginica',\n",
       "       'virginica', 'virginica', 'virginica', 'virginica', 'virginica',\n",
       "       'virginica', 'virginica', 'virginica', 'virginica', 'virginica',\n",
       "       'virginica', 'virginica', 'virginica', 'virginica', 'virginica',\n",
       "       'virginica', 'virginica', 'virginica'], dtype=object)"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import LabelEncoder\n",
    "enc = LabelEncoder()\n",
    "label_encoder = enc.fit(y)\n",
    "y = label_encoder.transform(y) + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n",
       "       3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n",
       "       3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3])"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/39.JPG)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "均值类别 1 : [5.006 3.428 1.462 0.246] \n",
      "\n",
      "均值类别 2 : [5.936 2.77  4.26  1.326] \n",
      "\n",
      "均值类别 3 : [6.588 2.974 5.552 2.026] \n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 设置小数点的位数\n",
    "\n",
    "np.set_printoptions(precision=4)\n",
    "# 保留所有的均值\n",
    "mean_vectors = []\n",
    "# 要计算的3个类别\n",
    "for cl in range(1,4):\n",
    "    # 求当前类别各个特征均值\n",
    "    mean_vectors.append(np.mean(X[y == cl], axis=0))\n",
    "    print('均值类别 %s : %s \\n' % (cl, mean_vectors[cl-1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/40.JPG)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "类内散步矩阵 : \n",
      "  [[38.9562 13.63   24.6246  5.645 ]\n",
      " [13.63   16.962   8.1208  4.8084]\n",
      " [24.6246  8.1208 27.2226  6.2718]\n",
      " [ 5.645   4.8084  6.2718  6.1566]]\n"
     ]
    }
   ],
   "source": [
    "#  原始数据,有4个特征\n",
    "\n",
    "S_W = np.zeros((4,4))\n",
    "for cl, mv in zip(range(1,4), mean_vectors):\n",
    "    class_sc_mat = np.zeros((4,4))\n",
    "    # 选中属于当前类别的数据\n",
    "    for row in X[y == cl]:\n",
    "        # 这里相当于对各个特征分别进行计算,用矩阵形式\n",
    "        row, mv = row.reshape(4,1), mv.reshape(4,1)\n",
    "        # 跟公式一样\n",
    "        class_sc_mat += (row- mv).dot((row-mv).T)\n",
    "    S_W += class_sc_mat\n",
    "print(\"类内散步矩阵 : \\n \", S_W)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![title](img/41.JPG)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 全局均值\n",
    "overall_mean = np.mean(X, axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.8433, 3.0573, 3.758 , 1.1993])"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "overall_mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[5.006]\n",
      " [3.428]\n",
      " [1.462]\n",
      " [0.246]] [[5.8433]\n",
      " [3.0573]\n",
      " [3.758 ]\n",
      " [1.1993]]\n",
      "[[ 0.7011 -0.3104  1.9225  0.7983]\n",
      " [-0.3104  0.1374 -0.8511 -0.3534]\n",
      " [ 1.9225 -0.8511  5.2716  2.1889]\n",
      " [ 0.7983 -0.3534  2.1889  0.9088]]\n",
      "50\n",
      "[[5.936]\n",
      " [2.77 ]\n",
      " [4.26 ]\n",
      " [1.326]] [[5.8433]\n",
      " [3.0573]\n",
      " [3.758 ]\n",
      " [1.1993]]\n",
      "[[ 0.0086 -0.0266  0.0465  0.0117]\n",
      " [-0.0266  0.0826 -0.1442 -0.0364]\n",
      " [ 0.0465 -0.1442  0.252   0.0636]\n",
      " [ 0.0117 -0.0364  0.0636  0.016 ]]\n",
      "50\n",
      "[[6.588]\n",
      " [2.974]\n",
      " [5.552]\n",
      " [2.026]] [[5.8433]\n",
      " [3.0573]\n",
      " [3.758 ]\n",
      " [1.1993]]\n",
      "[[ 0.5545 -0.0621  1.3359  0.6156]\n",
      " [-0.0621  0.0069 -0.1495 -0.0689]\n",
      " [ 1.3359 -0.1495  3.2184  1.483 ]\n",
      " [ 0.6156 -0.0689  1.483   0.6834]]\n",
      "50\n",
      "类间散步矩阵 \n",
      "  [[ 63.2121 -19.9527 165.2484  71.2793]\n",
      " [-19.9527  11.3449 -57.2396 -22.9327]\n",
      " [165.2484 -57.2396 437.1028 186.774 ]\n",
      " [ 71.2793 -22.9327 186.774   80.4133]]\n"
     ]
    }
   ],
   "source": [
    "S_B = np.zeros((4,4))\n",
    "# 对各个类别进行计算\n",
    "for i, mean_vec in enumerate(mean_vectors):\n",
    "    # 计算当前类别的样本数\n",
    "    n = X[y == i + 1,:].shape[0]\n",
    "    mean_vec = mean_vec.reshape(4,1)\n",
    "    overall_mean = overall_mean.reshape(4,1)\n",
    "    # 如上述公式 进行计算\n",
    "    print (mean_vec,overall_mean)\n",
    "    print ((mean_vec - overall_mean).dot((mean_vec- overall_mean).T))\n",
    "    print (n)\n",
    "    S_B += n * (mean_vec - overall_mean).dot((mean_vec- overall_mean).T)\n",
    "print('类间散步矩阵 \\n ',S_B)    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " 特征向量 1 : \n",
      " [[-0.2087]\n",
      " [-0.3862]\n",
      " [ 0.554 ]\n",
      " [ 0.7074]] \n",
      "特征值 1 : 3.22e+01 \n",
      "\n",
      " 特征向量 2 : \n",
      " [[-0.0065]\n",
      " [-0.5866]\n",
      " [ 0.2526]\n",
      " [-0.7695]] \n",
      "特征值 2 : 2.85e-01 \n",
      "\n",
      " 特征向量 3 : \n",
      " [[-0.879 ]\n",
      " [ 0.2496]\n",
      " [ 0.2188]\n",
      " [ 0.3422]] \n",
      "特征值 3 : -2.09e-15 \n",
      "\n",
      " 特征向量 4 : \n",
      " [[ 0.3492]\n",
      " [-0.4242]\n",
      " [-0.4798]\n",
      " [ 0.684 ]] \n",
      "特征值 4 : 6.71e-15 \n"
     ]
    }
   ],
   "source": [
    "# 求解特矩阵特征值、特征向量\n",
    "\n",
    "eig_vals, eig_vecs = np.linalg.eig(np.linalg.inv(S_W).dot(S_B))\n",
    "\n",
    "# 得到每一个特征值和其对应的特征向量\n",
    "\n",
    "for i in range(len(eig_vals)):\n",
    "    eigvec_sc = eig_vecs[:,i].reshape(4,1)\n",
    "    print('\\n 特征向量 {} : \\n {} '.format(i+1, eigvec_sc.real))\n",
    "    print('特征值 {:} : {:.2e} '.format(i+1, eig_vals[i].real))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "特征值由大到小排序 \n",
      "32.191929198278025\n",
      "0.2853910426230689\n",
      "6.714007081105466e-15\n",
      "2.09150323208503e-15\n"
     ]
    }
   ],
   "source": [
    "# 特征值和特征向量配对\n",
    "eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:,i]) for i in range(len(eig_vals))]\n",
    "# 按照特征值的大小进行排序\n",
    "eig_pairs.sort(key= lambda x : x[0], reverse=True)\n",
    "# 打印排序结果\n",
    "print('特征值由大到小排序 ')\n",
    "for i in eig_pairs:\n",
    "    print(i[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "特征值占总体百分比 : \n",
      " \n",
      "特征值 1 : 99.12%\n",
      "特征值 2 : 0.88%\n",
      "特征值 3 : 0.00%\n",
      "特征值 4 : 0.00%\n"
     ]
    }
   ],
   "source": [
    "print('特征值占总体百分比 : \\n ')\n",
    "\n",
    "eigv_sum = sum(eig_vals)\n",
    "for i,j in enumerate(eig_pairs):\n",
    "    print('特征值 {0:} : {1:.2%}'.format(i + 1, (j[0]/eigv_sum).real))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "W = np.hstack((eig_pairs[0][1].reshape(4,1),eig_pairs[1][1].reshape(4,1)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.2087, -0.0065],\n",
       "       [ 0.3862, -0.5866],\n",
       "       [-0.554 ,  0.2526],\n",
       "       [-0.7074, -0.7695]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "W"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(150, 2)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_lda = X.dot(W)\n",
    "X_lda.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_step_lda(X):\n",
    "    ax = plt.subplot(111)\n",
    "    for label, color, marker in zip(range(1,4),('blue','red','green'),('^','s','o')):\n",
    "        plt.scatter(x=X[:,0].real[y == label], y=X[:,1].real[y==label], marker=marker, label = label_dict[label], color = color,\n",
    "                   alpha = 0.5)\n",
    "    plt.ylabel(\"X[1]\")\n",
    "    plt.xlabel(\"X[0]\")\n",
    "    leg = plt.legend(loc = \"upper right\", fancybox = True)\n",
    "    leg.get_frame().set_alpha(0.5)\n",
    "    plt.title(\"Original data\")\n",
    "    #plt.tick_params()\n",
    "    ax.spines[\"top\"].set_visible(False)\n",
    "    ax.spines[\"right\"].set_visible(False)\n",
    "    ax.spines[\"bottom\"].set_visible(False)\n",
    "    ax.spines[\"left\"].set_visible(False)\n",
    "    plt.grid()\n",
    "    plt.tight_layout()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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R2RM7NasWZOSiyn6YgnKDFrl5XDwIIwY4fy0oyiTyixBGZMmgkdPY8Y4j8eMsaMo442WFnjgAW9+l9ra2liwYAGnn346kydP5plnnmHz5s18/etf56yzzuKyyy5j9+7dlJWVsWnTJq655hrOOOMM2tvbWbduHVOnTuW0005jwYIFhy89tHz5ck455RSmTJnC0qVLAXjxxRc599xzmTp1Kpdccgl79+4dePAesARlBqXg0VN2tvM4O9uOoow3vPxe85VXXuHYY49l69atbN++nW9+85ssXryYsrIyNm/ezIIFC7jrrruYO3cuZ599Nk899RRbtmxBRJg/fz7PPPMM27Zto6uri9WrV1NfX89zzz3He++9R2VlJd///vcBOP/889mwYQPvvvsuV199NQ888MDAg/eAJSgzKG3dCqpQVXXkpgpbtiQ5MJPSvP5e87TTTuOPf/wjd9xxB2+++SZ//vOf2b59O5deeilnnHEG//RP/0RNTc1Rr9uxYwfHH388J510EgDz5s3jjTfeID8/n5ycHG688UbWrl3LsGHDAKipqeGyyy7jtNNO45//+Z95772jrjiXFAmvgzLGD+6+O9kRmHQU+r1mfb3zePbs2Pd30kkn8eKLL7J9+3buvPNOLr30Uk499VTWr1/f5+t6KyfNzMzk7bffZt26dTz99NOsWrWK119/ncWLF/Pd736Xyy+/nIqKCkpLS2MP2kN2BGWMMR6Ix/eadXV15Obmcu2117J06VLeeust/vKXvxxOUJ2dnYePdkaMGHG4CHbSpElUVVWxc+dOAJ544gm+/vWv09raSlNTEzNnzuSnP/0pWwKnDJqamigqKgLgF7/4RewBe8yOoIwxxgN9fa8Z61HUtm3buO2228jJySErK4vVq1eTmZnJt7/9bZqamujq6mLJkiWceuqpzJ8/n4ULF5Kbm8v69ev5j//4D6666iq6urqYNm0aCxcupL6+niuuuIIDBw6gqvzLv/wLAKWlpVx11VUUFRUxffp0PvvsM49mZWAsQRljjAdCv9cMtWVL7Anqsssu45VXXmHixIk9tr/xxhtHjb3yyiu58sorDz+++OKLeffdd3uMGTt2LG+//fZRr73iiiu44oorYgsyjixBGWOMB+x7Te/Zd1DGGGN8yRKUMcYYX7IEZYwxxpcsQRljjPElS1DGGGN8yRKUSTktLbB3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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_step_lda(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x13b91e789b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_step_lda(X_lda)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA\n",
    "\n",
    "sklearn_lda = LDA(n_components=2)\n",
    "\n",
    "X_lda_sklearn = sklearn_lda.fit_transform(X,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x209070a0390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_step_lda(X_lda_sklearn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3、PCA与LDA比较\n",
    "\n",
    "- 相同点\n",
    "\n",
    "    - 从过程来看,PCA与LDA有很大的相似性,最后其实都是求某一个矩阵的特征值,投影矩阵即为该特征值对应的特征向量\n",
    "\n",
    "- 差异\n",
    "\n",
    "    - PCA为非监督降维,LDA为有监督降维\n",
    "\n",
    "    - PCA希望投影后的数据方差尽可能的大(最大可分性),因为其假设方差越大,则所包含的信息越多;而LDA则希望投影后相同类别的组内方差小,而组间方差大。LDA能合理运用标签信息,使得投影后的维度具有判别性,不同类别的数据尽可能的分开。\n",
    "\n",
    "    - 有标签就尽可能的利用标签的数据(LDA),而对于纯粹的非监督任务,则还是得用PCA进行数据降维。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 4、参考资料\n",
    "\n",
    "- http://blog.codinglabs.org/articles/pca-tutorial.html\n",
    "\n",
    "- 周志华《机器学习》\n",
    "\n",
    "- Dimensionality Reduction   Stanford CSEP 546\n",
    "\n",
    "- 跟着迪哥学Python数据分析与机器学习实战"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "venv",
   "language": "python",
   "name": "venv"
  },
  "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.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}