├── .DS_Store ├── Decision_Tree ├── .DS_Store ├── .ipynb_checkpoints │ └── decisionTree-checkpoint.ipynb ├── README.md ├── __pycache__ │ └── treePlotter.cpython-37.pyc ├── data │ ├── dataset.txt │ └── testset.txt ├── decisionTree.ipynb └── treePlotter.py ├── EM └── README.md ├── KMeans ├── .DS_Store ├── .ipynb_checkpoints │ └── KMeans-checkpoint.ipynb ├── KMeans.ipynb ├── README.md └── data │ ├── bird.png │ └── data.mat ├── KNN ├── .DS_Store ├── .ipynb_checkpoints │ └── KNN-checkpoint.ipynb ├── KNN.ipynb ├── README.md └── data │ ├── datingTestSet.txt │ └── datingTestSet2.txt ├── LDA └── README.md ├── Linear_Regression ├── .DS_Store ├── .ipynb_checkpoints │ └── linearRegression-checkpoint.ipynb ├── README.md ├── data │ └── data.txt └── linearRegression.ipynb ├── Logistic_Regression ├── .DS_Store ├── .ipynb_checkpoints │ └── logisticRegression-checkpoint.ipynb ├── data │ ├── data1.txt │ └── data2.txt └── logisticRegression.ipynb ├── Navie_Bayes ├── .DS_Store ├── .ipynb_checkpoints │ └── navie_bayes-checkpoint.ipynb ├── README.md ├── data │ ├── .DS_Store │ ├── ham │ │ ├── 1.txt │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ ├── 15.txt │ │ ├── 16.txt │ │ ├── 17.txt │ │ ├── 18.txt │ │ ├── 19.txt │ │ ├── 2.txt │ │ ├── 20.txt │ │ ├── 21.txt │ │ ├── 22.txt │ │ ├── 23.txt │ │ ├── 24.txt │ │ ├── 25.txt │ │ ├── 3.txt │ │ ├── 4.txt │ │ ├── 5.txt │ │ ├── 6.txt │ │ ├── 7.txt │ │ ├── 8.txt │ │ └── 9.txt │ └── spam │ │ ├── 1.txt │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ ├── 15.txt │ │ ├── 16.txt │ │ ├── 17.txt │ │ ├── 18.txt │ │ ├── 19.txt │ │ ├── 2.txt │ │ ├── 20.txt │ │ ├── 21.txt │ │ ├── 22.txt │ │ ├── 23.txt │ │ ├── 24.txt │ │ ├── 25.txt │ │ ├── 3.txt │ │ ├── 4.txt │ │ ├── 5.txt │ │ ├── 6.txt │ │ ├── 7.txt │ │ ├── 8.txt │ │ └── 9.txt └── navieBayes.ipynb ├── PCA ├── .DS_Store ├── .ipynb_checkpoints │ └── PCA-checkpoint.ipynb ├── PCA.ipynb ├── README.md └── data │ ├── data.mat │ └── data_faces.mat ├── README.md ├── SVM └── README.md └── src ├── EM1.jpeg ├── EM10.jpeg ├── EM2.jpeg ├── EM3.jpeg ├── EM4.jpeg ├── EM5.jpeg ├── EM6.jpeg ├── EM7.jpeg ├── EM8.jpeg ├── EM9.jpeg ├── PCA1.jpeg ├── PCA2.jpeg ├── PCA3.jpeg ├── PCA4.jpeg ├── PCA5.jpeg ├── PCA6.jpeg ├── PCA7.jpeg ├── SVM1.jpeg ├── SVM10.jpeg ├── SVM11.jpeg ├── SVM12.jpeg ├── SVM13.jpeg ├── SVM14.jpeg ├── SVM2.jpeg ├── SVM3.jpeg ├── SVM4.jpeg ├── SVM5.jpeg ├── SVM6.jpeg ├── SVM7.jpeg ├── SVM8.jpeg ├── SVM9.jpeg ├── fisher1.jpeg ├── fisher2.jpeg ├── fisher3.jpeg ├── linearRegression1.jpeg ├── linearRegression2.jpeg ├── linearRegression3.jpeg ├── linearRegression4.jpeg ├── navieBayes1.jpeg ├── navieBayes2.jpeg ├── navieBayes3.jpeg ├── navieBayes4.jpeg ├── navieBayes5.jpeg ├── navieBayes6.jpeg ├── navieBayes7.jpeg └── navieBayes8.jpeg /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/.DS_Store -------------------------------------------------------------------------------- /Decision_Tree/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/Decision_Tree/.DS_Store -------------------------------------------------------------------------------- /Decision_Tree/README.md: -------------------------------------------------------------------------------- 1 | TODO -------------------------------------------------------------------------------- /Decision_Tree/__pycache__/treePlotter.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/Decision_Tree/__pycache__/treePlotter.cpython-37.pyc -------------------------------------------------------------------------------- /Decision_Tree/data/dataset.txt: -------------------------------------------------------------------------------- 1 | 0,0,0,0,0 2 | 0,0,0,1,0 3 | 0,1,0,1,1 4 | 0,1,1,0,1 5 | 0,0,0,0,0 6 | 1,0,0,0,0 7 | 1,0,0,1,0 8 | 1,1,1,1,1 9 | 1,0,1,2,1 10 | 1,0,1,2,1 11 | 2,0,1,2,1 12 | 2,0,1,1,1 13 | 2,1,0,1,1 14 | 2,1,0,2,1 15 | 2,0,0,0,0 16 | 2,0,0,2,0 17 | -------------------------------------------------------------------------------- /Decision_Tree/data/testset.txt: -------------------------------------------------------------------------------- 1 | 0,0,0,1 2 | 0,1,0,1 3 | 1,0,1,2 4 | 1,0,0,1 5 | 2,1,0,2 6 | 2,0,0,0 7 | 2,0,0,2 -------------------------------------------------------------------------------- /Decision_Tree/treePlotter.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | from pylab import mpl 3 | mpl.rcParams['font.sans-serif'] = ['SimHei'] 4 | decisionNode = dict(boxstyle="sawtooth", fc="0.8") 5 | leafNode = dict(boxstyle="round4", fc="0.8") 6 | arrow_args = dict(arrowstyle="<-") 7 | 8 | def plotNode(nodeTxt, centerPt, parentPt, nodeType): 9 | createPlot.ax1.annotate(nodeTxt, xy=parentPt, xycoords='axes fraction', \ 10 | xytext=centerPt, textcoords='axes fraction', \ 11 | va="center", ha="center", bbox=nodeType, arrowprops=arrow_args) 12 | 13 | def getNumLeafs(myTree): 14 | numLeafs = 0 15 | firstStr = list(myTree.keys())[0] 16 | secondDict = myTree[firstStr] 17 | for key in secondDict.keys(): 18 | if type(secondDict[key]).__name__ == 'dict': 19 | numLeafs += getNumLeafs(secondDict[key]) 20 | else: 21 | numLeafs += 1 22 | return numLeafs 23 | 24 | def getTreeDepth(myTree): 25 | maxDepth = 0 26 | firstStr = list(myTree.keys())[0] 27 | secondDict = myTree[firstStr] 28 | for key in secondDict.keys(): 29 | if type(secondDict[key]).__name__ == 'dict': 30 | thisDepth = getTreeDepth(secondDict[key]) + 1 31 | else: 32 | thisDepth = 1 33 | if thisDepth > maxDepth: 34 | maxDepth = thisDepth 35 | return maxDepth 36 | 37 | def plotMidText(cntrPt, parentPt, txtString): 38 | xMid = (parentPt[0] - cntrPt[0]) / 2.0 + cntrPt[0] 39 | yMid = (parentPt[1] - cntrPt[1]) / 2.0 + cntrPt[1] 40 | createPlot.ax1.text(xMid, yMid, txtString) 41 | 42 | def plotTree(myTree, parentPt, nodeTxt): 43 | numLeafs = getNumLeafs(myTree) 44 | depth = getTreeDepth(myTree) 45 | firstStr = list(myTree.keys())[0] 46 | cntrPt = (plotTree.xOff + (1.0 + float(numLeafs)) / 2.0 / plotTree.totalw, plotTree.yOff) 47 | plotMidText(cntrPt, parentPt, nodeTxt) 48 | plotNode(firstStr, cntrPt, parentPt, decisionNode) 49 | secondDict = myTree[firstStr] 50 | plotTree.yOff = plotTree.yOff - 1.0 / plotTree.totalD 51 | for key in secondDict.keys(): 52 | if type(secondDict[key]).__name__ == 'dict': 53 | plotTree(secondDict[key], cntrPt, str(key)) 54 | else: 55 | plotTree.xOff = plotTree.xOff + 1.0 / plotTree.totalw 56 | plotNode(secondDict[key], (plotTree.xOff, plotTree.yOff), cntrPt, leafNode) 57 | plotMidText((plotTree.xOff, plotTree.yOff), cntrPt, str(key)) 58 | plotTree.yOff = plotTree.yOff + 1.0 / plotTree.totalD 59 | 60 | def createPlot(inTree): 61 | fig = plt.figure(1, facecolor='white') 62 | fig.clf() 63 | axprops = dict(xticks=[], yticks=[]) 64 | createPlot.ax1 = plt.subplot(111, frameon=False, **axprops) 65 | plotTree.totalw = float(getNumLeafs(inTree)) 66 | plotTree.totalD = float(getTreeDepth(inTree)) 67 | plotTree.xOff = -0.5 / plotTree.totalw 68 | plotTree.yOff = 1.0 69 | plotTree(inTree, (0.5, 1.0), '') 70 | #plt.show() 71 | #ID3决策树 72 | def ID3_Tree(inTree): 73 | fig = plt.figure(1, facecolor='white') 74 | fig.clf() 75 | axprops = dict(xticks=[], yticks=[]) 76 | createPlot.ax1 = plt.subplot(111, frameon=False, **axprops) 77 | plotTree.totalw = float(getNumLeafs(inTree)) 78 | plotTree.totalD = float(getTreeDepth(inTree)) 79 | plotTree.xOff = -0.5 / plotTree.totalw 80 | plotTree.yOff = 1.0 81 | plotTree(inTree, (0.5, 1.0), '') 82 | plt.title("ID3_Decision_Tree",fontsize=12,color='red') 83 | plt.show() 84 | 85 | #C4.5决策树 86 | def C45_Tree(inTree): 87 | fig = plt.figure(2, facecolor='white') 88 | fig.clf() 89 | axprops = dict(xticks=[], yticks=[]) 90 | createPlot.ax1 = plt.subplot(111, frameon=False, **axprops) 91 | plotTree.totalw = float(getNumLeafs(inTree)) 92 | plotTree.totalD = float(getTreeDepth(inTree)) 93 | plotTree.xOff = -0.5 / plotTree.totalw 94 | plotTree.yOff = 1.0 95 | plotTree(inTree, (0.5, 1.0), '') 96 | plt.title("C4.5_Decision_Tree",fontsize=12,color='red') 97 | plt.show() 98 | 99 | #CART决策树 100 | def CART_Tree(inTree): 101 | fig = plt.figure(3, facecolor='white') 102 | fig.clf() 103 | axprops = dict(xticks=[], yticks=[]) 104 | createPlot.ax1 = plt.subplot(111, frameon=False, **axprops) 105 | plotTree.totalw = float(getNumLeafs(inTree)) 106 | plotTree.totalD = float(getTreeDepth(inTree)) 107 | plotTree.xOff = -0.5 / plotTree.totalw 108 | plotTree.yOff = 1.0 109 | plotTree(inTree, (0.5, 1.0), '') 110 | plt.title("CART_Decision_Tree",fontsize=12,color='red') 111 | plt.show() 112 | 113 | -------------------------------------------------------------------------------- /EM/README.md: -------------------------------------------------------------------------------- 1 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/EM1.jpeg) 2 | 3 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/EM2.jpeg) 4 | 5 | 6 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/EM3.jpeg) 7 | 8 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/EM4.jpeg) 9 | 10 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/EM5.jpeg) 11 | 12 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/EM6.jpeg) 13 | 14 | 15 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/EM7.jpeg) 16 | 17 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/EM8.jpeg) 18 | 19 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/EM9.jpeg) 20 | 21 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/EM10.jpeg) 22 | 23 | -------------------------------------------------------------------------------- /KMeans/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/KMeans/.DS_Store -------------------------------------------------------------------------------- /KMeans/.ipynb_checkpoints/KMeans-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 4 6 | } 7 | -------------------------------------------------------------------------------- /KMeans/README.md: -------------------------------------------------------------------------------- 1 | TODO -------------------------------------------------------------------------------- /KMeans/data/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/KMeans/data/bird.png -------------------------------------------------------------------------------- /KMeans/data/data.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/KMeans/data/data.mat -------------------------------------------------------------------------------- /KNN/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/KNN/.DS_Store -------------------------------------------------------------------------------- /KNN/.ipynb_checkpoints/KNN-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 4 6 | } 7 | -------------------------------------------------------------------------------- /KNN/README.md: -------------------------------------------------------------------------------- 1 | TODO -------------------------------------------------------------------------------- /KNN/data/datingTestSet.txt: -------------------------------------------------------------------------------- 1 | 40920 8.326976 0.953952 largeDoses 2 | 14488 7.153469 1.673904 smallDoses 3 | 26052 1.441871 0.805124 didntLike 4 | 75136 13.147394 0.428964 didntLike 5 | 38344 1.669788 0.134296 didntLike 6 | 72993 10.141740 1.032955 didntLike 7 | 35948 6.830792 1.213192 largeDoses 8 | 42666 13.276369 0.543880 largeDoses 9 | 67497 8.631577 0.749278 didntLike 10 | 35483 12.273169 1.508053 largeDoses 11 | 50242 3.723498 0.831917 didntLike 12 | 63275 8.385879 1.669485 didntLike 13 | 5569 4.875435 0.728658 smallDoses 14 | 51052 4.680098 0.625224 didntLike 15 | 77372 15.299570 0.331351 didntLike 16 | 43673 1.889461 0.191283 didntLike 17 | 61364 7.516754 1.269164 didntLike 18 | 69673 14.239195 0.261333 didntLike 19 | 15669 0.000000 1.250185 smallDoses 20 | 28488 10.528555 1.304844 largeDoses 21 | 6487 3.540265 0.822483 smallDoses 22 | 37708 2.991551 0.833920 didntLike 23 | 22620 5.297865 0.638306 smallDoses 24 | 28782 6.593803 0.187108 largeDoses 25 | 19739 2.816760 1.686209 smallDoses 26 | 36788 12.458258 0.649617 largeDoses 27 | 5741 0.000000 1.656418 smallDoses 28 | 28567 9.968648 0.731232 largeDoses 29 | 6808 1.364838 0.640103 smallDoses 30 | 41611 0.230453 1.151996 didntLike 31 | 36661 11.865402 0.882810 largeDoses 32 | 43605 0.120460 1.352013 didntLike 33 | 15360 8.545204 1.340429 largeDoses 34 | 63796 5.856649 0.160006 didntLike 35 | 10743 9.665618 0.778626 smallDoses 36 | 70808 9.778763 1.084103 didntLike 37 | 72011 4.932976 0.632026 didntLike 38 | 5914 2.216246 0.587095 smallDoses 39 | 14851 14.305636 0.632317 largeDoses 40 | 33553 12.591889 0.686581 largeDoses 41 | 44952 3.424649 1.004504 didntLike 42 | 17934 0.000000 0.147573 smallDoses 43 | 27738 8.533823 0.205324 largeDoses 44 | 29290 9.829528 0.238620 largeDoses 45 | 42330 11.492186 0.263499 largeDoses 46 | 36429 3.570968 0.832254 didntLike 47 | 39623 1.771228 0.207612 didntLike 48 | 32404 3.513921 0.991854 didntLike 49 | 27268 4.398172 0.975024 didntLike 50 | 5477 4.276823 1.174874 smallDoses 51 | 14254 5.946014 1.614244 smallDoses 52 | 68613 13.798970 0.724375 didntLike 53 | 41539 10.393591 1.663724 largeDoses 54 | 7917 3.007577 0.297302 smallDoses 55 | 21331 1.031938 0.486174 smallDoses 56 | 8338 4.751212 0.064693 smallDoses 57 | 5176 3.692269 1.655113 smallDoses 58 | 18983 10.448091 0.267652 largeDoses 59 | 68837 10.585786 0.329557 didntLike 60 | 13438 1.604501 0.069064 smallDoses 61 | 48849 3.679497 0.961466 didntLike 62 | 12285 3.795146 0.696694 smallDoses 63 | 7826 2.531885 1.659173 smallDoses 64 | 5565 9.733340 0.977746 smallDoses 65 | 10346 6.093067 1.413798 smallDoses 66 | 1823 7.712960 1.054927 smallDoses 67 | 9744 11.470364 0.760461 largeDoses 68 | 16857 2.886529 0.934416 smallDoses 69 | 39336 10.054373 1.138351 largeDoses 70 | 65230 9.972470 0.881876 didntLike 71 | 2463 2.335785 1.366145 smallDoses 72 | 27353 11.375155 1.528626 largeDoses 73 | 16191 0.000000 0.605619 smallDoses 74 | 12258 4.126787 0.357501 smallDoses 75 | 42377 6.319522 1.058602 didntLike 76 | 25607 8.680527 0.086955 largeDoses 77 | 77450 14.856391 1.129823 didntLike 78 | 58732 2.454285 0.222380 didntLike 79 | 46426 7.292202 0.548607 largeDoses 80 | 32688 8.745137 0.857348 largeDoses 81 | 64890 8.579001 0.683048 didntLike 82 | 8554 2.507302 0.869177 smallDoses 83 | 28861 11.415476 1.505466 largeDoses 84 | 42050 4.838540 1.680892 didntLike 85 | 32193 10.339507 0.583646 largeDoses 86 | 64895 6.573742 1.151433 didntLike 87 | 2355 6.539397 0.462065 smallDoses 88 | 0 2.209159 0.723567 smallDoses 89 | 70406 11.196378 0.836326 didntLike 90 | 57399 4.229595 0.128253 didntLike 91 | 41732 9.505944 0.005273 largeDoses 92 | 11429 8.652725 1.348934 largeDoses 93 | 75270 17.101108 0.490712 didntLike 94 | 5459 7.871839 0.717662 smallDoses 95 | 73520 8.262131 1.361646 didntLike 96 | 40279 9.015635 1.658555 largeDoses 97 | 21540 9.215351 0.806762 largeDoses 98 | 17694 6.375007 0.033678 smallDoses 99 | 22329 2.262014 1.022169 didntLike 100 | 46570 5.677110 0.709469 didntLike 101 | 42403 11.293017 0.207976 largeDoses 102 | 33654 6.590043 1.353117 didntLike 103 | 9171 4.711960 0.194167 smallDoses 104 | 28122 8.768099 1.108041 largeDoses 105 | 34095 11.502519 0.545097 largeDoses 106 | 1774 4.682812 0.578112 smallDoses 107 | 40131 12.446578 0.300754 largeDoses 108 | 13994 12.908384 1.657722 largeDoses 109 | 77064 12.601108 0.974527 didntLike 110 | 11210 3.929456 0.025466 smallDoses 111 | 6122 9.751503 1.182050 largeDoses 112 | 15341 3.043767 0.888168 smallDoses 113 | 44373 4.391522 0.807100 didntLike 114 | 28454 11.695276 0.679015 largeDoses 115 | 63771 7.879742 0.154263 didntLike 116 | 9217 5.613163 0.933632 smallDoses 117 | 69076 9.140172 0.851300 didntLike 118 | 24489 4.258644 0.206892 didntLike 119 | 16871 6.799831 1.221171 smallDoses 120 | 39776 8.752758 0.484418 largeDoses 121 | 5901 1.123033 1.180352 smallDoses 122 | 40987 10.833248 1.585426 largeDoses 123 | 7479 3.051618 0.026781 smallDoses 124 | 38768 5.308409 0.030683 largeDoses 125 | 4933 1.841792 0.028099 smallDoses 126 | 32311 2.261978 1.605603 didntLike 127 | 26501 11.573696 1.061347 largeDoses 128 | 37433 8.038764 1.083910 largeDoses 129 | 23503 10.734007 0.103715 largeDoses 130 | 68607 9.661909 0.350772 didntLike 131 | 27742 9.005850 0.548737 largeDoses 132 | 11303 0.000000 0.539131 smallDoses 133 | 0 5.757140 1.062373 smallDoses 134 | 32729 9.164656 1.624565 largeDoses 135 | 24619 1.318340 1.436243 didntLike 136 | 42414 14.075597 0.695934 largeDoses 137 | 20210 10.107550 1.308398 largeDoses 138 | 33225 7.960293 1.219760 largeDoses 139 | 54483 6.317292 0.018209 didntLike 140 | 18475 12.664194 0.595653 largeDoses 141 | 33926 2.906644 0.581657 didntLike 142 | 43865 2.388241 0.913938 didntLike 143 | 26547 6.024471 0.486215 largeDoses 144 | 44404 7.226764 1.255329 largeDoses 145 | 16674 4.183997 1.275290 smallDoses 146 | 8123 11.850211 1.096981 largeDoses 147 | 42747 11.661797 1.167935 largeDoses 148 | 56054 3.574967 0.494666 didntLike 149 | 10933 0.000000 0.107475 smallDoses 150 | 18121 7.937657 0.904799 largeDoses 151 | 11272 3.365027 1.014085 smallDoses 152 | 16297 0.000000 0.367491 smallDoses 153 | 28168 13.860672 1.293270 largeDoses 154 | 40963 10.306714 1.211594 largeDoses 155 | 31685 7.228002 0.670670 largeDoses 156 | 55164 4.508740 1.036192 didntLike 157 | 17595 0.366328 0.163652 smallDoses 158 | 1862 3.299444 0.575152 smallDoses 159 | 57087 0.573287 0.607915 didntLike 160 | 63082 9.183738 0.012280 didntLike 161 | 51213 7.842646 1.060636 largeDoses 162 | 6487 4.750964 0.558240 smallDoses 163 | 4805 11.438702 1.556334 largeDoses 164 | 30302 8.243063 1.122768 largeDoses 165 | 68680 7.949017 0.271865 didntLike 166 | 17591 7.875477 0.227085 smallDoses 167 | 74391 9.569087 0.364856 didntLike 168 | 37217 7.750103 0.869094 largeDoses 169 | 42814 0.000000 1.515293 didntLike 170 | 14738 3.396030 0.633977 smallDoses 171 | 19896 11.916091 0.025294 largeDoses 172 | 14673 0.460758 0.689586 smallDoses 173 | 32011 13.087566 0.476002 largeDoses 174 | 58736 4.589016 1.672600 didntLike 175 | 54744 8.397217 1.534103 didntLike 176 | 29482 5.562772 1.689388 didntLike 177 | 27698 10.905159 0.619091 largeDoses 178 | 11443 1.311441 1.169887 smallDoses 179 | 56117 10.647170 0.980141 largeDoses 180 | 39514 0.000000 0.481918 didntLike 181 | 26627 8.503025 0.830861 largeDoses 182 | 16525 0.436880 1.395314 smallDoses 183 | 24368 6.127867 1.102179 didntLike 184 | 22160 12.112492 0.359680 largeDoses 185 | 6030 1.264968 1.141582 smallDoses 186 | 6468 6.067568 1.327047 smallDoses 187 | 22945 8.010964 1.681648 largeDoses 188 | 18520 3.791084 0.304072 smallDoses 189 | 34914 11.773195 1.262621 largeDoses 190 | 6121 8.339588 1.443357 smallDoses 191 | 38063 2.563092 1.464013 didntLike 192 | 23410 5.954216 0.953782 didntLike 193 | 35073 9.288374 0.767318 largeDoses 194 | 52914 3.976796 1.043109 didntLike 195 | 16801 8.585227 1.455708 largeDoses 196 | 9533 1.271946 0.796506 smallDoses 197 | 16721 0.000000 0.242778 smallDoses 198 | 5832 0.000000 0.089749 smallDoses 199 | 44591 11.521298 0.300860 largeDoses 200 | 10143 1.139447 0.415373 smallDoses 201 | 21609 5.699090 1.391892 smallDoses 202 | 23817 2.449378 1.322560 didntLike 203 | 15640 0.000000 1.228380 smallDoses 204 | 8847 3.168365 0.053993 smallDoses 205 | 50939 10.428610 1.126257 largeDoses 206 | 28521 2.943070 1.446816 didntLike 207 | 32901 10.441348 0.975283 largeDoses 208 | 42850 12.478764 1.628726 largeDoses 209 | 13499 5.856902 0.363883 smallDoses 210 | 40345 2.476420 0.096075 didntLike 211 | 43547 1.826637 0.811457 didntLike 212 | 70758 4.324451 0.328235 didntLike 213 | 19780 1.376085 1.178359 smallDoses 214 | 44484 5.342462 0.394527 didntLike 215 | 54462 11.835521 0.693301 largeDoses 216 | 20085 12.423687 1.424264 largeDoses 217 | 42291 12.161273 0.071131 largeDoses 218 | 47550 8.148360 1.649194 largeDoses 219 | 11938 1.531067 1.549756 smallDoses 220 | 40699 3.200912 0.309679 didntLike 221 | 70908 8.862691 0.530506 didntLike 222 | 73989 6.370551 0.369350 didntLike 223 | 11872 2.468841 0.145060 smallDoses 224 | 48463 11.054212 0.141508 largeDoses 225 | 15987 2.037080 0.715243 smallDoses 226 | 70036 13.364030 0.549972 didntLike 227 | 32967 10.249135 0.192735 largeDoses 228 | 63249 10.464252 1.669767 didntLike 229 | 42795 9.424574 0.013725 largeDoses 230 | 14459 4.458902 0.268444 smallDoses 231 | 19973 0.000000 0.575976 smallDoses 232 | 5494 9.686082 1.029808 largeDoses 233 | 67902 13.649402 1.052618 didntLike 234 | 25621 13.181148 0.273014 largeDoses 235 | 27545 3.877472 0.401600 didntLike 236 | 58656 1.413952 0.451380 didntLike 237 | 7327 4.248986 1.430249 smallDoses 238 | 64555 8.779183 0.845947 didntLike 239 | 8998 4.156252 0.097109 smallDoses 240 | 11752 5.580018 0.158401 smallDoses 241 | 76319 15.040440 1.366898 didntLike 242 | 27665 12.793870 1.307323 largeDoses 243 | 67417 3.254877 0.669546 didntLike 244 | 21808 10.725607 0.588588 largeDoses 245 | 15326 8.256473 0.765891 smallDoses 246 | 20057 8.033892 1.618562 largeDoses 247 | 79341 10.702532 0.204792 didntLike 248 | 15636 5.062996 1.132555 smallDoses 249 | 35602 10.772286 0.668721 largeDoses 250 | 28544 1.892354 0.837028 didntLike 251 | 57663 1.019966 0.372320 didntLike 252 | 78727 15.546043 0.729742 didntLike 253 | 68255 11.638205 0.409125 didntLike 254 | 14964 3.427886 0.975616 smallDoses 255 | 21835 11.246174 1.475586 largeDoses 256 | 7487 0.000000 0.645045 smallDoses 257 | 8700 0.000000 1.424017 smallDoses 258 | 26226 8.242553 0.279069 largeDoses 259 | 65899 8.700060 0.101807 didntLike 260 | 6543 0.812344 0.260334 smallDoses 261 | 46556 2.448235 1.176829 didntLike 262 | 71038 13.230078 0.616147 didntLike 263 | 47657 0.236133 0.340840 didntLike 264 | 19600 11.155826 0.335131 largeDoses 265 | 37422 11.029636 0.505769 largeDoses 266 | 1363 2.901181 1.646633 smallDoses 267 | 26535 3.924594 1.143120 didntLike 268 | 47707 2.524806 1.292848 didntLike 269 | 38055 3.527474 1.449158 didntLike 270 | 6286 3.384281 0.889268 smallDoses 271 | 10747 0.000000 1.107592 smallDoses 272 | 44883 11.898890 0.406441 largeDoses 273 | 56823 3.529892 1.375844 didntLike 274 | 68086 11.442677 0.696919 didntLike 275 | 70242 10.308145 0.422722 didntLike 276 | 11409 8.540529 0.727373 smallDoses 277 | 67671 7.156949 1.691682 didntLike 278 | 61238 0.720675 0.847574 didntLike 279 | 17774 0.229405 1.038603 smallDoses 280 | 53376 3.399331 0.077501 didntLike 281 | 30930 6.157239 0.580133 didntLike 282 | 28987 1.239698 0.719989 didntLike 283 | 13655 6.036854 0.016548 smallDoses 284 | 7227 5.258665 0.933722 smallDoses 285 | 40409 12.393001 1.571281 largeDoses 286 | 13605 9.627613 0.935842 smallDoses 287 | 26400 11.130453 0.597610 largeDoses 288 | 13491 8.842595 0.349768 largeDoses 289 | 30232 10.690010 1.456595 largeDoses 290 | 43253 5.714718 1.674780 largeDoses 291 | 55536 3.052505 1.335804 didntLike 292 | 8807 0.000000 0.059025 smallDoses 293 | 25783 9.945307 1.287952 largeDoses 294 | 22812 2.719723 1.142148 didntLike 295 | 77826 11.154055 1.608486 didntLike 296 | 38172 2.687918 0.660836 didntLike 297 | 31676 10.037847 0.962245 largeDoses 298 | 74038 12.404762 1.112080 didntLike 299 | 44738 10.237305 0.633422 largeDoses 300 | 17410 4.745392 0.662520 smallDoses 301 | 5688 4.639461 1.569431 smallDoses 302 | 36642 3.149310 0.639669 didntLike 303 | 29956 13.406875 1.639194 largeDoses 304 | 60350 6.068668 0.881241 didntLike 305 | 23758 9.477022 0.899002 largeDoses 306 | 25780 3.897620 0.560201 smallDoses 307 | 11342 5.463615 1.203677 smallDoses 308 | 36109 3.369267 1.575043 didntLike 309 | 14292 5.234562 0.825954 smallDoses 310 | 11160 0.000000 0.722170 smallDoses 311 | 23762 12.979069 0.504068 largeDoses 312 | 39567 5.376564 0.557476 didntLike 313 | 25647 13.527910 1.586732 largeDoses 314 | 14814 2.196889 0.784587 smallDoses 315 | 73590 10.691748 0.007509 didntLike 316 | 35187 1.659242 0.447066 didntLike 317 | 49459 8.369667 0.656697 largeDoses 318 | 31657 13.157197 0.143248 largeDoses 319 | 6259 8.199667 0.908508 smallDoses 320 | 33101 4.441669 0.439381 largeDoses 321 | 27107 9.846492 0.644523 largeDoses 322 | 17824 0.019540 0.977949 smallDoses 323 | 43536 8.253774 0.748700 largeDoses 324 | 67705 6.038620 1.509646 didntLike 325 | 35283 6.091587 1.694641 largeDoses 326 | 71308 8.986820 1.225165 didntLike 327 | 31054 11.508473 1.624296 largeDoses 328 | 52387 8.807734 0.713922 largeDoses 329 | 40328 0.000000 0.816676 didntLike 330 | 34844 8.889202 1.665414 largeDoses 331 | 11607 3.178117 0.542752 smallDoses 332 | 64306 7.013795 0.139909 didntLike 333 | 32721 9.605014 0.065254 largeDoses 334 | 33170 1.230540 1.331674 didntLike 335 | 37192 10.412811 0.890803 largeDoses 336 | 13089 0.000000 0.567161 smallDoses 337 | 66491 9.699991 0.122011 didntLike 338 | 15941 0.000000 0.061191 smallDoses 339 | 4272 4.455293 0.272135 smallDoses 340 | 48812 3.020977 1.502803 didntLike 341 | 28818 8.099278 0.216317 largeDoses 342 | 35394 1.157764 1.603217 didntLike 343 | 71791 10.105396 0.121067 didntLike 344 | 40668 11.230148 0.408603 largeDoses 345 | 39580 9.070058 0.011379 largeDoses 346 | 11786 0.566460 0.478837 smallDoses 347 | 19251 0.000000 0.487300 smallDoses 348 | 56594 8.956369 1.193484 largeDoses 349 | 54495 1.523057 0.620528 didntLike 350 | 11844 2.749006 0.169855 smallDoses 351 | 45465 9.235393 0.188350 largeDoses 352 | 31033 10.555573 0.403927 largeDoses 353 | 16633 6.956372 1.519308 smallDoses 354 | 13887 0.636281 1.273984 smallDoses 355 | 52603 3.574737 0.075163 didntLike 356 | 72000 9.032486 1.461809 didntLike 357 | 68497 5.958993 0.023012 didntLike 358 | 35135 2.435300 1.211744 didntLike 359 | 26397 10.539731 1.638248 largeDoses 360 | 7313 7.646702 0.056513 smallDoses 361 | 91273 20.919349 0.644571 didntLike 362 | 24743 1.424726 0.838447 didntLike 363 | 31690 6.748663 0.890223 largeDoses 364 | 15432 2.289167 0.114881 smallDoses 365 | 58394 5.548377 0.402238 didntLike 366 | 33962 6.057227 0.432666 didntLike 367 | 31442 10.828595 0.559955 largeDoses 368 | 31044 11.318160 0.271094 largeDoses 369 | 29938 13.265311 0.633903 largeDoses 370 | 9875 0.000000 1.496715 smallDoses 371 | 51542 6.517133 0.402519 largeDoses 372 | 11878 4.934374 1.520028 smallDoses 373 | 69241 10.151738 0.896433 didntLike 374 | 37776 2.425781 1.559467 didntLike 375 | 68997 9.778962 1.195498 didntLike 376 | 67416 12.219950 0.657677 didntLike 377 | 59225 7.394151 0.954434 didntLike 378 | 29138 8.518535 0.742546 largeDoses 379 | 5962 2.798700 0.662632 smallDoses 380 | 10847 0.637930 0.617373 smallDoses 381 | 70527 10.750490 0.097415 didntLike 382 | 9610 0.625382 0.140969 smallDoses 383 | 64734 10.027968 0.282787 didntLike 384 | 25941 9.817347 0.364197 largeDoses 385 | 2763 0.646828 1.266069 smallDoses 386 | 55601 3.347111 0.914294 didntLike 387 | 31128 11.816892 0.193798 largeDoses 388 | 5181 0.000000 1.480198 smallDoses 389 | 69982 10.945666 0.993219 didntLike 390 | 52440 10.244706 0.280539 largeDoses 391 | 57350 2.579801 1.149172 didntLike 392 | 57869 2.630410 0.098869 didntLike 393 | 56557 11.746200 1.695517 largeDoses 394 | 42342 8.104232 1.326277 largeDoses 395 | 15560 12.409743 0.790295 largeDoses 396 | 34826 12.167844 1.328086 largeDoses 397 | 8569 3.198408 0.299287 smallDoses 398 | 77623 16.055513 0.541052 didntLike 399 | 78184 7.138659 0.158481 didntLike 400 | 7036 4.831041 0.761419 smallDoses 401 | 69616 10.082890 1.373611 didntLike 402 | 21546 10.066867 0.788470 largeDoses 403 | 36715 8.129538 0.329913 largeDoses 404 | 20522 3.012463 1.138108 smallDoses 405 | 42349 3.720391 0.845974 didntLike 406 | 9037 0.773493 1.148256 smallDoses 407 | 26728 10.962941 1.037324 largeDoses 408 | 587 0.177621 0.162614 smallDoses 409 | 48915 3.085853 0.967899 didntLike 410 | 9824 8.426781 0.202558 smallDoses 411 | 4135 1.825927 1.128347 smallDoses 412 | 9666 2.185155 1.010173 smallDoses 413 | 59333 7.184595 1.261338 didntLike 414 | 36198 0.000000 0.116525 didntLike 415 | 34909 8.901752 1.033527 largeDoses 416 | 47516 2.451497 1.358795 didntLike 417 | 55807 3.213631 0.432044 didntLike 418 | 14036 3.974739 0.723929 smallDoses 419 | 42856 9.601306 0.619232 largeDoses 420 | 64007 8.363897 0.445341 didntLike 421 | 59428 6.381484 1.365019 didntLike 422 | 13730 0.000000 1.403914 smallDoses 423 | 41740 9.609836 1.438105 largeDoses 424 | 63546 9.904741 0.985862 didntLike 425 | 30417 7.185807 1.489102 largeDoses 426 | 69636 5.466703 1.216571 didntLike 427 | 64660 0.000000 0.915898 didntLike 428 | 14883 4.575443 0.535671 smallDoses 429 | 7965 3.277076 1.010868 smallDoses 430 | 68620 10.246623 1.239634 didntLike 431 | 8738 2.341735 1.060235 smallDoses 432 | 7544 3.201046 0.498843 smallDoses 433 | 6377 6.066013 0.120927 smallDoses 434 | 36842 8.829379 0.895657 largeDoses 435 | 81046 15.833048 1.568245 didntLike 436 | 67736 13.516711 1.220153 didntLike 437 | 32492 0.664284 1.116755 didntLike 438 | 39299 6.325139 0.605109 largeDoses 439 | 77289 8.677499 0.344373 didntLike 440 | 33835 8.188005 0.964896 largeDoses 441 | 71890 9.414263 0.384030 didntLike 442 | 32054 9.196547 1.138253 largeDoses 443 | 38579 10.202968 0.452363 largeDoses 444 | 55984 2.119439 1.481661 didntLike 445 | 72694 13.635078 0.858314 didntLike 446 | 42299 0.083443 0.701669 didntLike 447 | 26635 9.149096 1.051446 largeDoses 448 | 8579 1.933803 1.374388 smallDoses 449 | 37302 14.115544 0.676198 largeDoses 450 | 22878 8.933736 0.943352 largeDoses 451 | 4364 2.661254 0.946117 smallDoses 452 | 4985 0.988432 1.305027 smallDoses 453 | 37068 2.063741 1.125946 didntLike 454 | 41137 2.220590 0.690754 didntLike 455 | 67759 6.424849 0.806641 didntLike 456 | 11831 1.156153 1.613674 smallDoses 457 | 34502 3.032720 0.601847 didntLike 458 | 4088 3.076828 0.952089 smallDoses 459 | 15199 0.000000 0.318105 smallDoses 460 | 17309 7.750480 0.554015 largeDoses 461 | 42816 10.958135 1.482500 largeDoses 462 | 43751 10.222018 0.488678 largeDoses 463 | 58335 2.367988 0.435741 didntLike 464 | 75039 7.686054 1.381455 didntLike 465 | 42878 11.464879 1.481589 largeDoses 466 | 42770 11.075735 0.089726 largeDoses 467 | 8848 3.543989 0.345853 smallDoses 468 | 31340 8.123889 1.282880 largeDoses 469 | 41413 4.331769 0.754467 largeDoses 470 | 12731 0.120865 1.211961 smallDoses 471 | 22447 6.116109 0.701523 largeDoses 472 | 33564 7.474534 0.505790 largeDoses 473 | 48907 8.819454 0.649292 largeDoses 474 | 8762 6.802144 0.615284 smallDoses 475 | 46696 12.666325 0.931960 largeDoses 476 | 36851 8.636180 0.399333 largeDoses 477 | 67639 11.730991 1.289833 didntLike 478 | 171 8.132449 0.039062 smallDoses 479 | 26674 10.296589 1.496144 largeDoses 480 | 8739 7.583906 1.005764 smallDoses 481 | 66668 9.777806 0.496377 didntLike 482 | 68732 8.833546 0.513876 didntLike 483 | 69995 4.907899 1.518036 didntLike 484 | 82008 8.362736 1.285939 didntLike 485 | 25054 9.084726 1.606312 largeDoses 486 | 33085 14.164141 0.560970 largeDoses 487 | 41379 9.080683 0.989920 largeDoses 488 | 39417 6.522767 0.038548 largeDoses 489 | 12556 3.690342 0.462281 smallDoses 490 | 39432 3.563706 0.242019 didntLike 491 | 38010 1.065870 1.141569 didntLike 492 | 69306 6.683796 1.456317 didntLike 493 | 38000 1.712874 0.243945 didntLike 494 | 46321 13.109929 1.280111 largeDoses 495 | 66293 11.327910 0.780977 didntLike 496 | 22730 4.545711 1.233254 didntLike 497 | 5952 3.367889 0.468104 smallDoses 498 | 72308 8.326224 0.567347 didntLike 499 | 60338 8.978339 1.442034 didntLike 500 | 13301 5.655826 1.582159 smallDoses 501 | 27884 8.855312 0.570684 largeDoses 502 | 11188 6.649568 0.544233 smallDoses 503 | 56796 3.966325 0.850410 didntLike 504 | 8571 1.924045 1.664782 smallDoses 505 | 4914 6.004812 0.280369 smallDoses 506 | 10784 0.000000 0.375849 smallDoses 507 | 39296 9.923018 0.092192 largeDoses 508 | 13113 2.389084 0.119284 smallDoses 509 | 70204 13.663189 0.133251 didntLike 510 | 46813 11.434976 0.321216 largeDoses 511 | 11697 0.358270 1.292858 smallDoses 512 | 44183 9.598873 0.223524 largeDoses 513 | 2225 6.375275 0.608040 smallDoses 514 | 29066 11.580532 0.458401 largeDoses 515 | 4245 5.319324 1.598070 smallDoses 516 | 34379 4.324031 1.603481 didntLike 517 | 44441 2.358370 1.273204 didntLike 518 | 2022 0.000000 1.182708 smallDoses 519 | 26866 12.824376 0.890411 largeDoses 520 | 57070 1.587247 1.456982 didntLike 521 | 32932 8.510324 1.520683 largeDoses 522 | 51967 10.428884 1.187734 largeDoses 523 | 44432 8.346618 0.042318 largeDoses 524 | 67066 7.541444 0.809226 didntLike 525 | 17262 2.540946 1.583286 smallDoses 526 | 79728 9.473047 0.692513 didntLike 527 | 14259 0.352284 0.474080 smallDoses 528 | 6122 0.000000 0.589826 smallDoses 529 | 76879 12.405171 0.567201 didntLike 530 | 11426 4.126775 0.871452 smallDoses 531 | 2493 0.034087 0.335848 smallDoses 532 | 19910 1.177634 0.075106 smallDoses 533 | 10939 0.000000 0.479996 smallDoses 534 | 17716 0.994909 0.611135 smallDoses 535 | 31390 11.053664 1.180117 largeDoses 536 | 20375 0.000000 1.679729 smallDoses 537 | 26309 2.495011 1.459589 didntLike 538 | 33484 11.516831 0.001156 largeDoses 539 | 45944 9.213215 0.797743 largeDoses 540 | 4249 5.332865 0.109288 smallDoses 541 | 6089 0.000000 1.689771 smallDoses 542 | 7513 0.000000 1.126053 smallDoses 543 | 27862 12.640062 1.690903 largeDoses 544 | 39038 2.693142 1.317518 didntLike 545 | 19218 3.328969 0.268271 smallDoses 546 | 62911 7.193166 1.117456 didntLike 547 | 77758 6.615512 1.521012 didntLike 548 | 27940 8.000567 0.835341 largeDoses 549 | 2194 4.017541 0.512104 smallDoses 550 | 37072 13.245859 0.927465 largeDoses 551 | 15585 5.970616 0.813624 smallDoses 552 | 25577 11.668719 0.886902 largeDoses 553 | 8777 4.283237 1.272728 smallDoses 554 | 29016 10.742963 0.971401 largeDoses 555 | 21910 12.326672 1.592608 largeDoses 556 | 12916 0.000000 0.344622 smallDoses 557 | 10976 0.000000 0.922846 smallDoses 558 | 79065 10.602095 0.573686 didntLike 559 | 36759 10.861859 1.155054 largeDoses 560 | 50011 1.229094 1.638690 didntLike 561 | 1155 0.410392 1.313401 smallDoses 562 | 71600 14.552711 0.616162 didntLike 563 | 30817 14.178043 0.616313 largeDoses 564 | 54559 14.136260 0.362388 didntLike 565 | 29764 0.093534 1.207194 didntLike 566 | 69100 10.929021 0.403110 didntLike 567 | 47324 11.432919 0.825959 largeDoses 568 | 73199 9.134527 0.586846 didntLike 569 | 44461 5.071432 1.421420 didntLike 570 | 45617 11.460254 1.541749 largeDoses 571 | 28221 11.620039 1.103553 largeDoses 572 | 7091 4.022079 0.207307 smallDoses 573 | 6110 3.057842 1.631262 smallDoses 574 | 79016 7.782169 0.404385 didntLike 575 | 18289 7.981741 0.929789 largeDoses 576 | 43679 4.601363 0.268326 didntLike 577 | 22075 2.595564 1.115375 didntLike 578 | 23535 10.049077 0.391045 largeDoses 579 | 25301 3.265444 1.572970 smallDoses 580 | 32256 11.780282 1.511014 largeDoses 581 | 36951 3.075975 0.286284 didntLike 582 | 31290 1.795307 0.194343 didntLike 583 | 38953 11.106979 0.202415 largeDoses 584 | 35257 5.994413 0.800021 didntLike 585 | 25847 9.706062 1.012182 largeDoses 586 | 32680 10.582992 0.836025 largeDoses 587 | 62018 7.038266 1.458979 didntLike 588 | 9074 0.023771 0.015314 smallDoses 589 | 33004 12.823982 0.676371 largeDoses 590 | 44588 3.617770 0.493483 didntLike 591 | 32565 8.346684 0.253317 largeDoses 592 | 38563 6.104317 0.099207 didntLike 593 | 75668 16.207776 0.584973 didntLike 594 | 9069 6.401969 1.691873 smallDoses 595 | 53395 2.298696 0.559757 didntLike 596 | 28631 7.661515 0.055981 largeDoses 597 | 71036 6.353608 1.645301 didntLike 598 | 71142 10.442780 0.335870 didntLike 599 | 37653 3.834509 1.346121 didntLike 600 | 76839 10.998587 0.584555 didntLike 601 | 9916 2.695935 1.512111 smallDoses 602 | 38889 3.356646 0.324230 didntLike 603 | 39075 14.677836 0.793183 largeDoses 604 | 48071 1.551934 0.130902 didntLike 605 | 7275 2.464739 0.223502 smallDoses 606 | 41804 1.533216 1.007481 didntLike 607 | 35665 12.473921 0.162910 largeDoses 608 | 67956 6.491596 0.032576 didntLike 609 | 41892 10.506276 1.510747 largeDoses 610 | 38844 4.380388 0.748506 didntLike 611 | 74197 13.670988 1.687944 didntLike 612 | 14201 8.317599 0.390409 smallDoses 613 | 3908 0.000000 0.556245 smallDoses 614 | 2459 0.000000 0.290218 smallDoses 615 | 32027 10.095799 1.188148 largeDoses 616 | 12870 0.860695 1.482632 smallDoses 617 | 9880 1.557564 0.711278 smallDoses 618 | 72784 10.072779 0.756030 didntLike 619 | 17521 0.000000 0.431468 smallDoses 620 | 50283 7.140817 0.883813 largeDoses 621 | 33536 11.384548 1.438307 largeDoses 622 | 9452 3.214568 1.083536 smallDoses 623 | 37457 11.720655 0.301636 largeDoses 624 | 17724 6.374475 1.475925 largeDoses 625 | 43869 5.749684 0.198875 largeDoses 626 | 264 3.871808 0.552602 smallDoses 627 | 25736 8.336309 0.636238 largeDoses 628 | 39584 9.710442 1.503735 largeDoses 629 | 31246 1.532611 1.433898 didntLike 630 | 49567 9.785785 0.984614 largeDoses 631 | 7052 2.633627 1.097866 smallDoses 632 | 35493 9.238935 0.494701 largeDoses 633 | 10986 1.205656 1.398803 smallDoses 634 | 49508 3.124909 1.670121 didntLike 635 | 5734 7.935489 1.585044 smallDoses 636 | 65479 12.746636 1.560352 didntLike 637 | 77268 10.732563 0.545321 didntLike 638 | 28490 3.977403 0.766103 didntLike 639 | 13546 4.194426 0.450663 smallDoses 640 | 37166 9.610286 0.142912 largeDoses 641 | 16381 4.797555 1.260455 smallDoses 642 | 10848 1.615279 0.093002 smallDoses 643 | 35405 4.614771 1.027105 didntLike 644 | 15917 0.000000 1.369726 smallDoses 645 | 6131 0.608457 0.512220 smallDoses 646 | 67432 6.558239 0.667579 didntLike 647 | 30354 12.315116 0.197068 largeDoses 648 | 69696 7.014973 1.494616 didntLike 649 | 33481 8.822304 1.194177 largeDoses 650 | 43075 10.086796 0.570455 largeDoses 651 | 38343 7.241614 1.661627 largeDoses 652 | 14318 4.602395 1.511768 smallDoses 653 | 5367 7.434921 0.079792 smallDoses 654 | 37894 10.467570 1.595418 largeDoses 655 | 36172 9.948127 0.003663 largeDoses 656 | 40123 2.478529 1.568987 didntLike 657 | 10976 5.938545 0.878540 smallDoses 658 | 12705 0.000000 0.948004 smallDoses 659 | 12495 5.559181 1.357926 smallDoses 660 | 35681 9.776654 0.535966 largeDoses 661 | 46202 3.092056 0.490906 didntLike 662 | 11505 0.000000 1.623311 smallDoses 663 | 22834 4.459495 0.538867 didntLike 664 | 49901 8.334306 1.646600 largeDoses 665 | 71932 11.226654 0.384686 didntLike 666 | 13279 3.904737 1.597294 smallDoses 667 | 49112 7.038205 1.211329 largeDoses 668 | 77129 9.836120 1.054340 didntLike 669 | 37447 1.990976 0.378081 didntLike 670 | 62397 9.005302 0.485385 didntLike 671 | 0 1.772510 1.039873 smallDoses 672 | 15476 0.458674 0.819560 smallDoses 673 | 40625 10.003919 0.231658 largeDoses 674 | 36706 0.520807 1.476008 didntLike 675 | 28580 10.678214 1.431837 largeDoses 676 | 25862 4.425992 1.363842 didntLike 677 | 63488 12.035355 0.831222 didntLike 678 | 33944 10.606732 1.253858 largeDoses 679 | 30099 1.568653 0.684264 didntLike 680 | 13725 2.545434 0.024271 smallDoses 681 | 36768 10.264062 0.982593 largeDoses 682 | 64656 9.866276 0.685218 didntLike 683 | 14927 0.142704 0.057455 smallDoses 684 | 43231 9.853270 1.521432 largeDoses 685 | 66087 6.596604 1.653574 didntLike 686 | 19806 2.602287 1.321481 smallDoses 687 | 41081 10.411776 0.664168 largeDoses 688 | 10277 7.083449 0.622589 smallDoses 689 | 7014 2.080068 1.254441 smallDoses 690 | 17275 0.522844 1.622458 smallDoses 691 | 31600 10.362000 1.544827 largeDoses 692 | 59956 3.412967 1.035410 didntLike 693 | 42181 6.796548 1.112153 largeDoses 694 | 51743 4.092035 0.075804 didntLike 695 | 5194 2.763811 1.564325 smallDoses 696 | 30832 12.547439 1.402443 largeDoses 697 | 7976 5.708052 1.596152 smallDoses 698 | 14602 4.558025 0.375806 smallDoses 699 | 41571 11.642307 0.438553 largeDoses 700 | 55028 3.222443 0.121399 didntLike 701 | 5837 4.736156 0.029871 smallDoses 702 | 39808 10.839526 0.836323 largeDoses 703 | 20944 4.194791 0.235483 smallDoses 704 | 22146 14.936259 0.888582 largeDoses 705 | 42169 3.310699 1.521855 didntLike 706 | 7010 2.971931 0.034321 smallDoses 707 | 3807 9.261667 0.537807 smallDoses 708 | 29241 7.791833 1.111416 largeDoses 709 | 52696 1.480470 1.028750 didntLike 710 | 42545 3.677287 0.244167 didntLike 711 | 24437 2.202967 1.370399 didntLike 712 | 16037 5.796735 0.935893 smallDoses 713 | 8493 3.063333 0.144089 smallDoses 714 | 68080 11.233094 0.492487 didntLike 715 | 59016 1.965570 0.005697 didntLike 716 | 11810 8.616719 0.137419 smallDoses 717 | 68630 6.609989 1.083505 didntLike 718 | 7629 1.712639 1.086297 smallDoses 719 | 71992 10.117445 1.299319 didntLike 720 | 13398 0.000000 1.104178 smallDoses 721 | 26241 9.824777 1.346821 largeDoses 722 | 11160 1.653089 0.980949 smallDoses 723 | 76701 18.178822 1.473671 didntLike 724 | 32174 6.781126 0.885340 largeDoses 725 | 45043 8.206750 1.549223 largeDoses 726 | 42173 10.081853 1.376745 largeDoses 727 | 69801 6.288742 0.112799 didntLike 728 | 41737 3.695937 1.543589 didntLike 729 | 46979 6.726151 1.069380 largeDoses 730 | 79267 12.969999 1.568223 didntLike 731 | 4615 2.661390 1.531933 smallDoses 732 | 32907 7.072764 1.117386 largeDoses 733 | 37444 9.123366 1.318988 largeDoses 734 | 569 3.743946 1.039546 smallDoses 735 | 8723 2.341300 0.219361 smallDoses 736 | 6024 0.541913 0.592348 smallDoses 737 | 52252 2.310828 1.436753 didntLike 738 | 8358 6.226597 1.427316 smallDoses 739 | 26166 7.277876 0.489252 largeDoses 740 | 18471 0.000000 0.389459 smallDoses 741 | 3386 7.218221 1.098828 smallDoses 742 | 41544 8.777129 1.111464 largeDoses 743 | 10480 2.813428 0.819419 smallDoses 744 | 5894 2.268766 1.412130 smallDoses 745 | 7273 6.283627 0.571292 smallDoses 746 | 22272 7.520081 1.626868 largeDoses 747 | 31369 11.739225 0.027138 largeDoses 748 | 10708 3.746883 0.877350 smallDoses 749 | 69364 12.089835 0.521631 didntLike 750 | 37760 12.310404 0.259339 largeDoses 751 | 13004 0.000000 0.671355 smallDoses 752 | 37885 2.728800 0.331502 didntLike 753 | 52555 10.814342 0.607652 largeDoses 754 | 38997 12.170268 0.844205 largeDoses 755 | 69698 6.698371 0.240084 didntLike 756 | 11783 3.632672 1.643479 smallDoses 757 | 47636 10.059991 0.892361 largeDoses 758 | 15744 1.887674 0.756162 smallDoses 759 | 69058 8.229125 0.195886 didntLike 760 | 33057 7.817082 0.476102 largeDoses 761 | 28681 12.277230 0.076805 largeDoses 762 | 34042 10.055337 1.115778 largeDoses 763 | 29928 3.596002 1.485952 didntLike 764 | 9734 2.755530 1.420655 smallDoses 765 | 7344 7.780991 0.513048 smallDoses 766 | 7387 0.093705 0.391834 smallDoses 767 | 33957 8.481567 0.520078 largeDoses 768 | 9936 3.865584 0.110062 smallDoses 769 | 36094 9.683709 0.779984 largeDoses 770 | 39835 10.617255 1.359970 largeDoses 771 | 64486 7.203216 1.624762 didntLike 772 | 0 7.601414 1.215605 smallDoses 773 | 39539 1.386107 1.417070 didntLike 774 | 66972 9.129253 0.594089 didntLike 775 | 15029 1.363447 0.620841 smallDoses 776 | 44909 3.181399 0.359329 didntLike 777 | 38183 13.365414 0.217011 largeDoses 778 | 37372 4.207717 1.289767 didntLike 779 | 0 4.088395 0.870075 smallDoses 780 | 17786 3.327371 1.142505 smallDoses 781 | 39055 1.303323 1.235650 didntLike 782 | 37045 7.999279 1.581763 largeDoses 783 | 6435 2.217488 0.864536 smallDoses 784 | 72265 7.751808 0.192451 didntLike 785 | 28152 14.149305 1.591532 largeDoses 786 | 25931 8.765721 0.152808 largeDoses 787 | 7538 3.408996 0.184896 smallDoses 788 | 1315 1.251021 0.112340 smallDoses 789 | 12292 6.160619 1.537165 smallDoses 790 | 49248 1.034538 1.585162 didntLike 791 | 9025 0.000000 1.034635 smallDoses 792 | 13438 2.355051 0.542603 smallDoses 793 | 69683 6.614543 0.153771 didntLike 794 | 25374 10.245062 1.450903 largeDoses 795 | 55264 3.467074 1.231019 didntLike 796 | 38324 7.487678 1.572293 largeDoses 797 | 69643 4.624115 1.185192 didntLike 798 | 44058 8.995957 1.436479 largeDoses 799 | 41316 11.564476 0.007195 largeDoses 800 | 29119 3.440948 0.078331 didntLike 801 | 51656 1.673603 0.732746 didntLike 802 | 3030 4.719341 0.699755 smallDoses 803 | 35695 10.304798 1.576488 largeDoses 804 | 1537 2.086915 1.199312 smallDoses 805 | 9083 6.338220 1.131305 smallDoses 806 | 47744 8.254926 0.710694 largeDoses 807 | 71372 16.067108 0.974142 didntLike 808 | 37980 1.723201 0.310488 didntLike 809 | 42385 3.785045 0.876904 didntLike 810 | 22687 2.557561 0.123738 didntLike 811 | 39512 9.852220 1.095171 largeDoses 812 | 11885 3.679147 1.557205 smallDoses 813 | 4944 9.789681 0.852971 smallDoses 814 | 73230 14.958998 0.526707 didntLike 815 | 17585 11.182148 1.288459 largeDoses 816 | 68737 7.528533 1.657487 didntLike 817 | 13818 5.253802 1.378603 smallDoses 818 | 31662 13.946752 1.426657 largeDoses 819 | 86686 15.557263 1.430029 didntLike 820 | 43214 12.483550 0.688513 largeDoses 821 | 24091 2.317302 1.411137 didntLike 822 | 52544 10.069724 0.766119 largeDoses 823 | 61861 5.792231 1.615483 didntLike 824 | 47903 4.138435 0.475994 didntLike 825 | 37190 12.929517 0.304378 largeDoses 826 | 6013 9.378238 0.307392 smallDoses 827 | 27223 8.361362 1.643204 largeDoses 828 | 69027 7.939406 1.325042 didntLike 829 | 78642 10.735384 0.705788 didntLike 830 | 30254 11.592723 0.286188 largeDoses 831 | 21704 10.098356 0.704748 largeDoses 832 | 34985 9.299025 0.545337 largeDoses 833 | 31316 11.158297 0.218067 largeDoses 834 | 76368 16.143900 0.558388 didntLike 835 | 27953 10.971700 1.221787 largeDoses 836 | 152 0.000000 0.681478 smallDoses 837 | 9146 3.178961 1.292692 smallDoses 838 | 75346 17.625350 0.339926 didntLike 839 | 26376 1.995833 0.267826 didntLike 840 | 35255 10.640467 0.416181 largeDoses 841 | 19198 9.628339 0.985462 largeDoses 842 | 12518 4.662664 0.495403 smallDoses 843 | 25453 5.754047 1.382742 smallDoses 844 | 12530 0.000000 0.037146 smallDoses 845 | 62230 9.334332 0.198118 didntLike 846 | 9517 3.846162 0.619968 smallDoses 847 | 71161 10.685084 0.678179 didntLike 848 | 1593 4.752134 0.359205 smallDoses 849 | 33794 0.697630 0.966786 didntLike 850 | 39710 10.365836 0.505898 largeDoses 851 | 16941 0.461478 0.352865 smallDoses 852 | 69209 11.339537 1.068740 didntLike 853 | 4446 5.420280 0.127310 smallDoses 854 | 9347 3.469955 1.619947 smallDoses 855 | 55635 8.517067 0.994858 largeDoses 856 | 65889 8.306512 0.413690 didntLike 857 | 10753 2.628690 0.444320 smallDoses 858 | 7055 0.000000 0.802985 smallDoses 859 | 7905 0.000000 1.170397 smallDoses 860 | 53447 7.298767 1.582346 largeDoses 861 | 9194 7.331319 1.277988 smallDoses 862 | 61914 9.392269 0.151617 didntLike 863 | 15630 5.541201 1.180596 smallDoses 864 | 79194 15.149460 0.537540 didntLike 865 | 12268 5.515189 0.250562 smallDoses 866 | 33682 7.728898 0.920494 largeDoses 867 | 26080 11.318785 1.510979 largeDoses 868 | 19119 3.574709 1.531514 smallDoses 869 | 30902 7.350965 0.026332 largeDoses 870 | 63039 7.122363 1.630177 didntLike 871 | 51136 1.828412 1.013702 didntLike 872 | 35262 10.117989 1.156862 largeDoses 873 | 42776 11.309897 0.086291 largeDoses 874 | 64191 8.342034 1.388569 didntLike 875 | 15436 0.241714 0.715577 smallDoses 876 | 14402 10.482619 1.694972 smallDoses 877 | 6341 9.289510 1.428879 smallDoses 878 | 14113 4.269419 0.134181 smallDoses 879 | 6390 0.000000 0.189456 smallDoses 880 | 8794 0.817119 0.143668 smallDoses 881 | 43432 1.508394 0.652651 didntLike 882 | 38334 9.359918 0.052262 largeDoses 883 | 34068 10.052333 0.550423 largeDoses 884 | 30819 11.111660 0.989159 largeDoses 885 | 22239 11.265971 0.724054 largeDoses 886 | 28725 10.383830 0.254836 largeDoses 887 | 57071 3.878569 1.377983 didntLike 888 | 72420 13.679237 0.025346 didntLike 889 | 28294 10.526846 0.781569 largeDoses 890 | 9896 0.000000 0.924198 smallDoses 891 | 65821 4.106727 1.085669 didntLike 892 | 7645 8.118856 1.470686 smallDoses 893 | 71289 7.796874 0.052336 didntLike 894 | 5128 2.789669 1.093070 smallDoses 895 | 13711 6.226962 0.287251 smallDoses 896 | 22240 10.169548 1.660104 largeDoses 897 | 15092 0.000000 1.370549 smallDoses 898 | 5017 7.513353 0.137348 smallDoses 899 | 10141 8.240793 0.099735 smallDoses 900 | 35570 14.612797 1.247390 largeDoses 901 | 46893 3.562976 0.445386 didntLike 902 | 8178 3.230482 1.331698 smallDoses 903 | 55783 3.612548 1.551911 didntLike 904 | 1148 0.000000 0.332365 smallDoses 905 | 10062 3.931299 0.487577 smallDoses 906 | 74124 14.752342 1.155160 didntLike 907 | 66603 10.261887 1.628085 didntLike 908 | 11893 2.787266 1.570402 smallDoses 909 | 50908 15.112319 1.324132 largeDoses 910 | 39891 5.184553 0.223382 largeDoses 911 | 65915 3.868359 0.128078 didntLike 912 | 65678 3.507965 0.028904 didntLike 913 | 62996 11.019254 0.427554 didntLike 914 | 36851 3.812387 0.655245 didntLike 915 | 36669 11.056784 0.378725 largeDoses 916 | 38876 8.826880 1.002328 largeDoses 917 | 26878 11.173861 1.478244 largeDoses 918 | 46246 11.506465 0.421993 largeDoses 919 | 12761 7.798138 0.147917 largeDoses 920 | 35282 10.155081 1.370039 largeDoses 921 | 68306 10.645275 0.693453 didntLike 922 | 31262 9.663200 1.521541 largeDoses 923 | 34754 10.790404 1.312679 largeDoses 924 | 13408 2.810534 0.219962 smallDoses 925 | 30365 9.825999 1.388500 largeDoses 926 | 10709 1.421316 0.677603 smallDoses 927 | 24332 11.123219 0.809107 largeDoses 928 | 45517 13.402206 0.661524 largeDoses 929 | 6178 1.212255 0.836807 smallDoses 930 | 10639 1.568446 1.297469 smallDoses 931 | 29613 3.343473 1.312266 didntLike 932 | 22392 5.400155 0.193494 didntLike 933 | 51126 3.818754 0.590905 didntLike 934 | 53644 7.973845 0.307364 largeDoses 935 | 51417 9.078824 0.734876 largeDoses 936 | 24859 0.153467 0.766619 didntLike 937 | 61732 8.325167 0.028479 didntLike 938 | 71128 7.092089 1.216733 didntLike 939 | 27276 5.192485 1.094409 largeDoses 940 | 30453 10.340791 1.087721 largeDoses 941 | 18670 2.077169 1.019775 smallDoses 942 | 70600 10.151966 0.993105 didntLike 943 | 12683 0.046826 0.809614 smallDoses 944 | 81597 11.221874 1.395015 didntLike 945 | 69959 14.497963 1.019254 didntLike 946 | 8124 3.554508 0.533462 smallDoses 947 | 18867 3.522673 0.086725 smallDoses 948 | 80886 14.531655 0.380172 didntLike 949 | 55895 3.027528 0.885457 didntLike 950 | 31587 1.845967 0.488985 didntLike 951 | 10591 10.226164 0.804403 largeDoses 952 | 70096 10.965926 1.212328 didntLike 953 | 53151 2.129921 1.477378 didntLike 954 | 11992 0.000000 1.606849 smallDoses 955 | 33114 9.489005 0.827814 largeDoses 956 | 7413 0.000000 1.020797 smallDoses 957 | 10583 0.000000 1.270167 smallDoses 958 | 58668 6.556676 0.055183 didntLike 959 | 35018 9.959588 0.060020 largeDoses 960 | 70843 7.436056 1.479856 didntLike 961 | 14011 0.404888 0.459517 smallDoses 962 | 35015 9.952942 1.650279 largeDoses 963 | 70839 15.600252 0.021935 didntLike 964 | 3024 2.723846 0.387455 smallDoses 965 | 5526 0.513866 1.323448 smallDoses 966 | 5113 0.000000 0.861859 smallDoses 967 | 20851 7.280602 1.438470 smallDoses 968 | 40999 9.161978 1.110180 largeDoses 969 | 15823 0.991725 0.730979 smallDoses 970 | 35432 7.398380 0.684218 largeDoses 971 | 53711 12.149747 1.389088 largeDoses 972 | 64371 9.149678 0.874905 didntLike 973 | 9289 9.666576 1.370330 smallDoses 974 | 60613 3.620110 0.287767 didntLike 975 | 18338 5.238800 1.253646 smallDoses 976 | 22845 14.715782 1.503758 largeDoses 977 | 74676 14.445740 1.211160 didntLike 978 | 34143 13.609528 0.364240 largeDoses 979 | 14153 3.141585 0.424280 smallDoses 980 | 9327 0.000000 0.120947 smallDoses 981 | 18991 0.454750 1.033280 smallDoses 982 | 9193 0.510310 0.016395 smallDoses 983 | 2285 3.864171 0.616349 smallDoses 984 | 9493 6.724021 0.563044 smallDoses 985 | 2371 4.289375 0.012563 smallDoses 986 | 13963 0.000000 1.437030 smallDoses 987 | 2299 3.733617 0.698269 smallDoses 988 | 5262 2.002589 1.380184 smallDoses 989 | 4659 2.502627 0.184223 smallDoses 990 | 17582 6.382129 0.876581 smallDoses 991 | 27750 8.546741 0.128706 largeDoses 992 | 9868 2.694977 0.432818 smallDoses 993 | 18333 3.951256 0.333300 smallDoses 994 | 3780 9.856183 0.329181 smallDoses 995 | 18190 2.068962 0.429927 smallDoses 996 | 11145 3.410627 0.631838 smallDoses 997 | 68846 9.974715 0.669787 didntLike 998 | 26575 10.650102 0.866627 largeDoses 999 | 48111 9.134528 0.728045 largeDoses 1000 | 43757 7.882601 1.332446 largeDoses 1001 | -------------------------------------------------------------------------------- /KNN/data/datingTestSet2.txt: -------------------------------------------------------------------------------- 1 | 40920 8.326976 0.953952 3 2 | 14488 7.153469 1.673904 2 3 | 26052 1.441871 0.805124 1 4 | 75136 13.147394 0.428964 1 5 | 38344 1.669788 0.134296 1 6 | 72993 10.141740 1.032955 1 7 | 35948 6.830792 1.213192 3 8 | 42666 13.276369 0.543880 3 9 | 67497 8.631577 0.749278 1 10 | 35483 12.273169 1.508053 3 11 | 50242 3.723498 0.831917 1 12 | 63275 8.385879 1.669485 1 13 | 5569 4.875435 0.728658 2 14 | 51052 4.680098 0.625224 1 15 | 77372 15.299570 0.331351 1 16 | 43673 1.889461 0.191283 1 17 | 61364 7.516754 1.269164 1 18 | 69673 14.239195 0.261333 1 19 | 15669 0.000000 1.250185 2 20 | 28488 10.528555 1.304844 3 21 | 6487 3.540265 0.822483 2 22 | 37708 2.991551 0.833920 1 23 | 22620 5.297865 0.638306 2 24 | 28782 6.593803 0.187108 3 25 | 19739 2.816760 1.686209 2 26 | 36788 12.458258 0.649617 3 27 | 5741 0.000000 1.656418 2 28 | 28567 9.968648 0.731232 3 29 | 6808 1.364838 0.640103 2 30 | 41611 0.230453 1.151996 1 31 | 36661 11.865402 0.882810 3 32 | 43605 0.120460 1.352013 1 33 | 15360 8.545204 1.340429 3 34 | 63796 5.856649 0.160006 1 35 | 10743 9.665618 0.778626 2 36 | 70808 9.778763 1.084103 1 37 | 72011 4.932976 0.632026 1 38 | 5914 2.216246 0.587095 2 39 | 14851 14.305636 0.632317 3 40 | 33553 12.591889 0.686581 3 41 | 44952 3.424649 1.004504 1 42 | 17934 0.000000 0.147573 2 43 | 27738 8.533823 0.205324 3 44 | 29290 9.829528 0.238620 3 45 | 42330 11.492186 0.263499 3 46 | 36429 3.570968 0.832254 1 47 | 39623 1.771228 0.207612 1 48 | 32404 3.513921 0.991854 1 49 | 27268 4.398172 0.975024 1 50 | 5477 4.276823 1.174874 2 51 | 14254 5.946014 1.614244 2 52 | 68613 13.798970 0.724375 1 53 | 41539 10.393591 1.663724 3 54 | 7917 3.007577 0.297302 2 55 | 21331 1.031938 0.486174 2 56 | 8338 4.751212 0.064693 2 57 | 5176 3.692269 1.655113 2 58 | 18983 10.448091 0.267652 3 59 | 68837 10.585786 0.329557 1 60 | 13438 1.604501 0.069064 2 61 | 48849 3.679497 0.961466 1 62 | 12285 3.795146 0.696694 2 63 | 7826 2.531885 1.659173 2 64 | 5565 9.733340 0.977746 2 65 | 10346 6.093067 1.413798 2 66 | 1823 7.712960 1.054927 2 67 | 9744 11.470364 0.760461 3 68 | 16857 2.886529 0.934416 2 69 | 39336 10.054373 1.138351 3 70 | 65230 9.972470 0.881876 1 71 | 2463 2.335785 1.366145 2 72 | 27353 11.375155 1.528626 3 73 | 16191 0.000000 0.605619 2 74 | 12258 4.126787 0.357501 2 75 | 42377 6.319522 1.058602 1 76 | 25607 8.680527 0.086955 3 77 | 77450 14.856391 1.129823 1 78 | 58732 2.454285 0.222380 1 79 | 46426 7.292202 0.548607 3 80 | 32688 8.745137 0.857348 3 81 | 64890 8.579001 0.683048 1 82 | 8554 2.507302 0.869177 2 83 | 28861 11.415476 1.505466 3 84 | 42050 4.838540 1.680892 1 85 | 32193 10.339507 0.583646 3 86 | 64895 6.573742 1.151433 1 87 | 2355 6.539397 0.462065 2 88 | 0 2.209159 0.723567 2 89 | 70406 11.196378 0.836326 1 90 | 57399 4.229595 0.128253 1 91 | 41732 9.505944 0.005273 3 92 | 11429 8.652725 1.348934 3 93 | 75270 17.101108 0.490712 1 94 | 5459 7.871839 0.717662 2 95 | 73520 8.262131 1.361646 1 96 | 40279 9.015635 1.658555 3 97 | 21540 9.215351 0.806762 3 98 | 17694 6.375007 0.033678 2 99 | 22329 2.262014 1.022169 1 100 | 46570 5.677110 0.709469 1 101 | 42403 11.293017 0.207976 3 102 | 33654 6.590043 1.353117 1 103 | 9171 4.711960 0.194167 2 104 | 28122 8.768099 1.108041 3 105 | 34095 11.502519 0.545097 3 106 | 1774 4.682812 0.578112 2 107 | 40131 12.446578 0.300754 3 108 | 13994 12.908384 1.657722 3 109 | 77064 12.601108 0.974527 1 110 | 11210 3.929456 0.025466 2 111 | 6122 9.751503 1.182050 3 112 | 15341 3.043767 0.888168 2 113 | 44373 4.391522 0.807100 1 114 | 28454 11.695276 0.679015 3 115 | 63771 7.879742 0.154263 1 116 | 9217 5.613163 0.933632 2 117 | 69076 9.140172 0.851300 1 118 | 24489 4.258644 0.206892 1 119 | 16871 6.799831 1.221171 2 120 | 39776 8.752758 0.484418 3 121 | 5901 1.123033 1.180352 2 122 | 40987 10.833248 1.585426 3 123 | 7479 3.051618 0.026781 2 124 | 38768 5.308409 0.030683 3 125 | 4933 1.841792 0.028099 2 126 | 32311 2.261978 1.605603 1 127 | 26501 11.573696 1.061347 3 128 | 37433 8.038764 1.083910 3 129 | 23503 10.734007 0.103715 3 130 | 68607 9.661909 0.350772 1 131 | 27742 9.005850 0.548737 3 132 | 11303 0.000000 0.539131 2 133 | 0 5.757140 1.062373 2 134 | 32729 9.164656 1.624565 3 135 | 24619 1.318340 1.436243 1 136 | 42414 14.075597 0.695934 3 137 | 20210 10.107550 1.308398 3 138 | 33225 7.960293 1.219760 3 139 | 54483 6.317292 0.018209 1 140 | 18475 12.664194 0.595653 3 141 | 33926 2.906644 0.581657 1 142 | 43865 2.388241 0.913938 1 143 | 26547 6.024471 0.486215 3 144 | 44404 7.226764 1.255329 3 145 | 16674 4.183997 1.275290 2 146 | 8123 11.850211 1.096981 3 147 | 42747 11.661797 1.167935 3 148 | 56054 3.574967 0.494666 1 149 | 10933 0.000000 0.107475 2 150 | 18121 7.937657 0.904799 3 151 | 11272 3.365027 1.014085 2 152 | 16297 0.000000 0.367491 2 153 | 28168 13.860672 1.293270 3 154 | 40963 10.306714 1.211594 3 155 | 31685 7.228002 0.670670 3 156 | 55164 4.508740 1.036192 1 157 | 17595 0.366328 0.163652 2 158 | 1862 3.299444 0.575152 2 159 | 57087 0.573287 0.607915 1 160 | 63082 9.183738 0.012280 1 161 | 51213 7.842646 1.060636 3 162 | 6487 4.750964 0.558240 2 163 | 4805 11.438702 1.556334 3 164 | 30302 8.243063 1.122768 3 165 | 68680 7.949017 0.271865 1 166 | 17591 7.875477 0.227085 2 167 | 74391 9.569087 0.364856 1 168 | 37217 7.750103 0.869094 3 169 | 42814 0.000000 1.515293 1 170 | 14738 3.396030 0.633977 2 171 | 19896 11.916091 0.025294 3 172 | 14673 0.460758 0.689586 2 173 | 32011 13.087566 0.476002 3 174 | 58736 4.589016 1.672600 1 175 | 54744 8.397217 1.534103 1 176 | 29482 5.562772 1.689388 1 177 | 27698 10.905159 0.619091 3 178 | 11443 1.311441 1.169887 2 179 | 56117 10.647170 0.980141 3 180 | 39514 0.000000 0.481918 1 181 | 26627 8.503025 0.830861 3 182 | 16525 0.436880 1.395314 2 183 | 24368 6.127867 1.102179 1 184 | 22160 12.112492 0.359680 3 185 | 6030 1.264968 1.141582 2 186 | 6468 6.067568 1.327047 2 187 | 22945 8.010964 1.681648 3 188 | 18520 3.791084 0.304072 2 189 | 34914 11.773195 1.262621 3 190 | 6121 8.339588 1.443357 2 191 | 38063 2.563092 1.464013 1 192 | 23410 5.954216 0.953782 1 193 | 35073 9.288374 0.767318 3 194 | 52914 3.976796 1.043109 1 195 | 16801 8.585227 1.455708 3 196 | 9533 1.271946 0.796506 2 197 | 16721 0.000000 0.242778 2 198 | 5832 0.000000 0.089749 2 199 | 44591 11.521298 0.300860 3 200 | 10143 1.139447 0.415373 2 201 | 21609 5.699090 1.391892 2 202 | 23817 2.449378 1.322560 1 203 | 15640 0.000000 1.228380 2 204 | 8847 3.168365 0.053993 2 205 | 50939 10.428610 1.126257 3 206 | 28521 2.943070 1.446816 1 207 | 32901 10.441348 0.975283 3 208 | 42850 12.478764 1.628726 3 209 | 13499 5.856902 0.363883 2 210 | 40345 2.476420 0.096075 1 211 | 43547 1.826637 0.811457 1 212 | 70758 4.324451 0.328235 1 213 | 19780 1.376085 1.178359 2 214 | 44484 5.342462 0.394527 1 215 | 54462 11.835521 0.693301 3 216 | 20085 12.423687 1.424264 3 217 | 42291 12.161273 0.071131 3 218 | 47550 8.148360 1.649194 3 219 | 11938 1.531067 1.549756 2 220 | 40699 3.200912 0.309679 1 221 | 70908 8.862691 0.530506 1 222 | 73989 6.370551 0.369350 1 223 | 11872 2.468841 0.145060 2 224 | 48463 11.054212 0.141508 3 225 | 15987 2.037080 0.715243 2 226 | 70036 13.364030 0.549972 1 227 | 32967 10.249135 0.192735 3 228 | 63249 10.464252 1.669767 1 229 | 42795 9.424574 0.013725 3 230 | 14459 4.458902 0.268444 2 231 | 19973 0.000000 0.575976 2 232 | 5494 9.686082 1.029808 3 233 | 67902 13.649402 1.052618 1 234 | 25621 13.181148 0.273014 3 235 | 27545 3.877472 0.401600 1 236 | 58656 1.413952 0.451380 1 237 | 7327 4.248986 1.430249 2 238 | 64555 8.779183 0.845947 1 239 | 8998 4.156252 0.097109 2 240 | 11752 5.580018 0.158401 2 241 | 76319 15.040440 1.366898 1 242 | 27665 12.793870 1.307323 3 243 | 67417 3.254877 0.669546 1 244 | 21808 10.725607 0.588588 3 245 | 15326 8.256473 0.765891 2 246 | 20057 8.033892 1.618562 3 247 | 79341 10.702532 0.204792 1 248 | 15636 5.062996 1.132555 2 249 | 35602 10.772286 0.668721 3 250 | 28544 1.892354 0.837028 1 251 | 57663 1.019966 0.372320 1 252 | 78727 15.546043 0.729742 1 253 | 68255 11.638205 0.409125 1 254 | 14964 3.427886 0.975616 2 255 | 21835 11.246174 1.475586 3 256 | 7487 0.000000 0.645045 2 257 | 8700 0.000000 1.424017 2 258 | 26226 8.242553 0.279069 3 259 | 65899 8.700060 0.101807 1 260 | 6543 0.812344 0.260334 2 261 | 46556 2.448235 1.176829 1 262 | 71038 13.230078 0.616147 1 263 | 47657 0.236133 0.340840 1 264 | 19600 11.155826 0.335131 3 265 | 37422 11.029636 0.505769 3 266 | 1363 2.901181 1.646633 2 267 | 26535 3.924594 1.143120 1 268 | 47707 2.524806 1.292848 1 269 | 38055 3.527474 1.449158 1 270 | 6286 3.384281 0.889268 2 271 | 10747 0.000000 1.107592 2 272 | 44883 11.898890 0.406441 3 273 | 56823 3.529892 1.375844 1 274 | 68086 11.442677 0.696919 1 275 | 70242 10.308145 0.422722 1 276 | 11409 8.540529 0.727373 2 277 | 67671 7.156949 1.691682 1 278 | 61238 0.720675 0.847574 1 279 | 17774 0.229405 1.038603 2 280 | 53376 3.399331 0.077501 1 281 | 30930 6.157239 0.580133 1 282 | 28987 1.239698 0.719989 1 283 | 13655 6.036854 0.016548 2 284 | 7227 5.258665 0.933722 2 285 | 40409 12.393001 1.571281 3 286 | 13605 9.627613 0.935842 2 287 | 26400 11.130453 0.597610 3 288 | 13491 8.842595 0.349768 3 289 | 30232 10.690010 1.456595 3 290 | 43253 5.714718 1.674780 3 291 | 55536 3.052505 1.335804 1 292 | 8807 0.000000 0.059025 2 293 | 25783 9.945307 1.287952 3 294 | 22812 2.719723 1.142148 1 295 | 77826 11.154055 1.608486 1 296 | 38172 2.687918 0.660836 1 297 | 31676 10.037847 0.962245 3 298 | 74038 12.404762 1.112080 1 299 | 44738 10.237305 0.633422 3 300 | 17410 4.745392 0.662520 2 301 | 5688 4.639461 1.569431 2 302 | 36642 3.149310 0.639669 1 303 | 29956 13.406875 1.639194 3 304 | 60350 6.068668 0.881241 1 305 | 23758 9.477022 0.899002 3 306 | 25780 3.897620 0.560201 2 307 | 11342 5.463615 1.203677 2 308 | 36109 3.369267 1.575043 1 309 | 14292 5.234562 0.825954 2 310 | 11160 0.000000 0.722170 2 311 | 23762 12.979069 0.504068 3 312 | 39567 5.376564 0.557476 1 313 | 25647 13.527910 1.586732 3 314 | 14814 2.196889 0.784587 2 315 | 73590 10.691748 0.007509 1 316 | 35187 1.659242 0.447066 1 317 | 49459 8.369667 0.656697 3 318 | 31657 13.157197 0.143248 3 319 | 6259 8.199667 0.908508 2 320 | 33101 4.441669 0.439381 3 321 | 27107 9.846492 0.644523 3 322 | 17824 0.019540 0.977949 2 323 | 43536 8.253774 0.748700 3 324 | 67705 6.038620 1.509646 1 325 | 35283 6.091587 1.694641 3 326 | 71308 8.986820 1.225165 1 327 | 31054 11.508473 1.624296 3 328 | 52387 8.807734 0.713922 3 329 | 40328 0.000000 0.816676 1 330 | 34844 8.889202 1.665414 3 331 | 11607 3.178117 0.542752 2 332 | 64306 7.013795 0.139909 1 333 | 32721 9.605014 0.065254 3 334 | 33170 1.230540 1.331674 1 335 | 37192 10.412811 0.890803 3 336 | 13089 0.000000 0.567161 2 337 | 66491 9.699991 0.122011 1 338 | 15941 0.000000 0.061191 2 339 | 4272 4.455293 0.272135 2 340 | 48812 3.020977 1.502803 1 341 | 28818 8.099278 0.216317 3 342 | 35394 1.157764 1.603217 1 343 | 71791 10.105396 0.121067 1 344 | 40668 11.230148 0.408603 3 345 | 39580 9.070058 0.011379 3 346 | 11786 0.566460 0.478837 2 347 | 19251 0.000000 0.487300 2 348 | 56594 8.956369 1.193484 3 349 | 54495 1.523057 0.620528 1 350 | 11844 2.749006 0.169855 2 351 | 45465 9.235393 0.188350 3 352 | 31033 10.555573 0.403927 3 353 | 16633 6.956372 1.519308 2 354 | 13887 0.636281 1.273984 2 355 | 52603 3.574737 0.075163 1 356 | 72000 9.032486 1.461809 1 357 | 68497 5.958993 0.023012 1 358 | 35135 2.435300 1.211744 1 359 | 26397 10.539731 1.638248 3 360 | 7313 7.646702 0.056513 2 361 | 91273 20.919349 0.644571 1 362 | 24743 1.424726 0.838447 1 363 | 31690 6.748663 0.890223 3 364 | 15432 2.289167 0.114881 2 365 | 58394 5.548377 0.402238 1 366 | 33962 6.057227 0.432666 1 367 | 31442 10.828595 0.559955 3 368 | 31044 11.318160 0.271094 3 369 | 29938 13.265311 0.633903 3 370 | 9875 0.000000 1.496715 2 371 | 51542 6.517133 0.402519 3 372 | 11878 4.934374 1.520028 2 373 | 69241 10.151738 0.896433 1 374 | 37776 2.425781 1.559467 1 375 | 68997 9.778962 1.195498 1 376 | 67416 12.219950 0.657677 1 377 | 59225 7.394151 0.954434 1 378 | 29138 8.518535 0.742546 3 379 | 5962 2.798700 0.662632 2 380 | 10847 0.637930 0.617373 2 381 | 70527 10.750490 0.097415 1 382 | 9610 0.625382 0.140969 2 383 | 64734 10.027968 0.282787 1 384 | 25941 9.817347 0.364197 3 385 | 2763 0.646828 1.266069 2 386 | 55601 3.347111 0.914294 1 387 | 31128 11.816892 0.193798 3 388 | 5181 0.000000 1.480198 2 389 | 69982 10.945666 0.993219 1 390 | 52440 10.244706 0.280539 3 391 | 57350 2.579801 1.149172 1 392 | 57869 2.630410 0.098869 1 393 | 56557 11.746200 1.695517 3 394 | 42342 8.104232 1.326277 3 395 | 15560 12.409743 0.790295 3 396 | 34826 12.167844 1.328086 3 397 | 8569 3.198408 0.299287 2 398 | 77623 16.055513 0.541052 1 399 | 78184 7.138659 0.158481 1 400 | 7036 4.831041 0.761419 2 401 | 69616 10.082890 1.373611 1 402 | 21546 10.066867 0.788470 3 403 | 36715 8.129538 0.329913 3 404 | 20522 3.012463 1.138108 2 405 | 42349 3.720391 0.845974 1 406 | 9037 0.773493 1.148256 2 407 | 26728 10.962941 1.037324 3 408 | 587 0.177621 0.162614 2 409 | 48915 3.085853 0.967899 1 410 | 9824 8.426781 0.202558 2 411 | 4135 1.825927 1.128347 2 412 | 9666 2.185155 1.010173 2 413 | 59333 7.184595 1.261338 1 414 | 36198 0.000000 0.116525 1 415 | 34909 8.901752 1.033527 3 416 | 47516 2.451497 1.358795 1 417 | 55807 3.213631 0.432044 1 418 | 14036 3.974739 0.723929 2 419 | 42856 9.601306 0.619232 3 420 | 64007 8.363897 0.445341 1 421 | 59428 6.381484 1.365019 1 422 | 13730 0.000000 1.403914 2 423 | 41740 9.609836 1.438105 3 424 | 63546 9.904741 0.985862 1 425 | 30417 7.185807 1.489102 3 426 | 69636 5.466703 1.216571 1 427 | 64660 0.000000 0.915898 1 428 | 14883 4.575443 0.535671 2 429 | 7965 3.277076 1.010868 2 430 | 68620 10.246623 1.239634 1 431 | 8738 2.341735 1.060235 2 432 | 7544 3.201046 0.498843 2 433 | 6377 6.066013 0.120927 2 434 | 36842 8.829379 0.895657 3 435 | 81046 15.833048 1.568245 1 436 | 67736 13.516711 1.220153 1 437 | 32492 0.664284 1.116755 1 438 | 39299 6.325139 0.605109 3 439 | 77289 8.677499 0.344373 1 440 | 33835 8.188005 0.964896 3 441 | 71890 9.414263 0.384030 1 442 | 32054 9.196547 1.138253 3 443 | 38579 10.202968 0.452363 3 444 | 55984 2.119439 1.481661 1 445 | 72694 13.635078 0.858314 1 446 | 42299 0.083443 0.701669 1 447 | 26635 9.149096 1.051446 3 448 | 8579 1.933803 1.374388 2 449 | 37302 14.115544 0.676198 3 450 | 22878 8.933736 0.943352 3 451 | 4364 2.661254 0.946117 2 452 | 4985 0.988432 1.305027 2 453 | 37068 2.063741 1.125946 1 454 | 41137 2.220590 0.690754 1 455 | 67759 6.424849 0.806641 1 456 | 11831 1.156153 1.613674 2 457 | 34502 3.032720 0.601847 1 458 | 4088 3.076828 0.952089 2 459 | 15199 0.000000 0.318105 2 460 | 17309 7.750480 0.554015 3 461 | 42816 10.958135 1.482500 3 462 | 43751 10.222018 0.488678 3 463 | 58335 2.367988 0.435741 1 464 | 75039 7.686054 1.381455 1 465 | 42878 11.464879 1.481589 3 466 | 42770 11.075735 0.089726 3 467 | 8848 3.543989 0.345853 2 468 | 31340 8.123889 1.282880 3 469 | 41413 4.331769 0.754467 3 470 | 12731 0.120865 1.211961 2 471 | 22447 6.116109 0.701523 3 472 | 33564 7.474534 0.505790 3 473 | 48907 8.819454 0.649292 3 474 | 8762 6.802144 0.615284 2 475 | 46696 12.666325 0.931960 3 476 | 36851 8.636180 0.399333 3 477 | 67639 11.730991 1.289833 1 478 | 171 8.132449 0.039062 2 479 | 26674 10.296589 1.496144 3 480 | 8739 7.583906 1.005764 2 481 | 66668 9.777806 0.496377 1 482 | 68732 8.833546 0.513876 1 483 | 69995 4.907899 1.518036 1 484 | 82008 8.362736 1.285939 1 485 | 25054 9.084726 1.606312 3 486 | 33085 14.164141 0.560970 3 487 | 41379 9.080683 0.989920 3 488 | 39417 6.522767 0.038548 3 489 | 12556 3.690342 0.462281 2 490 | 39432 3.563706 0.242019 1 491 | 38010 1.065870 1.141569 1 492 | 69306 6.683796 1.456317 1 493 | 38000 1.712874 0.243945 1 494 | 46321 13.109929 1.280111 3 495 | 66293 11.327910 0.780977 1 496 | 22730 4.545711 1.233254 1 497 | 5952 3.367889 0.468104 2 498 | 72308 8.326224 0.567347 1 499 | 60338 8.978339 1.442034 1 500 | 13301 5.655826 1.582159 2 501 | 27884 8.855312 0.570684 3 502 | 11188 6.649568 0.544233 2 503 | 56796 3.966325 0.850410 1 504 | 8571 1.924045 1.664782 2 505 | 4914 6.004812 0.280369 2 506 | 10784 0.000000 0.375849 2 507 | 39296 9.923018 0.092192 3 508 | 13113 2.389084 0.119284 2 509 | 70204 13.663189 0.133251 1 510 | 46813 11.434976 0.321216 3 511 | 11697 0.358270 1.292858 2 512 | 44183 9.598873 0.223524 3 513 | 2225 6.375275 0.608040 2 514 | 29066 11.580532 0.458401 3 515 | 4245 5.319324 1.598070 2 516 | 34379 4.324031 1.603481 1 517 | 44441 2.358370 1.273204 1 518 | 2022 0.000000 1.182708 2 519 | 26866 12.824376 0.890411 3 520 | 57070 1.587247 1.456982 1 521 | 32932 8.510324 1.520683 3 522 | 51967 10.428884 1.187734 3 523 | 44432 8.346618 0.042318 3 524 | 67066 7.541444 0.809226 1 525 | 17262 2.540946 1.583286 2 526 | 79728 9.473047 0.692513 1 527 | 14259 0.352284 0.474080 2 528 | 6122 0.000000 0.589826 2 529 | 76879 12.405171 0.567201 1 530 | 11426 4.126775 0.871452 2 531 | 2493 0.034087 0.335848 2 532 | 19910 1.177634 0.075106 2 533 | 10939 0.000000 0.479996 2 534 | 17716 0.994909 0.611135 2 535 | 31390 11.053664 1.180117 3 536 | 20375 0.000000 1.679729 2 537 | 26309 2.495011 1.459589 1 538 | 33484 11.516831 0.001156 3 539 | 45944 9.213215 0.797743 3 540 | 4249 5.332865 0.109288 2 541 | 6089 0.000000 1.689771 2 542 | 7513 0.000000 1.126053 2 543 | 27862 12.640062 1.690903 3 544 | 39038 2.693142 1.317518 1 545 | 19218 3.328969 0.268271 2 546 | 62911 7.193166 1.117456 1 547 | 77758 6.615512 1.521012 1 548 | 27940 8.000567 0.835341 3 549 | 2194 4.017541 0.512104 2 550 | 37072 13.245859 0.927465 3 551 | 15585 5.970616 0.813624 2 552 | 25577 11.668719 0.886902 3 553 | 8777 4.283237 1.272728 2 554 | 29016 10.742963 0.971401 3 555 | 21910 12.326672 1.592608 3 556 | 12916 0.000000 0.344622 2 557 | 10976 0.000000 0.922846 2 558 | 79065 10.602095 0.573686 1 559 | 36759 10.861859 1.155054 3 560 | 50011 1.229094 1.638690 1 561 | 1155 0.410392 1.313401 2 562 | 71600 14.552711 0.616162 1 563 | 30817 14.178043 0.616313 3 564 | 54559 14.136260 0.362388 1 565 | 29764 0.093534 1.207194 1 566 | 69100 10.929021 0.403110 1 567 | 47324 11.432919 0.825959 3 568 | 73199 9.134527 0.586846 1 569 | 44461 5.071432 1.421420 1 570 | 45617 11.460254 1.541749 3 571 | 28221 11.620039 1.103553 3 572 | 7091 4.022079 0.207307 2 573 | 6110 3.057842 1.631262 2 574 | 79016 7.782169 0.404385 1 575 | 18289 7.981741 0.929789 3 576 | 43679 4.601363 0.268326 1 577 | 22075 2.595564 1.115375 1 578 | 23535 10.049077 0.391045 3 579 | 25301 3.265444 1.572970 2 580 | 32256 11.780282 1.511014 3 581 | 36951 3.075975 0.286284 1 582 | 31290 1.795307 0.194343 1 583 | 38953 11.106979 0.202415 3 584 | 35257 5.994413 0.800021 1 585 | 25847 9.706062 1.012182 3 586 | 32680 10.582992 0.836025 3 587 | 62018 7.038266 1.458979 1 588 | 9074 0.023771 0.015314 2 589 | 33004 12.823982 0.676371 3 590 | 44588 3.617770 0.493483 1 591 | 32565 8.346684 0.253317 3 592 | 38563 6.104317 0.099207 1 593 | 75668 16.207776 0.584973 1 594 | 9069 6.401969 1.691873 2 595 | 53395 2.298696 0.559757 1 596 | 28631 7.661515 0.055981 3 597 | 71036 6.353608 1.645301 1 598 | 71142 10.442780 0.335870 1 599 | 37653 3.834509 1.346121 1 600 | 76839 10.998587 0.584555 1 601 | 9916 2.695935 1.512111 2 602 | 38889 3.356646 0.324230 1 603 | 39075 14.677836 0.793183 3 604 | 48071 1.551934 0.130902 1 605 | 7275 2.464739 0.223502 2 606 | 41804 1.533216 1.007481 1 607 | 35665 12.473921 0.162910 3 608 | 67956 6.491596 0.032576 1 609 | 41892 10.506276 1.510747 3 610 | 38844 4.380388 0.748506 1 611 | 74197 13.670988 1.687944 1 612 | 14201 8.317599 0.390409 2 613 | 3908 0.000000 0.556245 2 614 | 2459 0.000000 0.290218 2 615 | 32027 10.095799 1.188148 3 616 | 12870 0.860695 1.482632 2 617 | 9880 1.557564 0.711278 2 618 | 72784 10.072779 0.756030 1 619 | 17521 0.000000 0.431468 2 620 | 50283 7.140817 0.883813 3 621 | 33536 11.384548 1.438307 3 622 | 9452 3.214568 1.083536 2 623 | 37457 11.720655 0.301636 3 624 | 17724 6.374475 1.475925 3 625 | 43869 5.749684 0.198875 3 626 | 264 3.871808 0.552602 2 627 | 25736 8.336309 0.636238 3 628 | 39584 9.710442 1.503735 3 629 | 31246 1.532611 1.433898 1 630 | 49567 9.785785 0.984614 3 631 | 7052 2.633627 1.097866 2 632 | 35493 9.238935 0.494701 3 633 | 10986 1.205656 1.398803 2 634 | 49508 3.124909 1.670121 1 635 | 5734 7.935489 1.585044 2 636 | 65479 12.746636 1.560352 1 637 | 77268 10.732563 0.545321 1 638 | 28490 3.977403 0.766103 1 639 | 13546 4.194426 0.450663 2 640 | 37166 9.610286 0.142912 3 641 | 16381 4.797555 1.260455 2 642 | 10848 1.615279 0.093002 2 643 | 35405 4.614771 1.027105 1 644 | 15917 0.000000 1.369726 2 645 | 6131 0.608457 0.512220 2 646 | 67432 6.558239 0.667579 1 647 | 30354 12.315116 0.197068 3 648 | 69696 7.014973 1.494616 1 649 | 33481 8.822304 1.194177 3 650 | 43075 10.086796 0.570455 3 651 | 38343 7.241614 1.661627 3 652 | 14318 4.602395 1.511768 2 653 | 5367 7.434921 0.079792 2 654 | 37894 10.467570 1.595418 3 655 | 36172 9.948127 0.003663 3 656 | 40123 2.478529 1.568987 1 657 | 10976 5.938545 0.878540 2 658 | 12705 0.000000 0.948004 2 659 | 12495 5.559181 1.357926 2 660 | 35681 9.776654 0.535966 3 661 | 46202 3.092056 0.490906 1 662 | 11505 0.000000 1.623311 2 663 | 22834 4.459495 0.538867 1 664 | 49901 8.334306 1.646600 3 665 | 71932 11.226654 0.384686 1 666 | 13279 3.904737 1.597294 2 667 | 49112 7.038205 1.211329 3 668 | 77129 9.836120 1.054340 1 669 | 37447 1.990976 0.378081 1 670 | 62397 9.005302 0.485385 1 671 | 0 1.772510 1.039873 2 672 | 15476 0.458674 0.819560 2 673 | 40625 10.003919 0.231658 3 674 | 36706 0.520807 1.476008 1 675 | 28580 10.678214 1.431837 3 676 | 25862 4.425992 1.363842 1 677 | 63488 12.035355 0.831222 1 678 | 33944 10.606732 1.253858 3 679 | 30099 1.568653 0.684264 1 680 | 13725 2.545434 0.024271 2 681 | 36768 10.264062 0.982593 3 682 | 64656 9.866276 0.685218 1 683 | 14927 0.142704 0.057455 2 684 | 43231 9.853270 1.521432 3 685 | 66087 6.596604 1.653574 1 686 | 19806 2.602287 1.321481 2 687 | 41081 10.411776 0.664168 3 688 | 10277 7.083449 0.622589 2 689 | 7014 2.080068 1.254441 2 690 | 17275 0.522844 1.622458 2 691 | 31600 10.362000 1.544827 3 692 | 59956 3.412967 1.035410 1 693 | 42181 6.796548 1.112153 3 694 | 51743 4.092035 0.075804 1 695 | 5194 2.763811 1.564325 2 696 | 30832 12.547439 1.402443 3 697 | 7976 5.708052 1.596152 2 698 | 14602 4.558025 0.375806 2 699 | 41571 11.642307 0.438553 3 700 | 55028 3.222443 0.121399 1 701 | 5837 4.736156 0.029871 2 702 | 39808 10.839526 0.836323 3 703 | 20944 4.194791 0.235483 2 704 | 22146 14.936259 0.888582 3 705 | 42169 3.310699 1.521855 1 706 | 7010 2.971931 0.034321 2 707 | 3807 9.261667 0.537807 2 708 | 29241 7.791833 1.111416 3 709 | 52696 1.480470 1.028750 1 710 | 42545 3.677287 0.244167 1 711 | 24437 2.202967 1.370399 1 712 | 16037 5.796735 0.935893 2 713 | 8493 3.063333 0.144089 2 714 | 68080 11.233094 0.492487 1 715 | 59016 1.965570 0.005697 1 716 | 11810 8.616719 0.137419 2 717 | 68630 6.609989 1.083505 1 718 | 7629 1.712639 1.086297 2 719 | 71992 10.117445 1.299319 1 720 | 13398 0.000000 1.104178 2 721 | 26241 9.824777 1.346821 3 722 | 11160 1.653089 0.980949 2 723 | 76701 18.178822 1.473671 1 724 | 32174 6.781126 0.885340 3 725 | 45043 8.206750 1.549223 3 726 | 42173 10.081853 1.376745 3 727 | 69801 6.288742 0.112799 1 728 | 41737 3.695937 1.543589 1 729 | 46979 6.726151 1.069380 3 730 | 79267 12.969999 1.568223 1 731 | 4615 2.661390 1.531933 2 732 | 32907 7.072764 1.117386 3 733 | 37444 9.123366 1.318988 3 734 | 569 3.743946 1.039546 2 735 | 8723 2.341300 0.219361 2 736 | 6024 0.541913 0.592348 2 737 | 52252 2.310828 1.436753 1 738 | 8358 6.226597 1.427316 2 739 | 26166 7.277876 0.489252 3 740 | 18471 0.000000 0.389459 2 741 | 3386 7.218221 1.098828 2 742 | 41544 8.777129 1.111464 3 743 | 10480 2.813428 0.819419 2 744 | 5894 2.268766 1.412130 2 745 | 7273 6.283627 0.571292 2 746 | 22272 7.520081 1.626868 3 747 | 31369 11.739225 0.027138 3 748 | 10708 3.746883 0.877350 2 749 | 69364 12.089835 0.521631 1 750 | 37760 12.310404 0.259339 3 751 | 13004 0.000000 0.671355 2 752 | 37885 2.728800 0.331502 1 753 | 52555 10.814342 0.607652 3 754 | 38997 12.170268 0.844205 3 755 | 69698 6.698371 0.240084 1 756 | 11783 3.632672 1.643479 2 757 | 47636 10.059991 0.892361 3 758 | 15744 1.887674 0.756162 2 759 | 69058 8.229125 0.195886 1 760 | 33057 7.817082 0.476102 3 761 | 28681 12.277230 0.076805 3 762 | 34042 10.055337 1.115778 3 763 | 29928 3.596002 1.485952 1 764 | 9734 2.755530 1.420655 2 765 | 7344 7.780991 0.513048 2 766 | 7387 0.093705 0.391834 2 767 | 33957 8.481567 0.520078 3 768 | 9936 3.865584 0.110062 2 769 | 36094 9.683709 0.779984 3 770 | 39835 10.617255 1.359970 3 771 | 64486 7.203216 1.624762 1 772 | 0 7.601414 1.215605 2 773 | 39539 1.386107 1.417070 1 774 | 66972 9.129253 0.594089 1 775 | 15029 1.363447 0.620841 2 776 | 44909 3.181399 0.359329 1 777 | 38183 13.365414 0.217011 3 778 | 37372 4.207717 1.289767 1 779 | 0 4.088395 0.870075 2 780 | 17786 3.327371 1.142505 2 781 | 39055 1.303323 1.235650 1 782 | 37045 7.999279 1.581763 3 783 | 6435 2.217488 0.864536 2 784 | 72265 7.751808 0.192451 1 785 | 28152 14.149305 1.591532 3 786 | 25931 8.765721 0.152808 3 787 | 7538 3.408996 0.184896 2 788 | 1315 1.251021 0.112340 2 789 | 12292 6.160619 1.537165 2 790 | 49248 1.034538 1.585162 1 791 | 9025 0.000000 1.034635 2 792 | 13438 2.355051 0.542603 2 793 | 69683 6.614543 0.153771 1 794 | 25374 10.245062 1.450903 3 795 | 55264 3.467074 1.231019 1 796 | 38324 7.487678 1.572293 3 797 | 69643 4.624115 1.185192 1 798 | 44058 8.995957 1.436479 3 799 | 41316 11.564476 0.007195 3 800 | 29119 3.440948 0.078331 1 801 | 51656 1.673603 0.732746 1 802 | 3030 4.719341 0.699755 2 803 | 35695 10.304798 1.576488 3 804 | 1537 2.086915 1.199312 2 805 | 9083 6.338220 1.131305 2 806 | 47744 8.254926 0.710694 3 807 | 71372 16.067108 0.974142 1 808 | 37980 1.723201 0.310488 1 809 | 42385 3.785045 0.876904 1 810 | 22687 2.557561 0.123738 1 811 | 39512 9.852220 1.095171 3 812 | 11885 3.679147 1.557205 2 813 | 4944 9.789681 0.852971 2 814 | 73230 14.958998 0.526707 1 815 | 17585 11.182148 1.288459 3 816 | 68737 7.528533 1.657487 1 817 | 13818 5.253802 1.378603 2 818 | 31662 13.946752 1.426657 3 819 | 86686 15.557263 1.430029 1 820 | 43214 12.483550 0.688513 3 821 | 24091 2.317302 1.411137 1 822 | 52544 10.069724 0.766119 3 823 | 61861 5.792231 1.615483 1 824 | 47903 4.138435 0.475994 1 825 | 37190 12.929517 0.304378 3 826 | 6013 9.378238 0.307392 2 827 | 27223 8.361362 1.643204 3 828 | 69027 7.939406 1.325042 1 829 | 78642 10.735384 0.705788 1 830 | 30254 11.592723 0.286188 3 831 | 21704 10.098356 0.704748 3 832 | 34985 9.299025 0.545337 3 833 | 31316 11.158297 0.218067 3 834 | 76368 16.143900 0.558388 1 835 | 27953 10.971700 1.221787 3 836 | 152 0.000000 0.681478 2 837 | 9146 3.178961 1.292692 2 838 | 75346 17.625350 0.339926 1 839 | 26376 1.995833 0.267826 1 840 | 35255 10.640467 0.416181 3 841 | 19198 9.628339 0.985462 3 842 | 12518 4.662664 0.495403 2 843 | 25453 5.754047 1.382742 2 844 | 12530 0.000000 0.037146 2 845 | 62230 9.334332 0.198118 1 846 | 9517 3.846162 0.619968 2 847 | 71161 10.685084 0.678179 1 848 | 1593 4.752134 0.359205 2 849 | 33794 0.697630 0.966786 1 850 | 39710 10.365836 0.505898 3 851 | 16941 0.461478 0.352865 2 852 | 69209 11.339537 1.068740 1 853 | 4446 5.420280 0.127310 2 854 | 9347 3.469955 1.619947 2 855 | 55635 8.517067 0.994858 3 856 | 65889 8.306512 0.413690 1 857 | 10753 2.628690 0.444320 2 858 | 7055 0.000000 0.802985 2 859 | 7905 0.000000 1.170397 2 860 | 53447 7.298767 1.582346 3 861 | 9194 7.331319 1.277988 2 862 | 61914 9.392269 0.151617 1 863 | 15630 5.541201 1.180596 2 864 | 79194 15.149460 0.537540 1 865 | 12268 5.515189 0.250562 2 866 | 33682 7.728898 0.920494 3 867 | 26080 11.318785 1.510979 3 868 | 19119 3.574709 1.531514 2 869 | 30902 7.350965 0.026332 3 870 | 63039 7.122363 1.630177 1 871 | 51136 1.828412 1.013702 1 872 | 35262 10.117989 1.156862 3 873 | 42776 11.309897 0.086291 3 874 | 64191 8.342034 1.388569 1 875 | 15436 0.241714 0.715577 2 876 | 14402 10.482619 1.694972 2 877 | 6341 9.289510 1.428879 2 878 | 14113 4.269419 0.134181 2 879 | 6390 0.000000 0.189456 2 880 | 8794 0.817119 0.143668 2 881 | 43432 1.508394 0.652651 1 882 | 38334 9.359918 0.052262 3 883 | 34068 10.052333 0.550423 3 884 | 30819 11.111660 0.989159 3 885 | 22239 11.265971 0.724054 3 886 | 28725 10.383830 0.254836 3 887 | 57071 3.878569 1.377983 1 888 | 72420 13.679237 0.025346 1 889 | 28294 10.526846 0.781569 3 890 | 9896 0.000000 0.924198 2 891 | 65821 4.106727 1.085669 1 892 | 7645 8.118856 1.470686 2 893 | 71289 7.796874 0.052336 1 894 | 5128 2.789669 1.093070 2 895 | 13711 6.226962 0.287251 2 896 | 22240 10.169548 1.660104 3 897 | 15092 0.000000 1.370549 2 898 | 5017 7.513353 0.137348 2 899 | 10141 8.240793 0.099735 2 900 | 35570 14.612797 1.247390 3 901 | 46893 3.562976 0.445386 1 902 | 8178 3.230482 1.331698 2 903 | 55783 3.612548 1.551911 1 904 | 1148 0.000000 0.332365 2 905 | 10062 3.931299 0.487577 2 906 | 74124 14.752342 1.155160 1 907 | 66603 10.261887 1.628085 1 908 | 11893 2.787266 1.570402 2 909 | 50908 15.112319 1.324132 3 910 | 39891 5.184553 0.223382 3 911 | 65915 3.868359 0.128078 1 912 | 65678 3.507965 0.028904 1 913 | 62996 11.019254 0.427554 1 914 | 36851 3.812387 0.655245 1 915 | 36669 11.056784 0.378725 3 916 | 38876 8.826880 1.002328 3 917 | 26878 11.173861 1.478244 3 918 | 46246 11.506465 0.421993 3 919 | 12761 7.798138 0.147917 3 920 | 35282 10.155081 1.370039 3 921 | 68306 10.645275 0.693453 1 922 | 31262 9.663200 1.521541 3 923 | 34754 10.790404 1.312679 3 924 | 13408 2.810534 0.219962 2 925 | 30365 9.825999 1.388500 3 926 | 10709 1.421316 0.677603 2 927 | 24332 11.123219 0.809107 3 928 | 45517 13.402206 0.661524 3 929 | 6178 1.212255 0.836807 2 930 | 10639 1.568446 1.297469 2 931 | 29613 3.343473 1.312266 1 932 | 22392 5.400155 0.193494 1 933 | 51126 3.818754 0.590905 1 934 | 53644 7.973845 0.307364 3 935 | 51417 9.078824 0.734876 3 936 | 24859 0.153467 0.766619 1 937 | 61732 8.325167 0.028479 1 938 | 71128 7.092089 1.216733 1 939 | 27276 5.192485 1.094409 3 940 | 30453 10.340791 1.087721 3 941 | 18670 2.077169 1.019775 2 942 | 70600 10.151966 0.993105 1 943 | 12683 0.046826 0.809614 2 944 | 81597 11.221874 1.395015 1 945 | 69959 14.497963 1.019254 1 946 | 8124 3.554508 0.533462 2 947 | 18867 3.522673 0.086725 2 948 | 80886 14.531655 0.380172 1 949 | 55895 3.027528 0.885457 1 950 | 31587 1.845967 0.488985 1 951 | 10591 10.226164 0.804403 3 952 | 70096 10.965926 1.212328 1 953 | 53151 2.129921 1.477378 1 954 | 11992 0.000000 1.606849 2 955 | 33114 9.489005 0.827814 3 956 | 7413 0.000000 1.020797 2 957 | 10583 0.000000 1.270167 2 958 | 58668 6.556676 0.055183 1 959 | 35018 9.959588 0.060020 3 960 | 70843 7.436056 1.479856 1 961 | 14011 0.404888 0.459517 2 962 | 35015 9.952942 1.650279 3 963 | 70839 15.600252 0.021935 1 964 | 3024 2.723846 0.387455 2 965 | 5526 0.513866 1.323448 2 966 | 5113 0.000000 0.861859 2 967 | 20851 7.280602 1.438470 2 968 | 40999 9.161978 1.110180 3 969 | 15823 0.991725 0.730979 2 970 | 35432 7.398380 0.684218 3 971 | 53711 12.149747 1.389088 3 972 | 64371 9.149678 0.874905 1 973 | 9289 9.666576 1.370330 2 974 | 60613 3.620110 0.287767 1 975 | 18338 5.238800 1.253646 2 976 | 22845 14.715782 1.503758 3 977 | 74676 14.445740 1.211160 1 978 | 34143 13.609528 0.364240 3 979 | 14153 3.141585 0.424280 2 980 | 9327 0.000000 0.120947 2 981 | 18991 0.454750 1.033280 2 982 | 9193 0.510310 0.016395 2 983 | 2285 3.864171 0.616349 2 984 | 9493 6.724021 0.563044 2 985 | 2371 4.289375 0.012563 2 986 | 13963 0.000000 1.437030 2 987 | 2299 3.733617 0.698269 2 988 | 5262 2.002589 1.380184 2 989 | 4659 2.502627 0.184223 2 990 | 17582 6.382129 0.876581 2 991 | 27750 8.546741 0.128706 3 992 | 9868 2.694977 0.432818 2 993 | 18333 3.951256 0.333300 2 994 | 3780 9.856183 0.329181 2 995 | 18190 2.068962 0.429927 2 996 | 11145 3.410627 0.631838 2 997 | 68846 9.974715 0.669787 1 998 | 26575 10.650102 0.866627 3 999 | 48111 9.134528 0.728045 3 1000 | 43757 7.882601 1.332446 3 1001 | -------------------------------------------------------------------------------- /LDA/README.md: -------------------------------------------------------------------------------- 1 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/fisher1.jpeg) 2 | 3 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/fisher2.jpeg) 4 | 5 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/fisher3.jpeg) 6 | -------------------------------------------------------------------------------- /Linear_Regression/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/Linear_Regression/.DS_Store -------------------------------------------------------------------------------- /Linear_Regression/.ipynb_checkpoints/linearRegression-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 4 6 | } 7 | -------------------------------------------------------------------------------- /Linear_Regression/README.md: -------------------------------------------------------------------------------- 1 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/linearRegression1.jpeg) 2 | 3 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/linearRegression2.jpeg) 4 | 5 | 6 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/linearRegression3.jpeg) 7 | 8 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/linearRegression4.jpeg) 9 | -------------------------------------------------------------------------------- /Linear_Regression/data/data.txt: -------------------------------------------------------------------------------- 1 | 2104,3,399900 2 | 1600,3,329900 3 | 2400,3,369000 4 | 1416,2,232000 5 | 3000,4,539900 6 | 1985,4,299900 7 | 1534,3,314900 8 | 1427,3,198999 9 | 1380,3,212000 10 | 1494,3,242500 11 | 1940,4,239999 12 | 2000,3,347000 13 | 1890,3,329999 14 | 4478,5,699900 15 | 1268,3,259900 16 | 2300,4,449900 17 | 1320,2,299900 18 | 1236,3,199900 19 | 2609,4,499998 20 | 3031,4,599000 21 | 1767,3,252900 22 | 1888,2,255000 23 | 1604,3,242900 24 | 1962,4,259900 25 | 3890,3,573900 26 | 1100,3,249900 27 | 1458,3,464500 28 | 2526,3,469000 29 | 2200,3,475000 30 | 2637,3,299900 31 | 1839,2,349900 32 | 1000,1,169900 33 | 2040,4,314900 34 | 3137,3,579900 35 | 1811,4,285900 36 | 1437,3,249900 37 | 1239,3,229900 38 | 2132,4,345000 39 | 4215,4,549000 40 | 2162,4,287000 41 | 1664,2,368500 42 | 2238,3,329900 43 | 2567,4,314000 44 | 1200,3,299000 45 | 852,2,179900 46 | 1852,4,299900 47 | 1203,3,239500 48 | -------------------------------------------------------------------------------- /Logistic_Regression/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/Logistic_Regression/.DS_Store -------------------------------------------------------------------------------- /Logistic_Regression/.ipynb_checkpoints/logisticRegression-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 4 6 | } 7 | -------------------------------------------------------------------------------- /Logistic_Regression/data/data1.txt: -------------------------------------------------------------------------------- 1 | 34.62365962451697,78.0246928153624,0 2 | 30.28671076822607,43.89499752400101,0 3 | 35.84740876993872,72.90219802708364,0 4 | 60.18259938620976,86.30855209546826,1 5 | 79.0327360507101,75.3443764369103,1 6 | 45.08327747668339,56.3163717815305,0 7 | 61.10666453684766,96.51142588489624,1 8 | 75.02474556738889,46.55401354116538,1 9 | 76.09878670226257,87.42056971926803,1 10 | 84.43281996120035,43.53339331072109,1 11 | 95.86155507093572,38.22527805795094,0 12 | 75.01365838958247,30.60326323428011,0 13 | 82.30705337399482,76.48196330235604,1 14 | 69.36458875970939,97.71869196188608,1 15 | 39.53833914367223,76.03681085115882,0 16 | 53.9710521485623,89.20735013750205,1 17 | 69.07014406283025,52.74046973016765,1 18 | 67.94685547711617,46.67857410673128,0 19 | 70.66150955499435,92.92713789364831,1 20 | 76.97878372747498,47.57596364975532,1 21 | 67.37202754570876,42.83843832029179,0 22 | 89.67677575072079,65.79936592745237,1 23 | 50.534788289883,48.85581152764205,0 24 | 34.21206097786789,44.20952859866288,0 25 | 77.9240914545704,68.9723599933059,1 26 | 62.27101367004632,69.95445795447587,1 27 | 80.1901807509566,44.82162893218353,1 28 | 93.114388797442,38.80067033713209,0 29 | 61.83020602312595,50.25610789244621,0 30 | 38.78580379679423,64.99568095539578,0 31 | 61.379289447425,72.80788731317097,1 32 | 85.40451939411645,57.05198397627122,1 33 | 52.10797973193984,63.12762376881715,0 34 | 52.04540476831827,69.43286012045222,1 35 | 40.23689373545111,71.16774802184875,0 36 | 54.63510555424817,52.21388588061123,0 37 | 33.91550010906887,98.86943574220611,0 38 | 64.17698887494485,80.90806058670817,1 39 | 74.78925295941542,41.57341522824434,0 40 | 34.1836400264419,75.2377203360134,0 41 | 83.90239366249155,56.30804621605327,1 42 | 51.54772026906181,46.85629026349976,0 43 | 94.44336776917852,65.56892160559052,1 44 | 82.36875375713919,40.61825515970618,0 45 | 51.04775177128865,45.82270145776001,0 46 | 62.22267576120188,52.06099194836679,0 47 | 77.19303492601364,70.45820000180959,1 48 | 97.77159928000232,86.7278223300282,1 49 | 62.07306379667647,96.76882412413983,1 50 | 91.56497449807442,88.69629254546599,1 51 | 79.94481794066932,74.16311935043758,1 52 | 99.2725269292572,60.99903099844988,1 53 | 90.54671411399852,43.39060180650027,1 54 | 34.52451385320009,60.39634245837173,0 55 | 50.2864961189907,49.80453881323059,0 56 | 49.58667721632031,59.80895099453265,0 57 | 97.64563396007767,68.86157272420604,1 58 | 32.57720016809309,95.59854761387875,0 59 | 74.24869136721598,69.82457122657193,1 60 | 71.79646205863379,78.45356224515052,1 61 | 75.3956114656803,85.75993667331619,1 62 | 35.28611281526193,47.02051394723416,0 63 | 56.25381749711624,39.26147251058019,0 64 | 30.05882244669796,49.59297386723685,0 65 | 44.66826172480893,66.45008614558913,0 66 | 66.56089447242954,41.09209807936973,0 67 | 40.45755098375164,97.53518548909936,1 68 | 49.07256321908844,51.88321182073966,0 69 | 80.27957401466998,92.11606081344084,1 70 | 66.74671856944039,60.99139402740988,1 71 | 32.72283304060323,43.30717306430063,0 72 | 64.0393204150601,78.03168802018232,1 73 | 72.34649422579923,96.22759296761404,1 74 | 60.45788573918959,73.09499809758037,1 75 | 58.84095621726802,75.85844831279042,1 76 | 99.82785779692128,72.36925193383885,1 77 | 47.26426910848174,88.47586499559782,1 78 | 50.45815980285988,75.80985952982456,1 79 | 60.45555629271532,42.50840943572217,0 80 | 82.22666157785568,42.71987853716458,0 81 | 88.9138964166533,69.80378889835472,1 82 | 94.83450672430196,45.69430680250754,1 83 | 67.31925746917527,66.58935317747915,1 84 | 57.23870631569862,59.51428198012956,1 85 | 80.36675600171273,90.96014789746954,1 86 | 68.46852178591112,85.59430710452014,1 87 | 42.0754545384731,78.84478600148043,0 88 | 75.47770200533905,90.42453899753964,1 89 | 78.63542434898018,96.64742716885644,1 90 | 52.34800398794107,60.76950525602592,0 91 | 94.09433112516793,77.15910509073893,1 92 | 90.44855097096364,87.50879176484702,1 93 | 55.48216114069585,35.57070347228866,0 94 | 74.49269241843041,84.84513684930135,1 95 | 89.84580670720979,45.35828361091658,1 96 | 83.48916274498238,48.38028579728175,1 97 | 42.2617008099817,87.10385094025457,1 98 | 99.31500880510394,68.77540947206617,1 99 | 55.34001756003703,64.9319380069486,1 100 | 74.77589300092767,89.52981289513276,1 101 | -------------------------------------------------------------------------------- /Logistic_Regression/data/data2.txt: -------------------------------------------------------------------------------- 1 | 0.051267,0.69956,1 2 | -0.092742,0.68494,1 3 | -0.21371,0.69225,1 4 | -0.375,0.50219,1 5 | -0.51325,0.46564,1 6 | -0.52477,0.2098,1 7 | -0.39804,0.034357,1 8 | -0.30588,-0.19225,1 9 | 0.016705,-0.40424,1 10 | 0.13191,-0.51389,1 11 | 0.38537,-0.56506,1 12 | 0.52938,-0.5212,1 13 | 0.63882,-0.24342,1 14 | 0.73675,-0.18494,1 15 | 0.54666,0.48757,1 16 | 0.322,0.5826,1 17 | 0.16647,0.53874,1 18 | -0.046659,0.81652,1 19 | -0.17339,0.69956,1 20 | -0.47869,0.63377,1 21 | -0.60541,0.59722,1 22 | -0.62846,0.33406,1 23 | -0.59389,0.005117,1 24 | -0.42108,-0.27266,1 25 | -0.11578,-0.39693,1 26 | 0.20104,-0.60161,1 27 | 0.46601,-0.53582,1 28 | 0.67339,-0.53582,1 29 | -0.13882,0.54605,1 30 | -0.29435,0.77997,1 31 | -0.26555,0.96272,1 32 | -0.16187,0.8019,1 33 | -0.17339,0.64839,1 34 | -0.28283,0.47295,1 35 | -0.36348,0.31213,1 36 | -0.30012,0.027047,1 37 | -0.23675,-0.21418,1 38 | -0.06394,-0.18494,1 39 | 0.062788,-0.16301,1 40 | 0.22984,-0.41155,1 41 | 0.2932,-0.2288,1 42 | 0.48329,-0.18494,1 43 | 0.64459,-0.14108,1 44 | 0.46025,0.012427,1 45 | 0.6273,0.15863,1 46 | 0.57546,0.26827,1 47 | 0.72523,0.44371,1 48 | 0.22408,0.52412,1 49 | 0.44297,0.67032,1 50 | 0.322,0.69225,1 51 | 0.13767,0.57529,1 52 | -0.0063364,0.39985,1 53 | -0.092742,0.55336,1 54 | -0.20795,0.35599,1 55 | -0.20795,0.17325,1 56 | -0.43836,0.21711,1 57 | -0.21947,-0.016813,1 58 | -0.13882,-0.27266,1 59 | 0.18376,0.93348,0 60 | 0.22408,0.77997,0 61 | 0.29896,0.61915,0 62 | 0.50634,0.75804,0 63 | 0.61578,0.7288,0 64 | 0.60426,0.59722,0 65 | 0.76555,0.50219,0 66 | 0.92684,0.3633,0 67 | 0.82316,0.27558,0 68 | 0.96141,0.085526,0 69 | 0.93836,0.012427,0 70 | 0.86348,-0.082602,0 71 | 0.89804,-0.20687,0 72 | 0.85196,-0.36769,0 73 | 0.82892,-0.5212,0 74 | 0.79435,-0.55775,0 75 | 0.59274,-0.7405,0 76 | 0.51786,-0.5943,0 77 | 0.46601,-0.41886,0 78 | 0.35081,-0.57968,0 79 | 0.28744,-0.76974,0 80 | 0.085829,-0.75512,0 81 | 0.14919,-0.57968,0 82 | -0.13306,-0.4481,0 83 | -0.40956,-0.41155,0 84 | -0.39228,-0.25804,0 85 | -0.74366,-0.25804,0 86 | -0.69758,0.041667,0 87 | -0.75518,0.2902,0 88 | -0.69758,0.68494,0 89 | -0.4038,0.70687,0 90 | -0.38076,0.91886,0 91 | -0.50749,0.90424,0 92 | -0.54781,0.70687,0 93 | 0.10311,0.77997,0 94 | 0.057028,0.91886,0 95 | -0.10426,0.99196,0 96 | -0.081221,1.1089,0 97 | 0.28744,1.087,0 98 | 0.39689,0.82383,0 99 | 0.63882,0.88962,0 100 | 0.82316,0.66301,0 101 | 0.67339,0.64108,0 102 | 1.0709,0.10015,0 103 | -0.046659,-0.57968,0 104 | -0.23675,-0.63816,0 105 | -0.15035,-0.36769,0 106 | -0.49021,-0.3019,0 107 | -0.46717,-0.13377,0 108 | -0.28859,-0.060673,0 109 | -0.61118,-0.067982,0 110 | -0.66302,-0.21418,0 111 | -0.59965,-0.41886,0 112 | -0.72638,-0.082602,0 113 | -0.83007,0.31213,0 114 | -0.72062,0.53874,0 115 | -0.59389,0.49488,0 116 | -0.48445,0.99927,0 117 | -0.0063364,0.99927,0 118 | 0.63265,-0.030612,0 119 | -------------------------------------------------------------------------------- /Logistic_Regression/logisticRegression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### Logistic回归的一般过程:\n", 8 | "\n", 9 | "1、收集数据:采用任意方法收集数据。 \n", 10 | "2、准备数据:由于需要进行距离计算,因此要求数据类型为数值型。另外,结构化数据格式则最佳。 \n", 11 | "3、分析数据:采用任意方法对数据进行分析。 \n", 12 | "4、训练算法:大部分时间将用于训练,训练的目的是为了找到最佳的分类回归系数。 \n", 13 | "5、测试算法:一旦训练步骤完成,分类将会很快。 \n", 14 | "6、使用算法:首先,我们需要输入一些数据,并将其转换成对应的结构化数值;接着,基于训练好的回归系数,就可以对这些数值进行简单的回归计算,判定它们属于哪个类别;在这之后,我们就可以在输出的类别上做一些其他分析工作。 \n", 15 | "\n", 16 | "Logistic回归的目的是寻找一个非线性函数Sigmoid的最佳拟合参数,求解过程可以由最优化算法完成。 \n", 17 | "为什么不用线性回归的代价函数表示,因为线性回归的代价函数可能是非凸的,对于分类问题,使用梯度下降很难得到最小值,上面的代价函数是凸函数。" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 70, 23 | "metadata": {}, 24 | "outputs": [], 25 | "source": [ 26 | "import os, sys\n", 27 | "import numpy as np\n", 28 | "import matplotlib.pyplot as plt" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 71, 34 | "metadata": {}, 35 | "outputs": [], 36 | "source": [ 37 | "def readData(fileName, split, dataType):\n", 38 | " data = np.loadtxt(fileName, delimiter=split, dtype=dataType)\n", 39 | " X = data[:, :-1]\n", 40 | " y = data[:,-1]\n", 41 | " return X, y\n", 42 | "\n", 43 | "# 显示二维图形\n", 44 | "def plot_data(X,y):\n", 45 | " pos = np.where(y==1) #找到y==1的坐标位置\n", 46 | " neg = np.where(y==0) #找到y==0的坐标位置\n", 47 | " #作图\n", 48 | " plt.figure(figsize=(15,12))\n", 49 | " plt.plot(X[pos,0],X[pos,1],'ro') # red o\n", 50 | " plt.plot(X[neg,0],X[neg,1],'bo') # blue o\n", 51 | " plt.title(\"data\")\n", 52 | " plt.show()" 53 | ] 54 | }, 55 | { 56 | "cell_type": "code", 57 | "execution_count": 72, 58 | "metadata": {}, 59 | "outputs": [], 60 | "source": [ 61 | "# 映射为多项式 \n", 62 | "def mapFeature(X1,X2):\n", 63 | " degree = 2; # 映射的最高次方\n", 64 | " out = np.ones((X1.shape[0],1)) # 映射后的结果数组(取代X)\n", 65 | " '''\n", 66 | " 这里以degree=2为例,映射为1,x1,x2,x1^2,x1,x2,x2^2\n", 67 | " '''\n", 68 | " for i in np.arange(1,degree+1): \n", 69 | " for j in range(i+1):\n", 70 | " temp = X1**(i-j)*(X2**j) #矩阵直接乘相当于matlab中的点乘.*\n", 71 | " out = np.hstack((out, temp.reshape(-1,1)))\n", 72 | " return out\n", 73 | "\n", 74 | "#画决策边界\n", 75 | "def plotDecisionBoundary(theta,X,y):\n", 76 | " pos = np.where(y==1) #找到y==1的坐标位置\n", 77 | " neg = np.where(y==0) #找到y==0的坐标位置\n", 78 | " #作图\n", 79 | " plt.figure(figsize=(15,12))\n", 80 | " plt.plot(X[pos,0],X[pos,1],'ro') # red o\n", 81 | " plt.plot(X[neg,0],X[neg,1],'bo') # blue o\n", 82 | " plt.title(u\"decision result\")\n", 83 | " \n", 84 | " #u = np.linspace(30,100,100)\n", 85 | " #v = np.linspace(30,100,100)\n", 86 | " \n", 87 | " u = np.linspace(-1,1.5,50) #根据具体的数据,这里需要调整\n", 88 | " v = np.linspace(-1,1.5,50)\n", 89 | " \n", 90 | " z = np.zeros((len(u),len(v)))\n", 91 | " for i in range(len(u)):\n", 92 | " for j in range(len(v)):\n", 93 | " z[i,j] = np.dot(mapFeature(u[i].reshape(1,-1),v[j].reshape(1,-1)),theta) # 计算对应的值,需要map\n", 94 | " \n", 95 | " z = np.transpose(z)\n", 96 | " plt.contour(u,v,z,[0,0.01],linewidth=2.0) # 画等高线,范围在[0,0.01],即近似为决策边界\n", 97 | " #plt.legend()\n", 98 | " plt.show()" 99 | ] 100 | }, 101 | { 102 | "cell_type": "code", 103 | "execution_count": 73, 104 | "metadata": {}, 105 | "outputs": [], 106 | "source": [ 107 | "def sigmoid(z):\n", 108 | " #h = np.zeros(len(z), 1)\n", 109 | " h = 1.0 / (1 + np.exp(-z))\n", 110 | " return h\n", 111 | " \n", 112 | "def lossFunction(X, y, init_w, init_lambda):\n", 113 | " m = len(y)\n", 114 | " z = np.dot(X, init_w) # 计算h(z)\n", 115 | " init_w1 = init_w.copy() # 因为正则化j=1从1开始,不包含0,所以复制一份,前theta(0)值为0 \n", 116 | " init_w1[0] = 0 \n", 117 | " h = sigmoid(z) \n", 118 | " tmp_w = np.dot(np.transpose(init_w1), init_w1)\n", 119 | " J = (-np.dot(np.transpose(y), np.log(h)) - np.dot(np.transpose(1-y), np.log(1-h)) + tmp_w*init_lambda/2)/m\n", 120 | " return J" 121 | ] 122 | }, 123 | { 124 | "cell_type": "code", 125 | "execution_count": 74, 126 | "metadata": {}, 127 | "outputs": [], 128 | "source": [ 129 | "def gradientDescent(X, y, lr, iters, init_lambda):\n", 130 | " m = len(X) # m 为行\n", 131 | " n = len(X[0]) # n为列\n", 132 | " yMat = np.mat(y)\n", 133 | " \n", 134 | " weights = np.ones((n, 1))\n", 135 | " loss = np.zeros((iters, 1))\n", 136 | " weights = weights.copy()\n", 137 | " weights[0] = 0\n", 138 | " for i in range(iters):\n", 139 | " z = np.dot(X, weights)\n", 140 | " h = sigmoid(z)\n", 141 | " \n", 142 | " #J对w的偏导数 = X.transpose * (Y - g(X*w))\n", 143 | " error = h - yMat.transpose()\n", 144 | " weights = weights - lr*np.dot(X.transpose(), error) #+ init_lambda/m*weights) #正则化的梯度\n", 145 | " loss[i] = lossFunction(X, y, weights, init_lambda)\n", 146 | " print('weights: ', weights)\n", 147 | " print(\"loss: \", loss)\n", 148 | " return weights.getA(), loss" 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": 75, 154 | "metadata": {}, 155 | "outputs": [], 156 | "source": [ 157 | "# 预测\n", 158 | "def predict(X, weight):\n", 159 | " m = X.shape[0]\n", 160 | " p = np.zeros((m,1))\n", 161 | " p = sigmoid(np.dot(X,weight)) # 预测的结果,是个概率值\n", 162 | " \n", 163 | " for i in range(m):\n", 164 | " if p[i] > 0.5: #概率大于0.5预测为1,否则预测为0\n", 165 | " p[i] = 1\n", 166 | " else:\n", 167 | " p[i] = 0\n", 168 | " return p" 169 | ] 170 | }, 171 | { 172 | "cell_type": "code", 173 | "execution_count": 76, 174 | "metadata": {}, 175 | "outputs": [ 176 | { 177 | "data": { 178 | "image/png": "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\n", 179 | "text/plain": [ 180 | "
" 181 | ] 182 | }, 183 | "metadata": { 184 | "needs_background": "light" 185 | }, 186 | "output_type": "display_data" 187 | }, 188 | { 189 | "name": "stdout", 190 | "output_type": "stream", 191 | "text": [ 192 | "weights: [[ 6.7327819 ]\n", 193 | " [ 3.07871038]\n", 194 | " [ 4.63527312]\n", 195 | " [-13.43953014]\n", 196 | " [ -7.88873979]\n", 197 | " [-14.5644838 ]]\n", 198 | "loss: [[0.83883012]\n", 199 | " [0.82336765]\n", 200 | " [0.80944015]\n", 201 | " ...\n", 202 | " [0.57885458]\n", 203 | " [0.5788562 ]\n", 204 | " [0.57885781]]\n", 205 | "在训练集上的准确度为79.166667%\n" 206 | ] 207 | }, 208 | { 209 | "name": "stderr", 210 | "output_type": "stream", 211 | "text": [ 212 | "/Users/bingao/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:36: UserWarning: The following kwargs were not used by contour: 'linewidth'\n", 213 | "/Users/bingao/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:211: RuntimeWarning: Glyph 20915 missing from current font.\n", 214 | " font.set_text(s, 0.0, flags=flags)\n", 215 | "/Users/bingao/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:211: RuntimeWarning: Glyph 31574 missing from current font.\n", 216 | " font.set_text(s, 0.0, flags=flags)\n", 217 | "/Users/bingao/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:211: RuntimeWarning: Glyph 36793 missing from current font.\n", 218 | " font.set_text(s, 0.0, flags=flags)\n", 219 | "/Users/bingao/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:211: RuntimeWarning: Glyph 30028 missing from current font.\n", 220 | " font.set_text(s, 0.0, flags=flags)\n", 221 | "/Users/bingao/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:180: RuntimeWarning: Glyph 20915 missing from current font.\n", 222 | " font.set_text(s, 0, flags=flags)\n", 223 | "/Users/bingao/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:180: RuntimeWarning: Glyph 31574 missing from current font.\n", 224 | " font.set_text(s, 0, flags=flags)\n", 225 | "/Users/bingao/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:180: RuntimeWarning: Glyph 36793 missing from current font.\n", 226 | " font.set_text(s, 0, flags=flags)\n", 227 | "/Users/bingao/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:180: RuntimeWarning: Glyph 30028 missing from current font.\n", 228 | " font.set_text(s, 0, flags=flags)\n" 229 | ] 230 | }, 231 | { 232 | "data": { 233 | "image/png": "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\n", 234 | "text/plain": [ 235 | "
" 236 | ] 237 | }, 238 | "metadata": { 239 | "needs_background": "light" 240 | }, 241 | "output_type": "display_data" 242 | } 243 | ], 244 | "source": [ 245 | "X, y = readData('./data/data2.txt', ',', np.float64)\n", 246 | "plot_data(X,y)\n", 247 | "X1 = mapFeature(X[:,0],X[:,1])#映射为多项式\n", 248 | "# 80% as training dataset, 20% as validation dataset\n", 249 | "ratio = 0.8\n", 250 | "weights, loss = gradientDescent(X1[:int(X1.shape[0]*ratio), :], y[:int(X1.shape[0]*ratio)], 0.01, 10000, 0.1)\n", 251 | "p = predict(X1[int(X1.shape[0]*ratio): , :], weights)\n", 252 | "print(u'在训练集上的准确度为%f%%'%np.mean(np.float64(p==y[int(X1.shape[0]*ratio):])*100)) # 与真实值比较,p==y返回True,转化为float\n", 253 | "plotDecisionBoundary(weights,X,y) #画决策边界 " 254 | ] 255 | } 256 | ], 257 | "metadata": { 258 | "kernelspec": { 259 | "display_name": "Python 3", 260 | "language": "python", 261 | "name": "python3" 262 | }, 263 | "language_info": { 264 | "codemirror_mode": { 265 | "name": "ipython", 266 | "version": 3 267 | }, 268 | "file_extension": ".py", 269 | "mimetype": "text/x-python", 270 | "name": "python", 271 | "nbconvert_exporter": "python", 272 | "pygments_lexer": "ipython3", 273 | "version": "3.7.6" 274 | } 275 | }, 276 | "nbformat": 4, 277 | "nbformat_minor": 4 278 | } 279 | -------------------------------------------------------------------------------- /Navie_Bayes/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/Navie_Bayes/.DS_Store -------------------------------------------------------------------------------- /Navie_Bayes/.ipynb_checkpoints/navie_bayes-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### 朴素贝叶斯算法流程:\n", 8 | "\n", 9 | "朴素贝叶斯是经典的生成学习方法。即:由训练数据学习联合概率分布P(X,Y),然后求得后验概率分布P(Y|X)。\n", 10 | "也就是利用训练数据学习P(X|Y)和P(Y)的估计,得到联合概率分布:P(X,Y)= P(Y)P(X|Y)。\n", 11 | "概率估计方法可以是极大似然估计,也可以是贝叶斯估计。\n", 12 | "\n", 13 | "1、计算先验概率P(Y=ck)和条件概率P(X=x|Y=ck); \n", 14 | "2、对于给定的实例X,计算:P(Y=ck)乘以连乘【P(X=xi|Y=ck)】,X的各个分类特征之间相互独立,即条件独立性假设; \n", 15 | "3、确定实例X的嘞类:y=P(Y=ck|X=x) = argmaxP(Y=ck)乘以连乘【P(X=xi|Y=ck)】。 \n", 16 | "\n", 17 | "下面我们给出一个垃圾邮件分类的例子。\n", 18 | "参考了https://github.com/Asia-Lee/Naive_Bayes/blob/master/Email_NB.py" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": 166, 24 | "metadata": {}, 25 | "outputs": [], 26 | "source": [ 27 | "#coding:utf-8\n", 28 | "import os, sys\n", 29 | "import numpy as np;\n", 30 | "import random\n", 31 | "import re" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": 167, 37 | "metadata": {}, 38 | "outputs": [], 39 | "source": [ 40 | "\"\"\"\n", 41 | "函数说明:接收一个大字符串并将其解析为字符串列表\n", 42 | "\"\"\"\n", 43 | "def textParse(bigString): # 将字符串转换为字符列表\n", 44 | " listOfTokens = re.split(r'\\W+', bigString) # 将特殊符号作为切分标志进行字符串切分,即非字母、非数字\n", 45 | " return [tok.lower() for tok in listOfTokens if len(tok) > 2] # 除了单个字母,例如大写的I,其它单词变成小写\n", 46 | "\n", 47 | "\"\"\"\n", 48 | "函数说明:将切分的实验样本词条整理成不重复的词条列表,也就是词汇表\n", 49 | "Parameters:\n", 50 | " dataSet - 整理的样本数据集\n", 51 | "Returns:\n", 52 | " vocabSet - 返回不重复的词条列表,也就是词汇表\n", 53 | "\"\"\"\n", 54 | "def createVocabList(dataSet):\n", 55 | " vocabSet = set([]) # 创建一个空的不重复列表\n", 56 | " for document in dataSet:\n", 57 | " vocabSet = vocabSet | set(document) # 取并集\n", 58 | " return list(vocabSet)\n", 59 | "\n", 60 | "\"\"\"\n", 61 | "函数说明:根据vocabList词汇表,将inputSet向量化,向量的每个元素为1或0\n", 62 | "Parameters:\n", 63 | " vocabList - createVocabList返回的列表\n", 64 | " inputSet - 切分的词条列表\n", 65 | "Returns:\n", 66 | " returnVec - 文档向量,词集模型\n", 67 | "\"\"\"\n", 68 | "def setOfWords2Vec(vocabList, inputSet):\n", 69 | " returnVec = [0] * len(vocabList) #创建一个其中所含元素都为0的向量\n", 70 | " for word in inputSet: #遍历每个词条\n", 71 | " if word in vocabList: #如果词条存在于词汇表中,则置1\n", 72 | " returnVec[vocabList.index(word)] = 1\n", 73 | " else:\n", 74 | " print(\"the word: %s is not in my Vocabulary!\" % word)\n", 75 | " return returnVec #返回文档向量" 76 | ] 77 | }, 78 | { 79 | "cell_type": "code", 80 | "execution_count": 168, 81 | "metadata": {}, 82 | "outputs": [], 83 | "source": [ 84 | "def navie_bayes(trainMatrix, trainCategory):\n", 85 | " numTrainDocs = len(trainMatrix) # 计算训练的文档数目\n", 86 | " numWords = len(trainMatrix[0]) # 计算每篇文档的词条数\n", 87 | " \n", 88 | " # 1、计算先验概率P(Y=0)属于非垃圾邮件,和P(Y=1)属于垃圾邮件,# 文档属于垃圾邮件类的概率\n", 89 | " pAbusive = sum(trainCategory) / float(numTrainDocs) #trainCategory里面\n", 90 | " #垃圾邮件为1,非垃圾邮件为0,sum(trainCategory)代表所有垃圾邮件的个数,那么这个地方求得的就是\n", 91 | " #垃圾邮件的先验概率\n", 92 | " \n", 93 | " pNoAbusive = 1- pAbusive\n", 94 | " \n", 95 | " \n", 96 | " # 2、用贝叶斯估计计算条件概率, 这里为了防止所估计的概率值为0,我们让lambda=1,即采用拉普拉斯平滑\n", 97 | " p0Num = np.ones(numWords)\n", 98 | " p1Num = np.ones(numWords) # 创建numpy.ones数组,词条出现数初始化为1,拉普拉斯平滑\n", 99 | " p0Denom = 1.0\n", 100 | " p1Denom = 1.0 # 分母初始化为1 ,拉普拉斯平滑\n", 101 | " for i in range(numTrainDocs):\n", 102 | " # 2.1、计算垃圾邮件的条件概率P(X=x|Y=1)\n", 103 | " if trainCategory[i] == 1:\n", 104 | " p1Num += trainMatrix[i]\n", 105 | " p1Denom += sum(trainMatrix[i])\n", 106 | " else: # 统计属于非垃圾类的条件概率所需的数据,即P(w0|0),P(w1|0),P(w2|0)···\n", 107 | " p0Num += trainMatrix[i]\n", 108 | " p0Denom += sum(trainMatrix[i])\n", 109 | " p1Vect = np.log(p1Num / p1Denom)\n", 110 | " p0Vect = np.log(p0Num / p0Denom) #取对数,在下面求乘积的时候就可以转换为求和\n", 111 | "\n", 112 | " return p0Vect, p1Vect, pAbusive # 返回属于正常邮件类的条件概率数组,属于垃圾邮件类的条件概率数组,文档属于垃圾邮件类的概率\n", 113 | " \n", 114 | "\n", 115 | "def inference(vec2Classify, p0Vec, p1Vec, pClass1):\n", 116 | " # 3、确定实例X的嘞类:y=P(Y=ck|X=x) = argmaxP(Y=ck)乘以连乘【P(X=xi|Y=ck)】。\n", 117 | " p1=sum(vec2Classify*p1Vec) + np.log(pClass1)\n", 118 | " p0=sum(vec2Classify*p0Vec) + np.log(1.0-pClass1)\n", 119 | " if p1 > p0:\n", 120 | " return 1\n", 121 | " else:\n", 122 | " return 0" 123 | ] 124 | }, 125 | { 126 | "cell_type": "code", 127 | "execution_count": 169, 128 | "metadata": {}, 129 | "outputs": [], 130 | "source": [ 131 | "def main():\n", 132 | " docList = []\n", 133 | " classList = []\n", 134 | " fullText = []\n", 135 | " for i in range(1, 26): # 遍历25个txt文件\n", 136 | " wordList = textParse(open('data/spam/%d.txt' % i, 'r', encoding='ISO-8859-1').read()) # 读取每个垃圾邮件,并字符串转换成字符串列表\n", 137 | " docList.append(wordList)\n", 138 | " fullText.append(wordList)\n", 139 | " classList.append(1) # 标记垃圾邮件,1表示垃圾文件\n", 140 | " wordList = textParse(open('data/ham/%d.txt' % i, 'r', encoding='ISO-8859-1').read()) # 读取每个非垃圾邮件,并字符串转换成字符串列表\n", 141 | " docList.append(wordList)\n", 142 | " fullText.append(wordList)\n", 143 | " classList.append(0) # 标记正常邮件,0表示正常文件\n", 144 | " vocabList = createVocabList(docList) # 创建词汇表,不重复\n", 145 | " trainingSet = list(range(50))\n", 146 | " testSet = [] # 创建存储训练集的索引值的列表和测试集的索引值的列表\n", 147 | " for i in range(10): # 从50个邮件中,随机挑选出40个作为训练集,10个做测试集\n", 148 | " randIndex = int(random.uniform(0, len(trainingSet))) # 随机选取索索引值\n", 149 | " testSet.append(trainingSet[randIndex]) # 添加测试集的索引值\n", 150 | " del (trainingSet[randIndex]) # 在训练集列表中删除添加到测试集的索引值\n", 151 | " trainMat = []\n", 152 | " trainClasses = [] # 创建训练集矩阵和训练集类别标签系向量\n", 153 | " for docIndex in trainingSet: # 遍历训练集\n", 154 | " trainMat.append(setOfWords2Vec(vocabList, docList[docIndex])) # 将生成的词集模型添加到训练矩阵中\n", 155 | " trainClasses.append(classList[docIndex]) # 将类别添加到训练集类别标签系向量中\n", 156 | " p0V, p1V, pSpam = navie_bayes(np.array(trainMat), np.array(trainClasses)) # 训练朴素贝叶斯模型\n", 157 | " errorCount = 0 # 错误分类计数\n", 158 | " for docIndex in testSet: # 遍历测试集\n", 159 | " wordVector = setOfWords2Vec(vocabList, docList[docIndex]) # 测试集的词集模型\n", 160 | " if inference(np.array(wordVector), p0V, p1V, pSpam) != classList[docIndex]: # 如果分类错误\n", 161 | " errorCount += 1 # 错误计数加1\n", 162 | " print(\"分类错误的测试集:\", docList[docIndex])\n", 163 | " print('错误率:%.2f%%' % (float(errorCount) / len(testSet) * 100))" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": 170, 169 | "metadata": {}, 170 | "outputs": [ 171 | { 172 | "name": "stdout", 173 | "output_type": "stream", 174 | "text": [ 175 | "错误率:0.00%\n" 176 | ] 177 | } 178 | ], 179 | "source": [ 180 | "if __name__ == '__main__':\n", 181 | " main()" 182 | ] 183 | } 184 | ], 185 | "metadata": { 186 | "kernelspec": { 187 | "display_name": "Python 3", 188 | "language": "python", 189 | "name": "python3" 190 | }, 191 | "language_info": { 192 | "codemirror_mode": { 193 | "name": "ipython", 194 | "version": 3 195 | }, 196 | "file_extension": ".py", 197 | "mimetype": "text/x-python", 198 | "name": "python", 199 | "nbconvert_exporter": "python", 200 | "pygments_lexer": "ipython3", 201 | "version": "3.7.6" 202 | } 203 | }, 204 | "nbformat": 4, 205 | "nbformat_minor": 4 206 | } 207 | -------------------------------------------------------------------------------- /Navie_Bayes/README.md: -------------------------------------------------------------------------------- 1 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/navieBayes1.jpeg) 2 | 3 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/navieBayes2.jpeg) 4 | 5 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/navieBayes3.jpeg) 6 | 7 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/navieBayes4.jpeg) 8 | 9 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/navieBayes5.jpeg) 10 | 11 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/navieBayes6.jpeg) 12 | 13 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/navieBayes7.jpeg) 14 | 15 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/navieBayes8.jpeg) 16 | -------------------------------------------------------------------------------- /Navie_Bayes/data/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/Navie_Bayes/data/.DS_Store -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/1.txt: -------------------------------------------------------------------------------- 1 | Hi Peter, 2 | 3 | With Jose out of town, do you want to 4 | meet once in a while to keep things 5 | going and do some interesting stuff? 6 | 7 | Let me know 8 | Eugene -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/10.txt: -------------------------------------------------------------------------------- 1 | Ryan Whybrew commented on your status. 2 | 3 | Ryan wrote: 4 | "turd ferguson or butt horn." 5 | -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/11.txt: -------------------------------------------------------------------------------- 1 | Arvind Thirumalai commented on your status. 2 | 3 | Arvind wrote: 4 | ""you know"" 5 | 6 | 7 | Reply to this email to comment on this status. 8 | 9 | -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/12.txt: -------------------------------------------------------------------------------- 1 | Thanks Peter. 2 | 3 | I'll definitely check in on this. How is your book 4 | going? I heard chapter 1 came in and it was in 5 | good shape. ;-) 6 | 7 | I hope you are doing well. 8 | 9 | Cheers, 10 | 11 | Troy -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/13.txt: -------------------------------------------------------------------------------- 1 | Jay Stepp commented on your status. 2 | 3 | Jay wrote: 4 | ""to the" ???" 5 | 6 | 7 | Reply to this email to comment on this status. 8 | 9 | To see the comment thread, follow the link below: 10 | 11 | -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/14.txt: -------------------------------------------------------------------------------- 1 | LinkedIn 2 | 3 | Kerry Haloney requested to add you as a connection on LinkedIn: 4 | 5 | Peter, 6 | 7 | I'd like to add you to my professional network on LinkedIn. 8 | 9 | - Kerry Haloney 10 | 11 | -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/15.txt: -------------------------------------------------------------------------------- 1 | Hi Peter, 2 | 3 | The hotels are the ones that rent out the tent. They are all lined up on the hotel grounds : )) So much for being one with nature, more like being one with a couple dozen tour groups and nature. 4 | I have about 100M of pictures from that trip. I can go through them and get you jpgs of my favorite scenic pictures. 5 | 6 | Where are you and Jocelyn now? New York? Will you come to Tokyo for Chinese New Year? Perhaps to see the two of you then. I will go to Thailand for winter holiday to see my mom : ) 7 | 8 | Take care, 9 | D 10 | -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/16.txt: -------------------------------------------------------------------------------- 1 | yeah I am ready. I may not be here because Jar Jar has plane tickets to Germany for me. -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/17.txt: -------------------------------------------------------------------------------- 1 | Benoit Mandelbrot 1924-2010 2 | 3 | Benoit Mandelbrot 1924-2010 4 | 5 | Wilmott Team 6 | 7 | Benoit Mandelbrot, the mathematician, the father of fractal mathematics, and advocate of more sophisticated modelling in quantitative finance, died on 14th October 2010 aged 85. 8 | 9 | Wilmott magazine has often featured Mandelbrot, his ideas, and the work of others inspired by his fundamental insights. 10 | 11 | You must be logged on to view these articles from past issues of Wilmott Magazine. -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/18.txt: -------------------------------------------------------------------------------- 1 | Hi Peter, 2 | 3 | Sure thing. Sounds good. Let me know what time would be good for you. 4 | I will come prepared with some ideas and we can go from there. 5 | 6 | Regards, 7 | 8 | -Vivek. -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/19.txt: -------------------------------------------------------------------------------- 1 | LinkedIn 2 | 3 | Julius O requested to add you as a connection on LinkedIn: 4 | 5 | Hi Peter. 6 | 7 | Looking forward to the book! 8 | 9 | 10 | Accept View invitation from Julius O 11 | -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/2.txt: -------------------------------------------------------------------------------- 1 | Yay to you both doing fine! 2 | 3 | I'm working on an MBA in Design Strategy at CCA (top art school.) It's a new program focusing on more of a right-brained creative and strategic approach to management. I'm an 1/8 of the way done today! -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/20.txt: -------------------------------------------------------------------------------- 1 | I've thought about this and think it's possible. We should get another 2 | lunch. I have a car now and could come pick you up this time. Does 3 | this wednesday work? 11:50? 4 | 5 | Can I have a signed copy of you book? -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/21.txt: -------------------------------------------------------------------------------- 1 | we saw this on the way to the coast...thought u might like it 2 | 3 | hangzhou is huge, one day wasn't enough, but we got a glimpse... 4 | 5 | we went inside the china pavilion at expo, it is pretty interesting, 6 | each province has an exhibit... -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/22.txt: -------------------------------------------------------------------------------- 1 | Hi Hommies, 2 | 3 | Just got a phone call from the roofer, they will come and spaying the foaming today. it will be dusty. pls close all the doors and windows. 4 | Could you help me to close my bathroom window, cat window and the sliding door behind the TV? 5 | I don't know how can those 2 cats survive...... 6 | 7 | Sorry for any inconvenience! -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/23.txt: -------------------------------------------------------------------------------- 1 | 2 | SciFinance now automatically generates GPU-enabled pricing & risk model source code that runs up to 50-300x faster than serial code using a new NVIDIA Fermi-class Tesla 20-Series GPU. 3 | 4 | SciFinance is a derivatives pricing and risk model development tool that automatically generates C/C++ and GPU-enabled source code from concise, high-level model specifications. No parallel computing or CUDA programming expertise is required. 5 | 6 | SciFinance's automatic, GPU-enabled Monte Carlo pricing model source code generation capabilities have been significantly extended in the latest release. This includes: 7 | 8 | -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/24.txt: -------------------------------------------------------------------------------- 1 | Ok I will be there by 10:00 at the latest. -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/25.txt: -------------------------------------------------------------------------------- 1 | That is cold. Is there going to be a retirement party? 2 | Are the leaves changing color? -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/3.txt: -------------------------------------------------------------------------------- 1 | WHat is going on there? 2 | I talked to John on email. We talked about some computer stuff that's it. 3 | 4 | I went bike riding in the rain, it was not that cold. 5 | 6 | We went to the museum in SF yesterday it was $3 to get in and they had 7 | free food. At the same time was a SF Giants game, when we got done we 8 | had to take the train with all the Giants fans, they are 1/2 drunk. -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/4.txt: -------------------------------------------------------------------------------- 1 | Yo. I've been working on my running website. I'm using jquery and the jqplot plugin. I'm not too far away from having a prototype to launch. 2 | 3 | You used jqplot right? If not, I think you would like it. -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/5.txt: -------------------------------------------------------------------------------- 1 | There was a guy at the gas station who told me that if I knew Mandarin 2 | and Python I could get a job with the FBI. -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/6.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/Navie_Bayes/data/ham/6.txt -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/7.txt: -------------------------------------------------------------------------------- 1 | Zach Hamm commented on your status. 2 | 3 | Zach wrote: 4 | "doggy style - enough said, thank you & good night" 5 | 6 | 7 | -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/8.txt: -------------------------------------------------------------------------------- 1 | This e-mail was sent from a notification-only address that cannot accept incoming e-mail. Please do not reply to this message. 2 | 3 | Thank you for your online reservation. The store you selected has located the item you requested and has placed it on hold in your name. Please note that all items are held for 1 day. Please note store prices may differ from those online. 4 | 5 | If you have questions or need assistance with your reservation, please contact the store at the phone number listed below. You can also access store information, such as store hours and location, on the web at http://www.borders.com/online/store/StoreDetailView_98. -------------------------------------------------------------------------------- /Navie_Bayes/data/ham/9.txt: -------------------------------------------------------------------------------- 1 | Hi Peter, 2 | 3 | These are the only good scenic ones and it's too bad there was a girl's back in one of them. Just try to enjoy the blue sky : )) 4 | 5 | D -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/1.txt: -------------------------------------------------------------------------------- 1 | --- Codeine 15mg -- 30 for $203.70 -- VISA Only!!! -- 2 | 3 | -- Codeine (Methylmorphine) is a narcotic (opioid) pain reliever 4 | -- We have 15mg & 30mg pills -- 30/15mg for $203.70 - 60/15mg for $385.80 - 90/15mg for $562.50 -- VISA Only!!! --- -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/10.txt: -------------------------------------------------------------------------------- 1 | OrderCializViagra Online & Save 75-90% 2 | 3 | 0nline Pharmacy NoPrescription required 4 | Buy Canadian Drugs at Wholesale Prices and Save 75-90% 5 | FDA-Approved drugs + Superb Quality Drugs only! 6 | Accept all major credit cards -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/11.txt: -------------------------------------------------------------------------------- 1 | You Have Everything To Gain! 2 | 3 | Incredib1e gains in length of 3-4 inches to yourPenis, PERMANANTLY 4 | 5 | Amazing increase in thickness of yourPenis, up to 30% 6 | BetterEjacu1ation control 7 | Experience Rock-HardErecetions 8 | Explosive, intenseOrgasns 9 | Increase volume ofEjacu1ate 10 | Doctor designed and endorsed 11 | 100% herbal, 100% Natural, 100% Safe 12 | The proven NaturalPenisEnhancement that works! 13 | 100% MoneyBack Guaranteeed -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/12.txt: -------------------------------------------------------------------------------- 1 | Buy Ambiem (Zolpidem) 5mg/10mg @ $2.39/- pill 2 | 3 | 30 pills x 5 mg - $129.00 4 | 60 pills x 5 mg - $199.20 5 | 180 pills x 5 mg - $430.20 6 | 30 pills x 10 mg - $ 138.00 7 | 120 pills x 10 mg - $ 322.80 -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/13.txt: -------------------------------------------------------------------------------- 1 | OrderCializViagra Online & Save 75-90% 2 | 3 | 0nline Pharmacy NoPrescription required 4 | Buy Canadian Drugs at Wholesale Prices and Save 75-90% 5 | FDA-Approved drugs + Superb Quality Drugs only! 6 | Accept all major credit cards 7 | Order Today! From $1.38 8 | -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/14.txt: -------------------------------------------------------------------------------- 1 | BuyVIAGRA 25mg, 50mg, 100mg, 2 | BrandViagra, FemaleViagra from $1.15 per pill 3 | 4 | 5 | ViagraNoPrescription needed - from Certified Canadian Pharmacy 6 | 7 | Buy Here... We accept VISA, AMEX, E-Check... Worldwide Delivery -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/15.txt: -------------------------------------------------------------------------------- 1 | You Have Everything To Gain! 2 | 3 | Incredib1e gains in length of 3-4 inches to yourPenis, PERMANANTLY 4 | 5 | Amazing increase in thickness of yourPenis, up to 30% 6 | BetterEjacu1ation control 7 | Experience Rock-HardErecetions 8 | Explosive, intenseOrgasns 9 | Increase volume ofEjacu1ate 10 | Doctor designed and endorsed 11 | 100% herbal, 100% Natural, 100% Safe -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/16.txt: -------------------------------------------------------------------------------- 1 | You Have Everything To Gain! 2 | 3 | Incredib1e gains in length of 3-4 inches to yourPenis, PERMANANTLY 4 | 5 | Amazing increase in thickness of yourPenis, up to 30% 6 | BetterEjacu1ation control 7 | Experience Rock-HardErecetions 8 | Explosive, intenseOrgasns 9 | Increase volume ofEjacu1ate 10 | Doctor designed and endorsed 11 | 100% herbal, 100% Natural, 100% Safe -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/17.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/Navie_Bayes/data/spam/17.txt -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/18.txt: -------------------------------------------------------------------------------- 1 | Codeine (the most competitive price on NET!) 2 | 3 | Codeine (WILSON) 30mg x 30 $156.00 4 | Codeine (WILSON) 30mg x 60 $291.00 (+4 FreeViagra pills) 5 | Codeine (WILSON) 30mg x 90 $396.00 (+4 FreeViagra pills) 6 | Codeine (WILSON) 30mg x 120 $492.00 (+10 FreeViagra pills) -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/19.txt: -------------------------------------------------------------------------------- 1 | Get Up to 75% OFF at Online WatchesStore 2 | 3 | Discount Watches for All Famous Brands 4 | 5 | * Watches: aRolexBvlgari, Dior, Hermes, Oris, Cartier, AP and more brands 6 | * Louis Vuitton Bags & Wallets 7 | * Gucci Bags 8 | * Tiffany & Co Jewerly 9 | 10 | Enjoy a full 1 year WARRANTY 11 | Shipment via reputable courier: FEDEX, UPS, DHL and EMS Speedpost 12 | You will 100% recieve your order 13 | Save Up to 75% OFF Quality Watches -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/2.txt: -------------------------------------------------------------------------------- 1 | Hydrocodone/Vicodin ES/Brand Watson 2 | 3 | Vicodin ES - 7.5/750 mg: 30 - $195 / 120 $570 4 | Brand Watson - 7.5/750 mg: 30 - $195 / 120 $570 5 | Brand Watson - 10/325 mg: 30 - $199 / 120 - $588 6 | NoPrescription Required 7 | FREE Express FedEx (3-5 days Delivery) for over $200 order 8 | Major Credit Cards + E-CHECK -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/20.txt: -------------------------------------------------------------------------------- 1 | Get Up to 75% OFF at Online WatchesStore 2 | 3 | Discount Watches for All Famous Brands 4 | 5 | * Watches: aRolexBvlgari, Dior, Hermes, Oris, Cartier, AP and more brands 6 | * Louis Vuitton Bags & Wallets 7 | * Gucci Bags 8 | * Tiffany & Co Jewerly 9 | 10 | Enjoy a full 1 year WARRANTY 11 | Shipment via reputable courier: FEDEX, UPS, DHL and EMS Speedpost 12 | You will 100% recieve your order -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/21.txt: -------------------------------------------------------------------------------- 1 | Percocet 10/625 mg withoutPrescription 30 tabs - $225! 2 | Percocet, a narcotic analgesic, is used to treat moderate to moderately SeverePain 3 | Top Quality, EXPRESS Shipping, 100% Safe & Discreet & Private. 4 | Buy Cheap Percocet Online -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/22.txt: -------------------------------------------------------------------------------- 1 | Get Up to 75% OFF at Online WatchesStore 2 | 3 | Discount Watches for All Famous Brands 4 | 5 | * Watches: aRolexBvlgari, Dior, Hermes, Oris, Cartier, AP and more brands 6 | * Louis Vuitton Bags & Wallets 7 | * Gucci Bags 8 | * Tiffany & Co Jewerly 9 | 10 | Enjoy a full 1 year WARRANTY 11 | Shipment via reputable courier: FEDEX, UPS, DHL and EMS Speedpost 12 | You will 100% recieve your order -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/23.txt: -------------------------------------------------------------------------------- 1 | You Have Everything To Gain! 2 | 3 | Incredib1e gains in length of 3-4 inches to yourPenis, PERMANANTLY 4 | 5 | Amazing increase in thickness of yourPenis, up to 30% 6 | BetterEjacu1ation control 7 | Experience Rock-HardErecetions 8 | Explosive, intenseOrgasns 9 | Increase volume ofEjacu1ate 10 | Doctor designed and endorsed 11 | 100% herbal, 100% Natural, 100% Safe -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/24.txt: -------------------------------------------------------------------------------- 1 | You Have Everything To Gain! 2 | 3 | Incredib1e gains in length of 3-4 inches to yourPenis, PERMANANTLY 4 | 5 | Amazing increase in thickness of yourPenis, up to 30% 6 | BetterEjacu1ation control 7 | Experience Rock-HardErecetions 8 | Explosive, intenseOrgasns 9 | Increase volume ofEjacu1ate 10 | Doctor designed and endorsed 11 | 100% herbal, 100% Natural, 100% Safe -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/25.txt: -------------------------------------------------------------------------------- 1 | Experience with BiggerPenis Today! Grow 3-inches more 2 | 3 | The Safest & Most Effective Methods Of_PenisEn1argement. 4 | Save your time and money! 5 | BetterErections with effective Ma1eEnhancement products. 6 | 7 | #1 Ma1eEnhancement Supplement. Trusted by Millions. Buy Today! -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/3.txt: -------------------------------------------------------------------------------- 1 | You Have Everything To Gain! 2 | 3 | Incredib1e gains in length of 3-4 inches to yourPenis, PERMANANTLY 4 | 5 | Amazing increase in thickness of yourPenis, up to 30% 6 | BetterEjacu1ation control 7 | Experience Rock-HardErecetions 8 | Explosive, intenseOrgasns 9 | Increase volume ofEjacu1ate 10 | Doctor designed and endorsed 11 | 100% herbal, 100% Natural, 100% Safe 12 | The proven NaturalPenisEnhancement that works! 13 | 100% MoneyBack Guaranteeed -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/4.txt: -------------------------------------------------------------------------------- 1 | Percocet 10/625 mg withoutPrescription 30 tabs - $225! 2 | Percocet, a narcotic analgesic, is used to treat moderate to moderately SeverePain 3 | Top Quality, EXPRESS Shipping, 100% Safe & Discreet & Private. 4 | Buy Cheap Percocet Online -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/5.txt: -------------------------------------------------------------------------------- 1 | --- Codeine 15mg -- 30 for $203.70 -- VISA Only!!! -- 2 | 3 | -- Codeine (Methylmorphine) is a narcotic (opioid) pain reliever 4 | -- We have 15mg & 30mg pills -- 30/15mg for $203.70 - 60/15mg for $385.80 - 90/15mg for $562.50 -- VISA Only!!! --- -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/6.txt: -------------------------------------------------------------------------------- 1 | OEM Adobe & Microsoft softwares 2 | Fast order and download 3 | 4 | Microsoft Office Professional Plus 2007/2010 $129 5 | Microsoft Windows 7 Ultimate $119 6 | Adobe Photoshop CS5 Extended 7 | Adobe Acrobat 9 Pro Extended 8 | Windows XP Professional & thousand more titles -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/7.txt: -------------------------------------------------------------------------------- 1 | Bargains Here! Buy Phentermin 37.5 mg (K-25) 2 | 3 | Buy Genuine Phentermin at Low Cost 4 | VISA Accepted 5 | 30 - $130.50 6 | 60 - $219.00 7 | 90 - $292.50 8 | 120 - $366.00 9 | 180 - $513.00 -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/8.txt: -------------------------------------------------------------------------------- 1 | You Have Everything To Gain! 2 | 3 | Incredib1e gains in length of 3-4 inches to yourPenis, PERMANANTLY 4 | 5 | Amazing increase in thickness of yourPenis, up to 30% 6 | BetterEjacu1ation control 7 | Experience Rock-HardErecetions 8 | Explosive, intenseOrgasns 9 | Increase volume ofEjacu1ate 10 | Doctor designed and endorsed 11 | 100% herbal, 100% Natural, 100% Safe -------------------------------------------------------------------------------- /Navie_Bayes/data/spam/9.txt: -------------------------------------------------------------------------------- 1 | Bargains Here! Buy Phentermin 37.5 mg (K-25) 2 | 3 | Buy Genuine Phentermin at Low Cost 4 | VISA Accepted 5 | 30 - $130.50 6 | 60 - $219.00 7 | 90 - $292.50 8 | 120 - $366.00 9 | 180 - $513.00 -------------------------------------------------------------------------------- /Navie_Bayes/navieBayes.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### 朴素贝叶斯算法流程:\n", 8 | "\n", 9 | "朴素贝叶斯是经典的生成学习方法。即:由训练数据学习联合概率分布P(X,Y),然后求得后验概率分布P(Y|X)。\n", 10 | "也就是利用训练数据学习P(X|Y)和P(Y)的估计,得到联合概率分布:P(X,Y)= P(Y)P(X|Y)。\n", 11 | "概率估计方法可以是极大似然估计,也可以是贝叶斯估计。\n", 12 | "\n", 13 | "1、计算先验概率P(Y=ck)和条件概率P(X=x|Y=ck); \n", 14 | "2、对于给定的实例X,计算:P(Y=ck)乘以连乘【P(X=xi|Y=ck)】,X的各个分类特征之间相互独立,即条件独立性假设; \n", 15 | "3、确定实例X的嘞类:y=P(Y=ck|X=x) = argmaxP(Y=ck)乘以连乘【P(X=xi|Y=ck)】。 \n", 16 | "\n", 17 | "下面我们给出一个垃圾邮件分类的例子。\n", 18 | "参考了https://github.com/Asia-Lee/Naive_Bayes/blob/master/Email_NB.py" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": 171, 24 | "metadata": {}, 25 | "outputs": [], 26 | "source": [ 27 | "#coding:utf-8\n", 28 | "import os, sys\n", 29 | "import numpy as np;\n", 30 | "import random\n", 31 | "import re" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": 172, 37 | "metadata": {}, 38 | "outputs": [], 39 | "source": [ 40 | "\"\"\"\n", 41 | "函数说明:接收一个大字符串并将其解析为字符串列表\n", 42 | "\"\"\"\n", 43 | "def textParse(bigString): # 将字符串转换为字符列表\n", 44 | " listOfTokens = re.split(r'\\W+', bigString) # 将特殊符号作为切分标志进行字符串切分,即非字母、非数字\n", 45 | " return [tok.lower() for tok in listOfTokens if len(tok) > 2] # 除了单个字母,例如大写的I,其它单词变成小写\n", 46 | "\n", 47 | "\"\"\"\n", 48 | "函数说明:将切分的实验样本词条整理成不重复的词条列表,也就是词汇表\n", 49 | "Parameters:\n", 50 | " dataSet - 整理的样本数据集\n", 51 | "Returns:\n", 52 | " vocabSet - 返回不重复的词条列表,也就是词汇表\n", 53 | "\"\"\"\n", 54 | "def createVocabList(dataSet):\n", 55 | " vocabSet = set([]) # 创建一个空的不重复列表\n", 56 | " for document in dataSet:\n", 57 | " vocabSet = vocabSet | set(document) # 取并集\n", 58 | " return list(vocabSet)\n", 59 | "\n", 60 | "\"\"\"\n", 61 | "函数说明:根据vocabList词汇表,将inputSet向量化,向量的每个元素为1或0\n", 62 | "Parameters:\n", 63 | " vocabList - createVocabList返回的列表\n", 64 | " inputSet - 切分的词条列表\n", 65 | "Returns:\n", 66 | " returnVec - 文档向量,词集模型\n", 67 | "\"\"\"\n", 68 | "def setOfWords2Vec(vocabList, inputSet):\n", 69 | " returnVec = [0] * len(vocabList) #创建一个其中所含元素都为0的向量\n", 70 | " for word in inputSet: #遍历每个词条\n", 71 | " if word in vocabList: #如果词条存在于词汇表中,则置1\n", 72 | " returnVec[vocabList.index(word)] = 1\n", 73 | " else:\n", 74 | " print(\"the word: %s is not in my Vocabulary!\" % word)\n", 75 | " return returnVec #返回文档向量" 76 | ] 77 | }, 78 | { 79 | "cell_type": "code", 80 | "execution_count": 173, 81 | "metadata": {}, 82 | "outputs": [], 83 | "source": [ 84 | "def navie_bayes(trainMatrix, trainCategory):\n", 85 | " numTrainDocs = len(trainMatrix) # 计算训练的文档数目\n", 86 | " numWords = len(trainMatrix[0]) # 计算每篇文档的词条数\n", 87 | " \n", 88 | " # 1、计算先验概率P(Y=0)属于非垃圾邮件,和P(Y=1)属于垃圾邮件,# 文档属于垃圾邮件类的概率\n", 89 | " pAbusive = sum(trainCategory) / float(numTrainDocs) #trainCategory里面\n", 90 | " #垃圾邮件为1,非垃圾邮件为0,sum(trainCategory)代表所有垃圾邮件的个数,那么这个地方求得的就是\n", 91 | " #垃圾邮件的先验概率\n", 92 | " \n", 93 | " pNoAbusive = 1- pAbusive\n", 94 | " \n", 95 | " \n", 96 | " # 2、用贝叶斯估计计算条件概率, 这里为了防止所估计的概率值为0,我们让lambda=1,即采用拉普拉斯平滑\n", 97 | " p0Num = np.ones(numWords)\n", 98 | " p1Num = np.ones(numWords) # 创建numpy.ones数组,词条出现数初始化为1,拉普拉斯平滑\n", 99 | " p0Denom = 2.0\n", 100 | " p1Denom = 2.0 # 分母初始化为2,因为第i个属性可能的取值数是2个, 拉普拉斯平滑\n", 101 | " for i in range(numTrainDocs):\n", 102 | " # 2.1、计算垃圾邮件的条件概率P(X=x|Y=1)\n", 103 | " if trainCategory[i] == 1:\n", 104 | " p1Num += trainMatrix[i]\n", 105 | " p1Denom += sum(trainMatrix[i])\n", 106 | " else: # 统计属于非垃圾类的条件概率所需的数据,即P(w0|0),P(w1|0),P(w2|0)···\n", 107 | " p0Num += trainMatrix[i]\n", 108 | " p0Denom += sum(trainMatrix[i])\n", 109 | " p1Vect = np.log(p1Num / p1Denom)\n", 110 | " p0Vect = np.log(p0Num / p0Denom) #取对数,在下面求乘积的时候就可以转换为求和\n", 111 | "\n", 112 | " return p0Vect, p1Vect, pAbusive # 返回属于正常邮件类的条件概率数组,属于垃圾邮件类的条件概率数组,文档属于垃圾邮件类的概率\n", 113 | " \n", 114 | "\n", 115 | "def inference(vec2Classify, p0Vec, p1Vec, pClass1):\n", 116 | " # 3、确定实例X的嘞类:y=P(Y=ck|X=x) = argmaxP(Y=ck)乘以连乘【P(X=xi|Y=ck)】。\n", 117 | " p1=sum(vec2Classify*p1Vec) + np.log(pClass1)\n", 118 | " p0=sum(vec2Classify*p0Vec) + np.log(1.0-pClass1)\n", 119 | " if p1 > p0:\n", 120 | " return 1\n", 121 | " else:\n", 122 | " return 0" 123 | ] 124 | }, 125 | { 126 | "cell_type": "code", 127 | "execution_count": 174, 128 | "metadata": {}, 129 | "outputs": [], 130 | "source": [ 131 | "def main():\n", 132 | " docList = []\n", 133 | " classList = []\n", 134 | " fullText = []\n", 135 | " for i in range(1, 26): # 遍历25个txt文件\n", 136 | " wordList = textParse(open('data/spam/%d.txt' % i, 'r', encoding='ISO-8859-1').read()) # 读取每个垃圾邮件,并字符串转换成字符串列表\n", 137 | " docList.append(wordList)\n", 138 | " fullText.append(wordList)\n", 139 | " classList.append(1) # 标记垃圾邮件,1表示垃圾文件\n", 140 | " wordList = textParse(open('data/ham/%d.txt' % i, 'r', encoding='ISO-8859-1').read()) # 读取每个非垃圾邮件,并字符串转换成字符串列表\n", 141 | " docList.append(wordList)\n", 142 | " fullText.append(wordList)\n", 143 | " classList.append(0) # 标记正常邮件,0表示正常文件\n", 144 | " vocabList = createVocabList(docList) # 创建词汇表,不重复\n", 145 | " trainingSet = list(range(50))\n", 146 | " testSet = [] # 创建存储训练集的索引值的列表和测试集的索引值的列表\n", 147 | " for i in range(10): # 从50个邮件中,随机挑选出40个作为训练集,10个做测试集\n", 148 | " randIndex = int(random.uniform(0, len(trainingSet))) # 随机选取索索引值\n", 149 | " testSet.append(trainingSet[randIndex]) # 添加测试集的索引值\n", 150 | " del (trainingSet[randIndex]) # 在训练集列表中删除添加到测试集的索引值\n", 151 | " trainMat = []\n", 152 | " trainClasses = [] # 创建训练集矩阵和训练集类别标签系向量\n", 153 | " for docIndex in trainingSet: # 遍历训练集\n", 154 | " trainMat.append(setOfWords2Vec(vocabList, docList[docIndex])) # 将生成的词集模型添加到训练矩阵中\n", 155 | " trainClasses.append(classList[docIndex]) # 将类别添加到训练集类别标签系向量中\n", 156 | " p0V, p1V, pSpam = navie_bayes(np.array(trainMat), np.array(trainClasses)) # 训练朴素贝叶斯模型\n", 157 | " errorCount = 0 # 错误分类计数\n", 158 | " for docIndex in testSet: # 遍历测试集\n", 159 | " wordVector = setOfWords2Vec(vocabList, docList[docIndex]) # 测试集的词集模型\n", 160 | " if inference(np.array(wordVector), p0V, p1V, pSpam) != classList[docIndex]: # 如果分类错误\n", 161 | " errorCount += 1 # 错误计数加1\n", 162 | " print(\"分类错误的测试集:\", docList[docIndex])\n", 163 | " print('错误率:%.2f%%' % (float(errorCount) / len(testSet) * 100))" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": 175, 169 | "metadata": {}, 170 | "outputs": [ 171 | { 172 | "name": "stdout", 173 | "output_type": "stream", 174 | "text": [ 175 | "错误率:0.00%\n" 176 | ] 177 | } 178 | ], 179 | "source": [ 180 | "if __name__ == '__main__':\n", 181 | " main()" 182 | ] 183 | } 184 | ], 185 | "metadata": { 186 | "kernelspec": { 187 | "display_name": "Python 3", 188 | "language": "python", 189 | "name": "python3" 190 | }, 191 | "language_info": { 192 | "codemirror_mode": { 193 | "name": "ipython", 194 | "version": 3 195 | }, 196 | "file_extension": ".py", 197 | "mimetype": "text/x-python", 198 | "name": "python", 199 | "nbconvert_exporter": "python", 200 | "pygments_lexer": "ipython3", 201 | "version": "3.7.6" 202 | } 203 | }, 204 | "nbformat": 4, 205 | "nbformat_minor": 4 206 | } 207 | -------------------------------------------------------------------------------- /PCA/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/PCA/.DS_Store -------------------------------------------------------------------------------- /PCA/.ipynb_checkpoints/PCA-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /PCA/README.md: -------------------------------------------------------------------------------- 1 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/PCA1.jpeg) 2 | 3 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/PCA2.jpeg) 4 | 5 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/PCA3.jpeg) 6 | 7 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/PCA4.jpeg) 8 | 9 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/PCA5.jpeg) 10 | 11 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/PCA6.jpeg) 12 | 13 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/PCA7.jpeg) -------------------------------------------------------------------------------- /PCA/data/data.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/PCA/data/data.mat -------------------------------------------------------------------------------- /PCA/data/data_faces.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/PCA/data/data_faces.mat -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Machine_learning_code_with_python 2 | 3 | 只使用python来实现机器学习常见的算法(不借助sklearn等包),主要参考西瓜熟和统计机器学习这两本书,代码有一些是参考了网上其他 4 | 人的,我都会在里面注释。欢迎大家给个star或者来提pr,也欢迎大家一起交流。 5 | 6 | 7 | [![MIT license](https://img.shields.io/dub/l/vibe-d.svg)](https://github.com/lawlite19/MachineLearning_Python/blob/master/LICENSE) 8 | 9 | 10 | ## 目录 11 | * [机器学习算法Python实现](#机器学习算法python实现) 12 | * [一、Linear_Regression](#一Linear_Regression) 13 | * [二、PCA](#二PCA) 14 | * [三、Navie_Bayes](#三Navie_Bayes) 15 | * [四、SVM](#四SVM) 16 | * [五、KNN](#五KNN) 17 | * [六、KMeans](#六KMeans) 18 | * [七、Decision_Tree](#七Decision_Tree) 19 | * [八、Logistic_Regression](#八Logistic_Regression) 20 | * [九、LDA](#九Linear_Discriminant_Analysis) 21 | * [十、EM](#十EM) 22 | 23 | 24 | ## 一、[Linear_Regression](/Linear_Regression) 25 | - [全部代码](/Linear_Regression/linearRegression.ipynb) 26 | - [算法推导](/Linear_Regression/README.md) 27 | ##### 优点: 28 | 1、算法简单,可解释性强; 29 | 30 | ##### 缺点: 31 | 1、需要严格的假设; 32 | 2、需处理异常值,对异常值很敏感,对输入数据差; 33 | 34 | ##### 适用场景: 35 | 自变量和因变量之间是线性关系,适用于low dimension, 而且每一维之间都没有共线性。 36 | 37 | 38 | ## 二、[PCA](/PCA) 39 | - [全部代码](/PCA/PCA.ipynb) 40 | - [算法推导](/PCA/README.md) 41 | ##### 优点: 42 | 1、可处理大规模数据集; 43 | 2、无需在数据上进行假设; 44 | 45 | ##### 缺点: 46 | 1、难以搞定非线性数据; 47 | 2、难以理解结果的意义; 48 | 49 | ##### 适用场景: 50 | 维度过高的时候可以用来降低维度。 51 | 52 | 53 | 54 | ## 三、[Navie_Bayes](/Navie_Bayes) 55 | - [全部代码](/Navie_Bayes/navieBayes.ipynb) 56 | - [算法推导](/Navie_Bayes/README.md) 57 | ##### 优点: 58 | 1、快速、易于训练、给出了它们所需的资源能带来良好的表现; 59 | 60 | ##### 缺点: 61 | 1、如果输入变量是相关的,则精度会出现一定幅度的下降; 62 | 63 | ##### 适用场景: 64 | 需要一个比较容易解释,而且不同维度之间相关性较小的模型的时候。可以高效处理高维数据,虽然结果可能不尽如人意。 65 | 66 | 67 | 68 | ## 四、[SVM](/SVM) 69 | - [全部代码](/SVM/SVM.ipynb)(TODO) 70 | - [算法推导](/SVM/README.md) 71 | ##### 优点: 72 | 1、在非线性可分问题上表现优秀; 73 | 2、SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。 74 | 3、少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:  75 | ①增、删非支持向量样本对模型没有影响; ②支持向量样本集具有一定的鲁棒性; ③有些成功的应用中,SVM 方法对核的选取不敏感; 76 | 4、它基于结构风险最小化原则,这样就避免了过学习问题,泛化能力强; 77 | 5、它是一个凸优化问题,因此局部最优解一定是全局最优解的优点; 78 | 6、泛华错误率低,分类速度快,结果易解释; 79 | 80 | ##### 缺点: 81 | 1、大规模的训练样本比较难训练。SVM的空间消耗主要是存储训练样本和核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。 82 | 2、对缺失数据敏感,对参数和核函数的选择敏感; 83 | 84 | ##### 适用场景: 85 | SVM在很多数据集上都有优秀的表现。相对来说,SVM尽量保持与样本间距离的性质导致它抗攻击的能力更强。和随机森林一样,这也是一个拿到数据就可以先尝试一下的算法。 86 | 87 | 88 | 89 | ## 五、[KNN](/KNN) 90 | - [全部代码](/KNN/KNN.ipynb) 91 | - [算法推导](/KNN/README.md)(TODO) 92 | ##### 优点: 93 | 1、算法简单,可解释性强; 94 | 2、可以生成任意形状的决策边界,因此在分割线比较模糊的分类问题上表现也能不错; 95 | 96 | ##### 缺点: 97 | 1、内存消耗高;计算成本高; 98 | 2、不可能用于高维特征空间; 99 | 3、数据量不能过少,否则会因样本数量过少或(和)特征数量过多而导致维度灾难:无法满足密采样条件(样本稀疏问题:维度越高,填充空间所需的数据量越多,可能导致无法找到一个“最近”的样本);计算量太大(高维空间在距离计算上的问题); 100 | 4、数据量也不能过多,因为其所耗时间和空间随着数据量增大。这是由于基于实例的方法需要把所有的实例数据(训练样本)都打包做成模型(因为它需要计算对所有样本的距离,然后排序取最近的),所谓数据即模型。其它方法只需提交训练得到的模型和参数即可; 101 | 102 | ##### 适用场景: 103 | 由于KNN训练的代价小(lazy learning不作训练),KNN或可被用于在线学习(online machine learning)中,即使用新数据不断训练和更新已有模型从而作出更好的预测。 104 | 需要一个特别容易解释的模型的时候,比如需要向用户解释原因的推荐算法。 105 | 106 | 107 | ## 六、[KMeans](/KMeans) 108 | - [全部代码](/KMeans/KMeans.ipynb) 109 | - [算法推导](/KMeans/README.md)(TODO) 110 | ##### 优点: 111 | 1、算法简单,速度快; 112 | 113 | ##### 缺点: 114 | 1、最终结果和初始点的选择有关,容易陷入局部最优。于是有人提出了两种方法,一种是K-means++,一种是二分K-means算法来尽量使K-means达到全局最优; 115 | 2、需要知道K的值 116 | 117 | 118 | ##### 适用场景: 119 | 1、提前已经知道K的值的时候。如果当我们不知道样本集将要聚成多少个类别的时候,那么这时候不适合用kmeans算法,推荐使用其他方法来聚类,如(hierarchical 或meanshift); 120 | 2、一般的聚类场景(例如对用户进行分群组等)外,我们还可以用KMeans实现单变量的离散化,因为一般的等频和等距的离散化方法往往会忽略变量中潜在的分布特征,而基于聚类的离散化可以一定程度地保留变量的分布特征; 121 | 122 | 123 | 124 | ## 七、[Decision_Tree](/Decision_Tree) 125 | - [全部代码](/Decision_Tree/decision_Tree.ipynb) 126 | - [算法推导](/Decision_Tree/README.md)(TODO) 127 | ##### 优点: 128 | 1、总是在沿着特征做切分。随着层层递进,这个划分会越来越细; 129 | 2、虽然生成的树不容易给用户看,但是数据分析的时候,通过观察树的上层结构,能够对分类器的核心思路有一个直观的感受; 130 | 131 | ##### 缺点: 132 | 1、相对容易被攻击的分类器。 133 | 这里的攻击是指人为的改变一些特征,使得分类器判断错误。常见于垃圾邮件躲避检测中; 134 | 135 | ##### 适用场景: 136 | 因为它能够生成清晰的基于特征(feature)选择不同预测结果的树状结构,数据分析师希望更好的理解手上的数据的时候往往可以使用决策树。同时它也是相对容易被攻击的分类器。 137 | 这里的攻击是指人为的改变一些特征,使得分类器判断错误。常见于垃圾邮件躲避检测中。因为决策树最终在底层判断是基于单个条件的,攻击者往往只需要改变很少的特征就可以逃过监测。 138 | 受限于它的简单性,决策树更大的用处是作为一些更有用的算法的基石。 139 | 140 | 141 | 142 | ## 八、[Logistic_Regression](/Logistic_Regression) 143 | - [全部代码](/Logistic_Regression/logisticRegression.ipynb) 144 | - [算法推导](/Logistic_Regression/README.md)(TODO) 145 | 回归方法的核心就是为函数找到最合适的参数,使得函数的值和样本的值最接近。例如线性回归(Linear regression)就是对于函数f(x)=ax+b,找到最合适的a,b。 146 | LR拟合的就不是线性函数了,它拟合的是一个概率学中的函数,f(x)的值这时候就反映了样本属于这个类的概率。 147 | ##### 优点: 148 | 1、模型清晰,背后的概率推导经得住推敲; 149 | 2、输出值自然地落在0到1之间,并且有概率意义。https://www.jianshu.com/p/a8d6b40da0cf 150 | 3、参数代表每个特征对输出的影响,可解释性强; 151 | 4、实施简单,非常高效(计算量小、存储占用低),可以在大数据场景中使用; 152 | 5、可以使用online learning的方式更新轻松更新参数,不需要重新训练整个模型; 153 | 6、解决过拟合的方法很多,如L1、L2正则化; 154 | 7、L2正则化就可以解决多重共线性问题; 155 | 156 | ##### 缺点: 157 | 1、(特征相关情况)因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况; 158 | 2、(特征空间)特征空间很大时,性能不好; 159 | 3、(精度)容易欠拟合,精度不高 160 | ##### 适用场景: 161 | LR同样是很多分类算法的基础组件,它的好处是输出值自然地落在0到1之间,并且有概率意义。因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况。虽然效果一般,却胜在模型清晰, 162 | 背后的概率学经得住推敲。它拟合出来的参数就代表了每一个特征(feature)对结果的影响。也是一个理解数据的好工具。 163 | 164 | 165 | ## 九、[Linear_Discriminant_Analysis](/LDA) 166 | - [全部代码](/LDA/LDA.ipynb)(TODO) 167 | - [算法推导](/LDA/README.md) 168 | ##### 优点: 169 | 170 | 171 | ##### 缺点: 172 | 173 | ##### 适用场景: 174 | 判别分析适用于高维数据需要降维的情况,自带降维功能使得我们能方便地观察样本分布。它的正确性有数学公式可以证明,所以同样是很经得住推敲的方式。但是它的分类准确率往往不是很高, 175 | 所以不是统计系的人就把它作为降维工具用吧。同时注意它是假定样本成正态分布的,所以那种同心圆形的数据就不要尝试了。 176 | 177 | 178 | ## 十、[EM](/EM) 179 | - [全部代码](/EM/EM.ipynb)(TODO) 180 | - [算法推导](/EM/README.md) 181 | ##### 优点: 182 | 183 | 184 | ##### 缺点: 185 | 186 | ##### 适用场景: 187 | -------------------------------------------------------------------------------- /SVM/README.md: -------------------------------------------------------------------------------- 1 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM1.jpeg) 2 | 3 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM2.jpeg) 4 | 5 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM3.jpeg) 6 | 7 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM4.jpeg) 8 | 9 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM5.jpeg) 10 | 11 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM6.jpeg) 12 | 13 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM7.jpeg) 14 | 15 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM8.jpeg) 16 | 17 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM9.jpeg) 18 | 19 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM10.jpeg) 20 | 21 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM11.jpeg) 22 | 23 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM12.jpeg) 24 | 25 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM13.jpeg) 26 | 27 | ![image](https://github.com/gbyy422990/machine_learning_code_with_python/raw/master/src/SVM14.jpeg) 28 | 29 | -------------------------------------------------------------------------------- /src/EM1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/EM1.jpeg -------------------------------------------------------------------------------- /src/EM10.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/EM10.jpeg -------------------------------------------------------------------------------- /src/EM2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/EM2.jpeg -------------------------------------------------------------------------------- /src/EM3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/EM3.jpeg -------------------------------------------------------------------------------- /src/EM4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/EM4.jpeg -------------------------------------------------------------------------------- /src/EM5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/EM5.jpeg -------------------------------------------------------------------------------- /src/EM6.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/EM6.jpeg -------------------------------------------------------------------------------- /src/EM7.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/EM7.jpeg -------------------------------------------------------------------------------- /src/EM8.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/EM8.jpeg -------------------------------------------------------------------------------- /src/EM9.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/EM9.jpeg -------------------------------------------------------------------------------- /src/PCA1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/PCA1.jpeg -------------------------------------------------------------------------------- /src/PCA2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/PCA2.jpeg -------------------------------------------------------------------------------- /src/PCA3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/PCA3.jpeg -------------------------------------------------------------------------------- /src/PCA4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/PCA4.jpeg -------------------------------------------------------------------------------- /src/PCA5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/PCA5.jpeg -------------------------------------------------------------------------------- /src/PCA6.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/PCA6.jpeg -------------------------------------------------------------------------------- /src/PCA7.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/PCA7.jpeg -------------------------------------------------------------------------------- /src/SVM1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM1.jpeg -------------------------------------------------------------------------------- /src/SVM10.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM10.jpeg -------------------------------------------------------------------------------- /src/SVM11.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM11.jpeg -------------------------------------------------------------------------------- /src/SVM12.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM12.jpeg -------------------------------------------------------------------------------- /src/SVM13.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM13.jpeg -------------------------------------------------------------------------------- /src/SVM14.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM14.jpeg -------------------------------------------------------------------------------- /src/SVM2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM2.jpeg -------------------------------------------------------------------------------- /src/SVM3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM3.jpeg -------------------------------------------------------------------------------- /src/SVM4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM4.jpeg -------------------------------------------------------------------------------- /src/SVM5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM5.jpeg -------------------------------------------------------------------------------- /src/SVM6.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM6.jpeg -------------------------------------------------------------------------------- /src/SVM7.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM7.jpeg -------------------------------------------------------------------------------- /src/SVM8.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM8.jpeg -------------------------------------------------------------------------------- /src/SVM9.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/SVM9.jpeg -------------------------------------------------------------------------------- /src/fisher1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/fisher1.jpeg -------------------------------------------------------------------------------- /src/fisher2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/fisher2.jpeg -------------------------------------------------------------------------------- /src/fisher3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/fisher3.jpeg -------------------------------------------------------------------------------- /src/linearRegression1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/linearRegression1.jpeg -------------------------------------------------------------------------------- /src/linearRegression2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/linearRegression2.jpeg -------------------------------------------------------------------------------- /src/linearRegression3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/linearRegression3.jpeg -------------------------------------------------------------------------------- /src/linearRegression4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/linearRegression4.jpeg -------------------------------------------------------------------------------- /src/navieBayes1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/navieBayes1.jpeg -------------------------------------------------------------------------------- /src/navieBayes2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/navieBayes2.jpeg -------------------------------------------------------------------------------- /src/navieBayes3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/navieBayes3.jpeg -------------------------------------------------------------------------------- /src/navieBayes4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/navieBayes4.jpeg -------------------------------------------------------------------------------- /src/navieBayes5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/navieBayes5.jpeg -------------------------------------------------------------------------------- /src/navieBayes6.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/navieBayes6.jpeg -------------------------------------------------------------------------------- /src/navieBayes7.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/navieBayes7.jpeg -------------------------------------------------------------------------------- /src/navieBayes8.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gbyy422990/machine_learning_code_with_python/7f02c0a941c7e353f3fd8519c78851fbfd648dd1/src/navieBayes8.jpeg --------------------------------------------------------------------------------