From c40f831b7c4b1684750c3b9da792506516afadd6 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Thu, 6 Apr 2017 00:32:11 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=2013.PCA=E7=9A=84md?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/13.利用PCA来简化数据.md | 58 ++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/docs/13.利用PCA来简化数据.md b/docs/13.利用PCA来简化数据.md index 143e2ac4..498bd250 100644 --- a/docs/13.利用PCA来简化数据.md +++ b/docs/13.利用PCA来简化数据.md @@ -1,6 +1,58 @@ - # 3) 利用PCA来简化数据 - -* 未完待续 +> 场景描述: + +* 我们正通过电视而非现场观看体育比赛,在电视的纯平显示器上有一个球。 +* 显示器大概包含了100万像素,而球则可能是由较少的像素组成,例如说一千个像素。 +* 人们实时的将显示器上的百万像素转换成为一个三维图像,该图像就给出运动场上球的位置。 +* 在这个过程中,人们已经将数据从一百万维降至了三维。这就被称为`降维(dimensionality reduction)` + +## 1 将维技术 + +> 数据显示并非大规模特征下的唯一难题,对数据进行简化还有如下一系列的原因: + +* 1) 使得数据集更容易使用 +* 2) 降低很多算法的计算开销 +* 3) 去除噪音 +* 4) 是的结果易懂 + +> 适用范围: 在已标注与未标注的数据上都有降维技术。这里我们将主要关注未标注数据上的降维技术,将技术同样也可以应用于已标注的数据。 +> 在以下3中降维技术中, PCA的应用目前最为广泛,因此本章主要关注PCA。 + +* 1) 主成分分析(Principal Component Analysis, PCA) + * `通俗理解:就是找出一个最主要的特征,然后进行分析。` + * `例如: 考察一个人的智力情况,就直接看数学成绩就行(存在:数学、语文、英语成绩)` + * a.将数据从原来的坐标系转换到了新的坐标系,新的坐标系的选择是由数据本身决定的。 + * b.第一个新坐标轴选择的是原始数据中方差最大的方向 + * c.第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向。 + * d.该过程一直重复,重复次数为原始数据中特征的数目。 + * 我们会发现,大部分方差都包含在最前面的几个新坐标轴中。因此,我们可以忽略余下的坐标轴,即对数据进行了降维处理。 +* 2) 因子分析(Factor Analysis) + * `通俗理解:将多个实测变量转换为少数几个综合指标,它反映一种降维的思想.通过降维将相关性高的变量聚在一起,从而减少需要分析的变量的数量,而减少问题分析的复杂性` + * `例如: 考察一个人的整体情况,就直接组合3样成绩(隐变量),看平均成绩就行(存在:数学、语文、英语成绩)` + * 应用的领域:社会科学、金融和其他领域 + * 在因子分析中,我们 + * 假设观察数据的生成中有一些观察不到的隐变量(latent variable)。 + * 假设观察数据是这些隐变量和某些噪音的线性组合。 + * 那么隐变量的数据可能比观察数据的数目少,也就说通过找到隐变量就可以实现数据的降维。 +* 3) 独立成分分析(Independ Component Analysis, ICA) + * `通俗理解:PCA(主成分分析)寻找的是,使得投影之后,尽量保留原有信息量的投影方向。 ICA(独立主成分分析)寻找的是,使得投影之后,数据之间相互独立的投影方向。` + * `例如:我们去ktv唱歌,想辨别唱的是哪首歌,PCA就是搜录歌词;而ICA是对歌词按人进行完全的拆分。` + * ICA假设数据是从N个数据源生成的,这一点和因子分析有些类似。 + * 假设数据为多个数据源的混合观察结果,这些数据源之间在统计上是相互独立的,而在PCA中只假设数据是不相关的。 + * 同因子分析一样,如果数据源的数目少于观察数据的数目,则可以实现降维过程。 + +## 2 主成分分析(PCA) + +> PCA的优缺点 + +* 优点:降低数据的复杂性,识别最重要的多个特征。 +* 缺点:不一定需要,且可能损失有用信息。 +* 适用数据类型:数值型数据。 + + + +## 3 对半导体数据进行降维处理 + + \ No newline at end of file From d24f3ad9e5c06a6c8082745c8b80312ca8126c91 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Thu, 6 Apr 2017 15:19:32 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=B5=8B=E8=AF=95=20=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/13.利用PCA来简化数据.md | 8 ++++++-- images/13.PCA/应用PCA降维.png | Bin 0 -> 57065 bytes 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 images/13.PCA/应用PCA降维.png diff --git a/docs/13.利用PCA来简化数据.md b/docs/13.利用PCA来简化数据.md index 498bd250..b2b41afe 100644 --- a/docs/13.利用PCA来简化数据.md +++ b/docs/13.利用PCA来简化数据.md @@ -23,8 +23,8 @@ * `通俗理解:就是找出一个最主要的特征,然后进行分析。` * `例如: 考察一个人的智力情况,就直接看数学成绩就行(存在:数学、语文、英语成绩)` * a.将数据从原来的坐标系转换到了新的坐标系,新的坐标系的选择是由数据本身决定的。 - * b.第一个新坐标轴选择的是原始数据中方差最大的方向 - * c.第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向。 + * b.第一个新坐标轴选择的是原始数据中`方差最大`的方向 + * c.第二个新坐标轴的选择和第一个坐标轴`正交(orthogonal)`且具有`最大方差`的方向。 * d.该过程一直重复,重复次数为原始数据中特征的数目。 * 我们会发现,大部分方差都包含在最前面的几个新坐标轴中。因此,我们可以忽略余下的坐标轴,即对数据进行了降维处理。 * 2) 因子分析(Factor Analysis) @@ -50,7 +50,11 @@ * 缺点:不一定需要,且可能损失有用信息。 * 适用数据类型:数值型数据。 +> 通过PCA进行降维处理,我们就可以同时获得SVM和决策树的优点: +* 一方面,得到了和决策树一样简单的分类器,同时分类间隔和SVM一样好。 +* 例如下图: +* ![应用PCA降维](/images/13.PCA/应用PCA降维.png) ## 3 对半导体数据进行降维处理 diff --git a/images/13.PCA/应用PCA降维.png b/images/13.PCA/应用PCA降维.png new file mode 100644 index 0000000000000000000000000000000000000000..d9807d0278bcffd60549664e5c3c6684451dbfce GIT binary patch literal 57065 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

{Ni9FNjteLQnYTuS`dhpjC798grp-CO2l5GOm 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 B6XyT` literal 0 HcmV?d00001 From a329d5cdaa1148be3cc3b590c4897217c6f5cf48 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Thu, 6 Apr 2017 16:08:12 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=96=B0=E5=BB=BAimages=E5=92=8Cdata?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/13.PCA/testSet.txt | 1000 ++++++++++++++++++++++++++++++++++ docs/13.利用PCA来简化数据.md | 6 +- src/python/13.PCA/pca.py | 45 ++ 3 files changed, 1050 insertions(+), 1 deletion(-) create mode 100755 data/13.PCA/testSet.txt create mode 100644 src/python/13.PCA/pca.py diff --git a/data/13.PCA/testSet.txt b/data/13.PCA/testSet.txt new file mode 100755 index 00000000..0e5d2a6c --- /dev/null +++ b/data/13.PCA/testSet.txt @@ -0,0 +1,1000 @@ +10.235186 11.321997 +10.122339 11.810993 +9.190236 8.904943 +9.306371 9.847394 +8.330131 8.340352 +10.152785 10.123532 +10.408540 10.821986 +9.003615 10.039206 +9.534872 10.096991 +9.498181 10.825446 +9.875271 9.233426 +10.362276 9.376892 +10.191204 11.250851 +7.720499 6.476300 +9.334379 8.471268 +7.963186 6.731333 +8.244973 9.013785 +9.569196 10.568949 +8.854793 9.076536 +9.382171 7.240862 +8.179055 8.944502 +8.267896 8.797017 +9.047165 8.725068 +8.741043 7.901385 +7.190216 7.804587 +8.081227 9.314431 +8.047460 5.720780 +7.917584 7.543254 +8.676942 10.102220 +9.210251 9.424717 +7.732998 9.840202 +7.681754 8.609897 +7.925863 10.079159 +8.261509 8.242080 +8.514872 7.527561 +10.324450 10.804481 +7.856710 7.931543 +7.858608 7.995340 +9.196808 6.577598 +9.644415 10.935081 +9.579833 9.085021 +7.888484 5.976428 +9.072624 9.703344 +8.914184 9.298515 +7.822869 7.086663 +10.538554 11.061464 +8.280187 8.709012 +8.884223 8.670105 +9.359927 10.575055 +9.078611 9.710833 +7.935134 8.586173 +8.805945 10.575145 +9.584316 9.614076 +11.269714 11.717254 +9.120444 9.019774 +7.977520 8.313923 +8.104648 9.456128 +8.617126 7.331723 +9.033811 9.469706 +8.327680 5.122092 +8.532272 10.100909 +9.295434 8.933824 +9.905202 9.027559 +10.585764 10.912733 +10.427584 11.532578 +9.072767 9.960144 +9.164275 8.645121 +9.746058 10.717080 +9.286072 9.340024 +8.188233 7.432415 +7.948598 8.445419 +7.563350 5.656178 +8.972405 8.801869 +9.980868 8.788996 +7.753490 7.714248 +7.431143 9.032819 +8.943403 8.359354 +10.481890 9.988969 +9.150454 10.278760 +8.123894 9.060351 +8.626164 8.469342 +7.354185 7.631252 +11.323046 11.015032 +8.190008 6.860792 +8.412598 7.661358 +9.258404 8.580382 +11.007915 11.443881 +8.279403 8.347003 +8.931149 10.105221 +10.239245 10.077473 +8.129346 7.096877 +8.485823 9.373561 +10.703640 11.651618 +9.500728 8.150228 +9.712414 9.910445 +9.333374 9.407557 +8.787865 10.168021 +9.238180 10.253478 +9.577388 8.895150 +10.447753 10.318227 +9.303944 9.223136 +9.883268 11.662945 +9.471921 10.443792 +10.007753 9.579912 +8.110298 7.106263 +6.964069 6.585040 +10.413499 9.649309 +8.032629 7.053254 +8.015549 9.166753 +10.462924 8.656612 +9.530788 10.134130 +9.202658 9.314222 +10.103241 10.235159 +7.849264 6.624856 +9.059071 7.992555 +10.172889 10.724789 +9.528439 6.420990 +7.190422 6.789792 +9.085716 9.846328 +9.452887 8.735386 +7.417322 7.348594 +8.468639 8.715086 +8.303642 9.463231 +9.939052 10.026771 +8.701989 7.516978 +9.737541 10.587281 +8.280233 7.852444 +10.648386 10.259203 +9.173893 10.520372 +9.135397 10.751406 +7.594580 8.488833 +8.587520 8.463406 +8.581887 7.888644 +9.448768 8.707422 +7.882664 7.772030 +10.050635 9.859720 +9.012078 9.533899 +8.770020 8.882996 +9.428804 9.446306 +8.504209 8.319693 +9.800003 10.964667 +8.069660 7.683099 +10.012217 10.320644 +8.704677 8.918146 +8.198722 7.297786 +9.868322 9.901657 +9.426997 11.480353 +9.228767 9.262976 +8.952359 9.528471 +8.186847 8.600587 +9.026371 8.705143 +9.483364 9.807079 +7.826587 7.975401 +11.197846 10.959298 +7.632421 8.769745 +8.761605 8.309365 +9.353670 8.728758 +6.466637 6.038996 +8.370634 9.178830 +10.337451 11.075600 +8.917679 8.288367 +9.076621 8.487626 +7.278948 4.634097 +10.153017 11.219183 +7.132603 5.853118 +9.338644 9.805940 +9.878602 9.187000 +10.009505 10.924505 +9.384438 10.691860 +7.535322 8.160481 +6.808732 8.268469 +8.302965 8.075009 +8.345379 8.305356 +9.517530 8.249839 +9.267825 9.999109 +10.291511 11.032664 +8.605909 8.705207 +8.331145 7.812295 +8.632412 10.574287 +8.766397 8.712107 +9.407070 9.732756 +9.709495 9.729569 +10.422201 11.070360 +6.831495 6.466763 +8.187122 8.405929 +8.523093 9.041844 +7.952394 6.801220 +10.490780 10.001468 +10.813791 9.802494 +7.861113 7.541475 +8.800399 8.738974 +7.542152 6.612838 +9.446981 9.378659 +8.281684 7.358572 +8.473801 8.208343 +11.736767 11.022029 +8.379578 8.714348 +8.313718 8.832381 +9.342589 10.416659 +7.560710 6.889648 +9.295344 9.739040 +9.176612 9.718781 +8.614385 10.150521 +9.079373 8.839794 +10.333289 10.921255 +9.453502 7.335134 +10.174590 10.292500 +9.693713 9.793636 +7.474925 7.751391 +10.107905 10.156997 +9.257241 7.854266 +10.209794 11.410157 +7.248050 6.433676 +10.150091 9.288597 +10.077713 10.321500 +8.191122 8.931519 +8.791469 10.287216 +9.229434 9.095193 +8.682571 8.546005 +7.524099 7.709751 +8.442410 8.326037 +9.364851 9.095989 +9.061222 7.557899 +7.989999 8.555363 +8.801275 8.868732 +10.351932 9.497796 +10.230710 10.496151 +9.783163 9.891408 +10.651481 9.431617 +8.387393 6.400507 +9.003921 7.050003 +8.483723 8.314886 +9.020501 7.545771 +9.329105 11.095661 +9.583687 9.271929 +8.908705 8.407529 +8.835406 8.083517 +9.736362 8.296735 +10.030302 9.737178 +8.287142 6.993460 +9.173211 9.306335 +9.026355 9.696531 +9.128391 9.921247 +11.486346 12.910777 +11.519458 11.472111 +9.027707 10.263974 +9.351935 8.542200 +9.421701 11.403201 +9.005687 8.100969 +7.015279 6.614278 +8.213607 8.340948 +8.226646 8.718997 +8.144753 8.366877 +10.133642 12.790169 +10.763481 10.847016 +10.003622 10.337716 +9.007955 9.792482 +8.670506 10.782931 +10.386414 9.956162 +10.104761 10.123044 +8.079502 8.304075 +9.945424 11.855409 +8.642497 9.998066 +9.349722 8.690328 +9.034991 8.826490 +8.738746 7.518464 +8.919532 9.740312 +9.464136 10.444588 +10.710057 12.666857 +10.042007 10.532091 +8.447996 7.426363 +9.509351 9.030516 +11.946359 10.553075 +9.981617 9.912651 +9.853876 9.632967 +10.560648 11.881714 +8.370952 9.989491 +8.323209 10.102529 +9.828359 11.702462 +8.515623 8.426754 +9.004363 9.628036 +10.529847 10.458031 +10.028765 10.624880 +9.448114 9.313227 +8.332617 7.382295 +8.323006 8.276608 +7.740771 8.799750 +8.379615 8.146192 +8.340764 9.184458 +9.863614 8.254694 +9.969563 9.405134 +9.164394 9.182127 +10.622098 9.722592 +9.592072 10.029446 +8.212027 7.477366 +9.080225 8.244448 +8.555774 7.842325 +9.958046 9.696221 +8.972573 9.797128 +9.213223 7.128437 +8.737239 9.385138 +10.333907 10.994856 +8.797511 8.643075 +11.044848 9.623160 +8.539260 9.097113 +11.582163 11.884333 +7.863848 7.176199 +6.218103 5.283562 +9.120602 7.250190 +9.001166 9.635203 +8.081476 8.844224 +9.369802 8.230911 +8.768925 8.666987 +9.841098 8.543896 +10.451522 9.549511 +9.755402 9.117522 +7.988961 6.869854 +8.872507 9.787118 +10.363980 10.716608 +6.315671 5.765953 +9.638879 9.202355 +8.588126 8.037966 +8.947408 9.144386 +9.051130 7.195132 +9.321709 8.380668 +10.146531 9.754745 +9.843373 8.891437 +9.213148 11.700632 +7.630078 7.294753 +8.093088 7.967590 +7.488915 6.090652 +8.126036 8.586472 +8.760350 7.268987 +10.201347 9.141013 +7.838208 7.307700 +6.155653 5.563997 +7.767841 6.254528 +8.425656 8.615832 +10.362168 10.886815 +10.180024 10.378934 +9.794665 10.047812 +9.970394 9.668279 +7.030217 7.060471 +9.275414 9.095738 +10.314911 10.456539 +9.259774 8.204851 +10.023919 9.558307 +8.887540 9.866704 +9.851608 9.410989 +8.710882 7.268012 +9.017007 10.217673 +7.976369 9.000979 +8.738332 8.664734 +8.344510 8.977600 +8.959613 12.324240 +9.169982 8.624635 +7.487451 8.154859 +8.706316 7.719455 +9.564832 8.940403 +8.327775 9.044509 +9.734032 10.195255 +8.021343 6.445092 +9.081048 11.024397 +7.626651 6.549263 +10.725858 8.575374 +8.731381 8.307788 +10.394237 10.596874 +7.029311 7.658832 +9.517907 7.509904 +10.394064 10.060898 +10.752500 9.431601 +9.692431 10.332130 +9.651897 7.876862 +8.592329 10.096837 +10.212801 10.827496 +9.045043 9.265524 +8.901643 8.036115 +10.794525 9.318830 +11.040915 12.021746 +8.390836 9.672469 +9.840166 11.226568 +10.806810 12.205633 +8.924285 10.934056 +8.411251 8.289672 +7.808891 9.663290 +9.733437 8.486958 +8.300026 7.477374 +8.221756 10.278308 +9.096867 9.619677 +9.410116 9.289188 +10.097176 9.768470 +9.387954 8.844855 +9.376134 7.704630 +8.231599 9.101203 +9.910738 10.694855 +8.645689 7.764589 +8.090245 7.109596 +9.253483 9.813672 +9.331546 8.039386 +9.843256 10.208792 +9.713131 9.247665 +9.259369 10.704622 +10.243948 9.695883 +6.396262 6.456390 +8.936289 8.703871 +8.750846 9.347273 +6.497155 4.130251 +9.516552 10.164848 +9.125766 8.858775 +8.374387 7.300114 +8.132816 7.621107 +10.099505 9.159134 +9.356477 6.869999 +8.112934 7.587547 +7.265396 6.987031 +11.950505 13.715109 +10.745959 10.822171 +8.893270 7.887332 +6.003473 4.960219 +7.498851 6.451334 +10.162072 9.935954 +8.732617 9.177679 +9.300827 9.952360 +11.908436 12.256801 +9.371215 9.188645 +9.943640 9.245037 +7.386450 7.046819 +8.410374 8.293218 +7.830419 6.440253 +8.263140 8.279446 +11.448164 12.192363 +8.216533 9.186628 +9.316128 10.046697 +8.156927 6.834792 +9.951421 11.240598 +9.059607 8.458446 +10.476339 10.560461 +7.548200 7.227127 +9.432204 7.236705 +9.402750 9.126413 +11.188095 13.853426 +9.520201 11.028131 +8.884154 9.764071 +8.961105 8.833117 +8.549663 8.865765 +10.111708 10.515462 +9.024761 9.169368 +7.904149 8.048756 +9.240995 7.796142 +8.126538 6.116125 +7.442148 7.931335 +9.486821 10.091359 +9.834289 11.694720 +9.009714 11.599170 +9.761314 11.344083 +6.993941 6.562988 +8.659524 8.410107 +7.685363 8.097297 +7.793217 6.519109 +8.883454 9.257347 +8.781821 9.231980 +7.946281 7.658978 +8.523959 10.646480 +9.031525 8.649648 +8.317140 7.758978 +9.192417 11.151218 +8.408486 8.282182 +10.327702 11.459048 +8.389687 8.548727 +8.642250 7.056870 +8.833447 9.267638 +8.805261 8.320281 +9.726211 9.095997 +8.477631 9.507530 +9.738838 9.652110 +8.272108 7.582696 +9.258089 8.495931 +8.334144 8.810766 +8.150904 6.486032 +7.259669 7.270156 +11.034180 11.519954 +10.705432 10.642527 +8.388814 7.159137 +8.559369 7.846284 +7.187988 6.519313 +8.811453 7.765900 +8.492762 7.992941 +8.739752 8.502909 +10.150752 10.420295 +7.062378 5.365289 +8.448195 7.480000 +10.224333 11.592750 +9.533795 9.212845 +9.519492 7.690501 +9.661847 10.376189 +7.963877 8.597193 +10.184486 9.136709 +8.505234 9.159210 +8.187646 8.518690 +9.167590 9.405917 +8.612162 8.518755 +10.970868 10.392229 +9.603649 9.141095 +9.704263 8.830178 +9.657506 8.132449 +9.337882 11.045306 +9.521722 9.537764 +8.954197 8.728179 +8.635658 10.352662 +8.910816 9.020317 +9.900933 9.392002 +10.247105 8.289649 +9.571690 8.171237 +7.388627 7.668071 +8.354008 10.074590 +9.775598 8.835696 +8.768913 7.983604 +8.330199 8.474098 +8.169356 9.361172 +10.346522 10.086434 +7.976144 9.266702 +8.429648 7.865824 +11.261674 11.788587 +10.051066 10.112425 +8.954626 9.789343 +8.382220 8.121012 +9.820642 9.426441 +8.125950 9.695087 +8.646465 7.291808 +8.190202 8.003737 +8.773887 7.306175 +8.731000 10.300436 +9.163098 7.816769 +9.456346 9.223922 +9.645180 9.324053 +8.835060 8.966915 +9.325950 10.943248 +9.941912 9.548535 +9.282799 10.119488 +9.567591 9.462164 +8.529019 9.768001 +9.314824 10.153727 +8.264439 8.273860 +8.307262 8.214036 +9.122041 8.657861 +8.404258 8.389365 +7.828355 8.419433 +9.803180 10.108286 +8.662439 8.581953 +8.883265 8.978377 +8.012330 8.262451 +9.420258 8.974878 +7.015415 6.365940 +9.888832 11.163036 +9.677549 10.346431 +8.410158 7.912899 +9.464147 10.762900 +7.067227 7.035717 +9.320923 10.583089 +9.056917 8.771241 +8.110004 8.387789 +10.310021 10.970014 +8.211185 8.809627 +8.942883 8.840746 +9.479958 8.328700 +8.973982 8.702291 +8.519257 8.764855 +9.424556 8.956911 +7.222919 8.177787 +8.257007 9.700619 +9.778795 9.296134 +8.028806 8.575974 +9.886464 9.965076 +9.090552 6.978930 +9.605548 10.256751 +9.959004 9.610229 +8.308701 9.509124 +7.748293 9.685933 +8.311108 9.428114 +9.697068 10.217956 +9.582991 9.478773 +9.167265 10.198412 +10.329753 10.406602 +8.908819 7.428789 +10.072908 10.393294 +7.992905 9.226629 +8.907696 7.269366 +8.421948 9.342968 +7.481399 7.225033 +10.358408 10.166130 +8.786556 10.279943 +9.658701 11.379367 +10.167807 9.417552 +8.653449 8.656681 +8.020304 8.671270 +8.364348 10.004068 +9.119183 9.788199 +8.405504 9.740580 +11.020930 11.904350 +9.755232 9.515713 +10.059542 9.589748 +8.727131 9.777998 +7.666182 6.028642 +8.870733 8.367501 +9.340446 7.707269 +9.919283 10.796813 +7.905837 8.326034 +10.181187 10.089865 +8.797328 8.981988 +8.466272 7.765032 +10.335914 12.620539 +9.365003 8.609115 +8.011017 7.249489 +10.923993 13.901513 +7.074631 7.558720 +9.824598 8.851297 +8.861026 8.370857 +10.127296 10.861535 +10.548377 10.855695 +8.880470 7.948761 +8.901619 9.674705 +7.813710 9.246912 +10.128808 10.560668 +11.096699 10.911644 +8.551471 6.871514 +8.907241 8.677815 +10.571647 10.294838 +8.815314 8.810725 +8.453396 8.339296 +9.594819 11.487580 +10.714211 9.628908 +7.428788 7.712869 +10.892119 12.747752 +9.024071 11.112692 +7.803375 7.847038 +8.521558 8.881848 +9.742818 11.520203 +9.832836 9.180396 +8.703132 10.028498 +9.905029 11.347606 +10.037536 8.882688 +8.629995 8.392863 +9.583497 9.219663 +8.781687 9.650598 +9.344119 9.537024 +10.407510 9.223929 +7.244488 6.559021 +10.643616 10.288383 +8.757557 6.947901 +10.784590 11.233350 +10.028427 11.330033 +7.968361 6.830308 +8.925954 8.539113 +7.738692 7.114987 +8.192398 8.352016 +10.412017 12.431122 +8.208801 5.777678 +7.820077 7.790720 +9.542754 11.542541 +6.817938 7.429229 +7.365218 7.956797 +9.274391 7.932700 +9.546475 8.803412 +7.471734 6.797870 +8.016969 7.848070 +8.852701 8.458114 +8.215012 8.468330 +6.975507 6.846980 +9.435134 10.609700 +9.228075 9.342622 +8.388410 7.637856 +7.111456 9.289163 +9.403508 8.482654 +9.133894 8.343575 +10.670801 9.750821 +9.983542 10.074537 +10.012865 8.537017 +8.929895 8.951909 +7.666951 7.473615 +9.493839 7.821783 +8.894081 7.059413 +9.593382 9.859732 +9.126847 8.395700 +9.532945 9.850696 +9.459384 9.384213 +8.982743 8.217062 +10.107798 8.790772 +10.563574 9.044890 +8.278963 9.518790 +8.734960 10.494129 +9.597940 9.530895 +10.025478 9.508270 +10.335922 10.974063 +8.404390 8.146748 +7.108699 6.038469 +8.873951 7.474227 +8.731459 8.154455 +8.795146 7.534687 +6.407165 6.810352 +9.979312 10.287430 +8.786715 8.396736 +10.753339 10.360567 +10.508031 10.321976 +10.636925 10.193797 +10.614322 11.215420 +8.916411 8.965286 +8.112756 8.304769 +10.833109 10.497542 +8.319758 9.727691 +9.945336 11.820097 +10.150461 9.914715 +10.185024 10.388722 +9.793569 9.079955 +10.590128 11.811596 +8.505584 6.884282 +10.461428 10.745439 +8.755781 9.418427 +7.488249 7.172072 +10.238905 10.428659 +9.887827 10.427821 +8.529971 8.838217 +8.375208 10.242837 +8.901724 8.398304 +8.607694 9.173198 +8.691369 9.964261 +9.584578 9.641546 +10.265792 11.405078 +7.592968 6.683355 +8.692791 9.389031 +7.589852 6.005793 +10.550386 11.736584 +8.578351 7.227055 +7.526931 6.875134 +8.577081 9.877115 +9.272136 11.050928 +10.300809 10.653059 +8.642013 9.006681 +9.720491 10.265202 +9.029005 9.646928 +8.736201 7.975603 +8.672886 9.070759 +8.370633 8.412170 +9.483776 9.183341 +6.790842 7.594992 +9.842146 10.156810 +9.563336 7.962532 +8.724669 9.870732 +9.012145 9.171326 +9.116948 9.791167 +6.219094 7.988420 +9.468422 8.359975 +8.825231 8.475208 +9.572224 9.696428 +9.609128 8.488175 +9.428590 10.468998 +8.293266 8.617701 +9.423584 10.355688 +9.240796 9.517228 +10.915423 13.026252 +10.854684 11.130866 +9.226816 9.391796 +9.580264 10.359235 +7.289907 6.898208 +9.338857 10.374025 +9.523176 11.332190 +10.162233 10.357396 +8.873930 9.207398 +8.607259 7.794804 +8.852325 8.215797 +8.077272 6.501042 +8.169273 8.269613 +6.806421 7.544423 +8.793151 9.691549 +11.640981 11.365702 +9.544082 11.576545 +9.009266 9.605596 +9.726552 9.426719 +9.495888 10.626624 +8.683982 9.337864 +8.322105 8.631099 +8.887895 8.644931 +8.662659 11.373025 +9.263321 7.536016 +7.802624 7.171625 +8.773183 8.561565 +8.730443 10.197596 +8.942915 7.758383 +8.057618 8.774996 +8.112081 8.202349 +10.378884 12.103755 +9.248876 8.637249 +9.739599 9.708576 +8.126345 8.278487 +8.894788 7.966117 +9.683165 9.019221 +10.886957 12.053843 +9.668852 10.902132 +7.486692 6.471138 +8.794850 9.173609 +8.835915 8.296727 +9.443984 11.375344 +8.696621 6.434580 +9.645560 9.233722 +9.623857 7.915590 +10.840632 12.620268 +7.298135 7.356141 +9.639644 8.902389 +9.849802 7.682624 +10.609964 10.259615 +9.768229 11.382811 +7.646351 7.571849 +10.230300 9.470859 +8.224402 8.496866 +6.879671 8.393648 +7.976247 8.667221 +9.183268 8.694550 +11.471853 12.786280 +10.428349 10.615726 +8.090828 5.902504 +9.738627 8.485792 +8.139709 8.396333 +9.508055 8.990529 +8.857260 8.497732 +8.902558 7.014433 +9.660607 11.040833 +8.772221 10.512150 +11.020038 9.354134 +7.918527 7.742062 +7.630835 7.756260 +11.043272 11.041613 +9.299376 8.674157 +9.795087 8.431837 +9.415683 8.312101 +7.942037 6.942913 +9.724790 11.766496 +10.222032 11.550876 +8.894163 8.306020 +8.394309 8.070420 +9.012776 6.880548 +9.661093 10.138921 +9.896472 9.762372 +9.135628 8.759928 +8.762656 10.306028 +8.602473 8.861956 +10.085297 10.464774 +10.644983 10.945767 +9.034571 8.391668 +8.602920 8.501944 +8.224766 7.402758 +8.755050 9.431085 +9.669937 8.641049 +10.693530 10.287124 +9.462806 7.611153 +9.287707 10.082363 +10.941260 10.783728 +9.263080 7.913328 +10.167111 10.225338 +8.783830 9.465345 +8.958624 8.662136 +9.841649 9.926781 +7.205691 6.790638 +8.629089 9.135461 +7.469440 8.450442 +8.179133 7.790434 +8.083984 7.875520 +9.271300 8.135359 +8.652349 8.254397 +7.983920 6.609684 +7.836860 9.785238 +7.418535 7.011256 +8.458288 10.095364 +9.387605 9.726911 +8.663951 8.206705 +10.146507 11.698577 +8.937103 10.990924 +11.218687 11.141945 +8.363142 9.106936 +7.877643 7.122922 +9.620978 9.905689 +9.509649 10.773209 +6.748743 6.705385 +9.300919 8.085029 +9.332257 9.818791 +7.898610 8.366643 +9.841914 9.480675 +6.920484 8.959501 +8.544713 9.563136 +8.162266 6.715277 +8.659552 9.282008 +10.673398 13.174824 +9.024000 10.379238 +8.183292 6.647572 +10.544919 10.649602 +7.201266 6.529605 +9.557407 11.096821 +8.304605 6.940929 +9.742855 9.920897 +10.024587 9.645222 +10.002296 9.998940 +8.965876 8.665419 +7.823136 6.949572 +8.125088 7.654065 +6.569589 6.046863 +10.195497 8.689129 +11.730011 10.374221 +8.739105 7.457571 +9.820059 10.278526 +9.547456 10.398198 +8.375072 8.416302 +8.889533 8.308929 +8.861201 9.290408 +12.677687 12.788463 +9.100735 8.620537 +7.728350 6.328219 +7.955373 8.355028 +8.733352 8.645414 +10.257527 11.191813 +9.246413 9.497014 +9.745302 9.642035 +7.785652 8.147621 +7.431673 8.566399 +8.654384 8.466701 +8.475392 6.744677 +9.968440 10.765192 +10.163616 10.806963 +10.238135 10.036636 +9.902889 10.746730 +9.523850 8.749708 +9.214363 9.149178 +9.266040 10.841502 +8.494292 7.770942 +10.821158 10.410192 +8.645888 7.970308 +9.885204 10.098080 +9.084990 10.886349 +9.277874 8.871449 +8.135131 7.137064 +7.917379 9.080522 +9.685586 8.822850 +8.558141 7.848112 +9.502917 10.061255 +6.409004 5.164774 +10.149235 10.579951 +7.847304 8.411351 +8.846930 6.819939 +8.675153 9.411147 +9.476276 9.061508 +11.099184 10.644263 +8.792411 10.379405 +8.400418 7.072706 +8.555713 7.923805 +8.024763 8.426993 +8.642696 10.453412 +7.906117 7.920408 +8.793393 9.722878 +8.280364 7.669854 +9.387766 9.706245 +9.626853 10.762499 +10.163631 10.919007 +9.375543 11.513524 +9.309440 8.575699 +10.055329 10.297255 +8.706241 9.097172 +10.032934 11.951897 +10.812974 11.311435 +10.352603 10.819865 +8.276870 9.055403 +8.397389 7.944434 +9.371741 10.395790 +10.825710 10.144099 +9.158483 11.385382 +10.658639 11.389856 +8.091762 6.631039 +10.734892 10.054598 +11.535880 11.604912 +9.799077 11.371677 +8.478725 9.078455 +9.399902 8.947744 +7.305377 8.144973 +7.613377 6.668798 +10.681308 10.830845 +9.973855 10.004133 +9.369918 7.855433 +8.838223 7.429033 +9.521831 10.623930 +9.724419 10.447452 +8.890224 9.275923 +9.932763 11.589953 +10.839337 9.051250 +8.497708 7.521701 +8.440236 8.705670 +9.063566 9.755744 +8.449647 8.929485 +8.554576 8.063231 +10.348606 10.550718 +5.985254 5.186844 +9.931937 10.175582 +9.854922 9.201393 +9.114580 9.134215 +10.334899 8.543604 diff --git a/docs/13.利用PCA来简化数据.md b/docs/13.利用PCA来简化数据.md index b2b41afe..dca471e2 100644 --- a/docs/13.利用PCA来简化数据.md +++ b/docs/13.利用PCA来简化数据.md @@ -24,7 +24,7 @@ * `例如: 考察一个人的智力情况,就直接看数学成绩就行(存在:数学、语文、英语成绩)` * a.将数据从原来的坐标系转换到了新的坐标系,新的坐标系的选择是由数据本身决定的。 * b.第一个新坐标轴选择的是原始数据中`方差最大`的方向 - * c.第二个新坐标轴的选择和第一个坐标轴`正交(orthogonal)`且具有`最大方差`的方向。 + * c.第二个新坐标轴的选择和第一个坐标轴`正交(orthogonal 如果是二维空间就叫垂直)`且具有`最大方差`的方向。 * d.该过程一直重复,重复次数为原始数据中特征的数目。 * 我们会发现,大部分方差都包含在最前面的几个新坐标轴中。因此,我们可以忽略余下的坐标轴,即对数据进行了降维处理。 * 2) 因子分析(Factor Analysis) @@ -53,6 +53,10 @@ > 通过PCA进行降维处理,我们就可以同时获得SVM和决策树的优点: * 一方面,得到了和决策树一样简单的分类器,同时分类间隔和SVM一样好。 + * 1.第一个主成分就是来自于数据差异性最大(即 方差最大)的方向提取出来 + * 2.第二个主成分就是来自于数据差异性次大的方向,并且该方向于第一个主成分方向正交。 + * 3.通过数据集的协方差矩阵及其特征值分析,我们就可以得到这些主成分的值。 + * 一旦得到了协方差矩阵的特征向量,我们就可以保留最大的N个值。这些特征向量也给出了N个最重要特征的真实结构。我们可以通过将数据乘上这N个特征向量而将它转换到新的空间。 * 例如下图: * ![应用PCA降维](/images/13.PCA/应用PCA降维.png) diff --git a/src/python/13.PCA/pca.py b/src/python/13.PCA/pca.py new file mode 100644 index 00000000..86ee7958 --- /dev/null +++ b/src/python/13.PCA/pca.py @@ -0,0 +1,45 @@ +#!/usr/bin/python +# coding:utf8 + +''' +Created on Jun 1, 2011 +Update on 2017-04-06 +@author: Peter Harrington/片刻 +''' +print(__doc__) +from numpy import * + + +def loadDataSet(fileName, delim='\t'): + fr = open(fileName) + stringArr = [line.strip().split(delim) for line in fr.readlines()] + datArr = [map(float,line) for line in stringArr] + return mat(datArr) + + +def pca(dataMat, topNfeat=9999999): + meanVals = mean(dataMat, axis=0) + meanRemoved = dataMat - meanVals #remove mean + covMat = cov(meanRemoved, rowvar=0) + eigVals,eigVects = linalg.eig(mat(covMat)) + eigValInd = argsort(eigVals) #sort, sort goes smallest to largest + eigValInd = eigValInd[:-(topNfeat+1):-1] #cut off unwanted dimensions + redEigVects = eigVects[:,eigValInd] #reorganize eig vects largest to smallest + lowDDataMat = meanRemoved * redEigVects#transform data into new dimensions + reconMat = (lowDDataMat * redEigVects.T) + meanVals + return lowDDataMat, reconMat + + +def replaceNanWithMean(): + datMat = loadDataSet('secom.data', ' ') + numFeat = shape(datMat)[1] + for i in range(numFeat): + meanVal = mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i]) #values that are not NaN (a number) + datMat[nonzero(isnan(datMat[:,i].A))[0],i] = meanVal #set NaN values to mean + return datMat + + +if __name__ == "__main__": + dataMat = loadDataSet('data/13.PCA/testSet.txt') + lowDmat, reconMat = pca(dataMat, 1) + print shape(lowDmat) From 1b066141d824dad38ae5d720957eaf01f5156e13 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Thu, 6 Apr 2017 16:15:58 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=9B=B4=E6=96=B011.Apriori=E7=9A=84?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/11.使用Apriori算法进行关联分析.md | 6 +++--- docs/13.利用PCA来简化数据.md | 8 ++++++-- .../11.Apriori/交易清单.png | Bin .../11.Apriori/所有可能的项集组合.png | Bin .../11.Apriori/非频繁项集.png | Bin 5 files changed, 9 insertions(+), 5 deletions(-) rename docs/11.交易清单.png => images/11.Apriori/交易清单.png (100%) rename docs/11.所有可能的项集组合.png => images/11.Apriori/所有可能的项集组合.png (100%) rename docs/11.非频繁项集.png => images/11.Apriori/非频繁项集.png (100%) diff --git a/docs/11.使用Apriori算法进行关联分析.md b/docs/11.使用Apriori算法进行关联分析.md index 2dc4a838..04503a60 100644 --- a/docs/11.使用Apriori算法进行关联分析.md +++ b/docs/11.使用Apriori算法进行关联分析.md @@ -14,7 +14,7 @@ * 2.关联规则(association rules): 暗示两种物品之间可能存在很强的关系 * 总结:首先需要找到频繁项集,才能找到关联规则。 * 如下图: - * ![交易清单](./11.交易清单.png) + * ![交易清单](/images/11.Apriori/交易清单.png) * 支持度(support) * 数据集中包含该项集的记录所占的比例 * 例如上图中:{豆奶}的支持度=4/5, {豆奶,尿布}的支持度=3/5 @@ -36,10 +36,10 @@ * 如果某个项集是频繁的,那么它的所有子集也是频繁的,反之,一个项集是非频繁的,那么它的所有超集也是非频繁的。 * 例如: 我们假设知道{2, 3}是非频繁项,那么{0, 2, 3}, {1, 2, 3}, {0, 1, 2, 3}都是非频繁项。 * 如下图: - * ![非频繁项集](./11.非频繁项集.png) + * ![非频繁项集](/images/11.Apriori/非频繁项集.png) * 分级法: 频繁项集->关联规则 * 1.首先从一个频繁项集开始,接着创建一个规则列表,其中规则右部分只包含一个元素,然后对这个规则进行测试。 * 2.接下来合并所有剩余规则来创建一个新的规则列表,其中规则右部包含两个元素。 * 如下图: - * ![所有可能的项集组合](./11.所有可能的项集组合.png) + * ![所有可能的项集组合](/images/11.Apriori/所有可能的项集组合.png) * 最后: 每次增加频繁项集的大小,Apriori算法都会重新扫描整个数据集,是否有优化空间呢? 下一章:FP-growth算法等着你的到来 diff --git a/docs/13.利用PCA来简化数据.md b/docs/13.利用PCA来简化数据.md index dca471e2..cfa3c031 100644 --- a/docs/13.利用PCA来简化数据.md +++ b/docs/13.利用PCA来简化数据.md @@ -16,8 +16,12 @@ * 3) 去除噪音 * 4) 是的结果易懂 -> 适用范围: 在已标注与未标注的数据上都有降维技术。这里我们将主要关注未标注数据上的降维技术,将技术同样也可以应用于已标注的数据。 -> 在以下3中降维技术中, PCA的应用目前最为广泛,因此本章主要关注PCA。 +> 适用范围: + +* 在已标注与未标注的数据上都有降维技术。 +* 这里我们将主要关注未标注数据上的降维技术,将技术同样也可以应用于已标注的数据。 + +> 在以下3种降维技术中, PCA的应用目前最为广泛,因此本章主要关注PCA。 * 1) 主成分分析(Principal Component Analysis, PCA) * `通俗理解:就是找出一个最主要的特征,然后进行分析。` diff --git a/docs/11.交易清单.png b/images/11.Apriori/交易清单.png similarity index 100% rename from docs/11.交易清单.png rename to images/11.Apriori/交易清单.png diff --git a/docs/11.所有可能的项集组合.png b/images/11.Apriori/所有可能的项集组合.png similarity index 100% rename from docs/11.所有可能的项集组合.png rename to images/11.Apriori/所有可能的项集组合.png diff --git a/docs/11.非频繁项集.png b/images/11.Apriori/非频繁项集.png similarity index 100% rename from docs/11.非频繁项集.png rename to images/11.Apriori/非频繁项集.png From 84670bb30ca3dd12bf1b61001866a47d6ee1f721 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Thu, 6 Apr 2017 16:20:19 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=9B=B4=E6=96=B07.AdaBoost=E7=9A=84?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/7.利用AdaBoost元算法提高分类.md | 6 +++--- docs/7.ROC曲线.png => images/7.AdaBoost/ROC曲线.png | Bin .../7.AdaBoost/代价函数.png | Bin docs/7.过拟合.png => images/7.AdaBoost/过拟合.png | Bin 4 files changed, 3 insertions(+), 3 deletions(-) rename docs/7.ROC曲线.png => images/7.AdaBoost/ROC曲线.png (100%) rename docs/7.代价函数.png => images/7.AdaBoost/代价函数.png (100%) rename docs/7.过拟合.png => images/7.AdaBoost/过拟合.png (100%) diff --git a/docs/7.利用AdaBoost元算法提高分类.md b/docs/7.利用AdaBoost元算法提高分类.md index e9cdc3a7..3c6d6621 100644 --- a/docs/7.利用AdaBoost元算法提高分类.md +++ b/docs/7.利用AdaBoost元算法提高分类.md @@ -32,18 +32,18 @@ * 单层决策树(decision stump, 也称决策树桩)是一种简单的决策树。 * 过拟合(overfitting, 也称为过学习) * 发现测试错误率在达到一个最小值之后有开始上升,这种现象称为过拟合。 - * ![过拟合](./7.过拟合.png) + * ![过拟合](/images/7.AdaBoost/过拟合.png) * 非均衡分类问题 * 现象: * 判断马是否能继续生存 * 过滤垃圾邮件 * ROC曲线: 最佳的分类器应该尽可能地处于左上角 - * ![ROC曲线](./7.ROC曲线.png) + * ![ROC曲线](/images/7.AdaBoost/ROC曲线.png) * 对不同的ROC曲线进行比较的一个指标是曲线下的面积(Area Unser the Curve, AUC). * AUC给出的是分类器的平均性能值,当然它并不能完全代替对整条曲线的观察。 * 一个完美分类器的AUC为1,而随机猜测的AUC则为0.5。 * 基于代价函数的分类器决策控制:`TP*(-5)+FN*1+FP*50+TN*0` - * ![代价函数](./7.代价函数.png) + * ![代价函数](/images/7.AdaBoost/代价函数.png) * 欠抽样(undersampling)或者过抽样(oversampling) * 欠抽样: 意味着删除样例 * 过抽样: 意味着复制样例(重复使用) diff --git a/docs/7.ROC曲线.png b/images/7.AdaBoost/ROC曲线.png similarity index 100% rename from docs/7.ROC曲线.png rename to images/7.AdaBoost/ROC曲线.png diff --git a/docs/7.代价函数.png b/images/7.AdaBoost/代价函数.png similarity index 100% rename from docs/7.代价函数.png rename to images/7.AdaBoost/代价函数.png diff --git a/docs/7.过拟合.png b/images/7.AdaBoost/过拟合.png similarity index 100% rename from docs/7.过拟合.png rename to images/7.AdaBoost/过拟合.png From 67cb19e1fda801c17fb1a785cfa6df24393a9b66 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Thu, 6 Apr 2017 16:22:39 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=9B=B4=E6=96=B03.=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E6=A0=91=E7=9A=84=E5=9B=BE=E7=89=87=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/3.决策树.md | 2 +- .../3.DecisionTree/决策树流程介绍图.jpg | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/3.决策树流程介绍图.jpg => images/3.DecisionTree/决策树流程介绍图.jpg (100%) diff --git a/docs/3.决策树.md b/docs/3.决策树.md index 3d6e6ed7..7f0bd058 100644 --- a/docs/3.决策树.md +++ b/docs/3.决策树.md @@ -24,4 +24,4 @@ * 基尼不纯度(Gini impurity) [本书不做过多的介绍] * 简单来说:就是从一个数据集中随机选取子项,度量其被错误分类到其他分组里的概率。 * 流程介绍图 -* ![决策树流程介绍图](./3.决策树流程介绍图.jpg) +* ![决策树流程介绍图](/images/3.DecisionTree/决策树流程介绍图.jpg) diff --git a/docs/3.决策树流程介绍图.jpg b/images/3.DecisionTree/决策树流程介绍图.jpg similarity index 100% rename from docs/3.决策树流程介绍图.jpg rename to images/3.DecisionTree/决策树流程介绍图.jpg From a368d366fa5131b206666f5c5637e24b6999d659 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Thu, 6 Apr 2017 16:25:19 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=9B=B4=E6=96=B01.=E6=9C=BA=E5=99=A8?= =?UTF-8?q?=E5=AD=A6=E4=B9=A0=E5=9F=BA=E7=A1=80=E7=9A=84=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/1.机器学习基础.md | 4 ++-- .../1.MLFoundation/机器学习基础-选择算法.png | Bin .../1.MLFoundation/机器学习基础训练过程.png | Bin 3 files changed, 2 insertions(+), 2 deletions(-) rename docs/1.机器学习基础-选择算法.png => images/1.MLFoundation/机器学习基础-选择算法.png (100%) rename docs/1.机器学习基础训练过程.png => images/1.MLFoundation/机器学习基础训练过程.png (100%) diff --git a/docs/1.机器学习基础.md b/docs/1.机器学习基础.md index c2d66dba..699c66e1 100644 --- a/docs/1.机器学习基础.md +++ b/docs/1.机器学习基础.md @@ -18,7 +18,7 @@ * 在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。 * 机器学习的训练过程 - * ![机器学习训练过程图](./1.机器学习基础训练过程.png) + * ![机器学习训练过程图](/images/1.MLFoundation/机器学习基础训练过程.png) * 监督学习 * 必须知道预测什么,即必须知道目标变量的分类信息。分类和回归属于监督学习。 @@ -43,7 +43,7 @@ * 想要完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。 * 需要分析或收集的数据是什么 * 举例 -* ![选择算法图](./1.机器学习基础-选择算法.png) +* ![选择算法图](/images/1.MLFoundation/机器学习基础-选择算法.png) * 开发的步骤 * 1.收集数据 diff --git a/docs/1.机器学习基础-选择算法.png b/images/1.MLFoundation/机器学习基础-选择算法.png similarity index 100% rename from docs/1.机器学习基础-选择算法.png rename to images/1.MLFoundation/机器学习基础-选择算法.png diff --git a/docs/1.机器学习基础训练过程.png b/images/1.MLFoundation/机器学习基础训练过程.png similarity index 100% rename from docs/1.机器学习基础训练过程.png rename to images/1.MLFoundation/机器学习基础训练过程.png