├── .gitignore ├── Heart.csv ├── LogisticRegressionWithHeartDataset.ipynb ├── NeuralNetworkFinal.ipynb ├── ex1data1.txt ├── ex1data2.txt ├── ex2data1.txt ├── ex3d1.xlsx ├── ex8data1.xlsx ├── k_mean_clustering_final.ipynb ├── kmean.xlsx ├── linearRegressionWithMultipleFeatures.ipynb ├── linearRegressionWithOneVariable.ipynb ├── linearRegressionWithOneVariable1.ipynb ├── logisticRegressionWithOptimizationFunc.ipynb ├── multicall_classification_with_logistic_regression.ipynb ├── multiclass_classification_with_fmin_tnc.ipynb ├── polynomial regression.ipynb └── position_salaries.csv /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /Heart.csv: -------------------------------------------------------------------------------- 1 | ,Age,Sex,ChestPain,RestBP,Chol,Fbs,RestECG,MaxHR,ExAng,Oldpeak,Slope,Ca,Thal,AHD 2 | 1,63,1,typical,145,233,1,2,150,0,2.3,3,0,fixed,No 3 | 2,67,1,asymptomatic,160,286,0,2,108,1,1.5,2,3,normal,Yes 4 | 3,67,1,asymptomatic,120,229,0,2,129,1,2.6,2,2,reversable,Yes 5 | 4,37,1,nonanginal,130,250,0,0,187,0,3.5,3,0,normal,No 6 | 5,41,0,nontypical,130,204,0,2,172,0,1.4,1,0,normal,No 7 | 6,56,1,nontypical,120,236,0,0,178,0,0.8,1,0,normal,No 8 | 7,62,0,asymptomatic,140,268,0,2,160,0,3.6,3,2,normal,Yes 9 | 8,57,0,asymptomatic,120,354,0,0,163,1,0.6,1,0,normal,No 10 | 9,63,1,asymptomatic,130,254,0,2,147,0,1.4,2,1,reversable,Yes 11 | 10,53,1,asymptomatic,140,203,1,2,155,1,3.1,3,0,reversable,Yes 12 | 11,57,1,asymptomatic,140,192,0,0,148,0,0.4,2,0,fixed,No 13 | 12,56,0,nontypical,140,294,0,2,153,0,1.3,2,0,normal,No 14 | 13,56,1,nonanginal,130,256,1,2,142,1,0.6,2,1,fixed,Yes 15 | 14,44,1,nontypical,120,263,0,0,173,0,0,1,0,reversable,No 16 | 15,52,1,nonanginal,172,199,1,0,162,0,0.5,1,0,reversable,No 17 | 16,57,1,nonanginal,150,168,0,0,174,0,1.6,1,0,normal,No 18 | 17,48,1,nontypical,110,229,0,0,168,0,1,3,0,reversable,Yes 19 | 18,54,1,asymptomatic,140,239,0,0,160,0,1.2,1,0,normal,No 20 | 19,48,0,nonanginal,130,275,0,0,139,0,0.2,1,0,normal,No 21 | 20,49,1,nontypical,130,266,0,0,171,0,0.6,1,0,normal,No 22 | 21,64,1,typical,110,211,0,2,144,1,1.8,2,0,normal,No 23 | 22,58,0,typical,150,283,1,2,162,0,1,1,0,normal,No 24 | 23,58,1,nontypical,120,284,0,2,160,0,1.8,2,0,normal,Yes 25 | 24,58,1,nonanginal,132,224,0,2,173,0,3.2,1,2,reversable,Yes 26 | 25,60,1,asymptomatic,130,206,0,2,132,1,2.4,2,2,reversable,Yes 27 | 26,50,0,nonanginal,120,219,0,0,158,0,1.6,2,0,normal,No 28 | 27,58,0,nonanginal,120,340,0,0,172,0,0,1,0,normal,No 29 | 28,66,0,typical,150,226,0,0,114,0,2.6,3,0,normal,No 30 | 29,43,1,asymptomatic,150,247,0,0,171,0,1.5,1,0,normal,No 31 | 30,40,1,asymptomatic,110,167,0,2,114,1,2,2,0,reversable,Yes 32 | 31,69,0,typical,140,239,0,0,151,0,1.8,1,2,normal,No 33 | 32,60,1,asymptomatic,117,230,1,0,160,1,1.4,1,2,reversable,Yes 34 | 33,64,1,nonanginal,140,335,0,0,158,0,0,1,0,normal,Yes 35 | 34,59,1,asymptomatic,135,234,0,0,161,0,0.5,2,0,reversable,No 36 | 35,44,1,nonanginal,130,233,0,0,179,1,0.4,1,0,normal,No 37 | 36,42,1,asymptomatic,140,226,0,0,178,0,0,1,0,normal,No 38 | 37,43,1,asymptomatic,120,177,0,2,120,1,2.5,2,0,reversable,Yes 39 | 38,57,1,asymptomatic,150,276,0,2,112,1,0.6,2,1,fixed,Yes 40 | 39,55,1,asymptomatic,132,353,0,0,132,1,1.2,2,1,reversable,Yes 41 | 40,61,1,nonanginal,150,243,1,0,137,1,1,2,0,normal,No 42 | 41,65,0,asymptomatic,150,225,0,2,114,0,1,2,3,reversable,Yes 43 | 42,40,1,typical,140,199,0,0,178,1,1.4,1,0,reversable,No 44 | 43,71,0,nontypical,160,302,0,0,162,0,0.4,1,2,normal,No 45 | 44,59,1,nonanginal,150,212,1,0,157,0,1.6,1,0,normal,No 46 | 45,61,0,asymptomatic,130,330,0,2,169,0,0,1,0,normal,Yes 47 | 46,58,1,nonanginal,112,230,0,2,165,0,2.5,2,1,reversable,Yes 48 | 47,51,1,nonanginal,110,175,0,0,123,0,0.6,1,0,normal,No 49 | 48,50,1,asymptomatic,150,243,0,2,128,0,2.6,2,0,reversable,Yes 50 | 49,65,0,nonanginal,140,417,1,2,157,0,0.8,1,1,normal,No 51 | 50,53,1,nonanginal,130,197,1,2,152,0,1.2,3,0,normal,No 52 | 51,41,0,nontypical,105,198,0,0,168,0,0,1,1,normal,No 53 | 52,65,1,asymptomatic,120,177,0,0,140,0,0.4,1,0,reversable,No 54 | 53,44,1,asymptomatic,112,290,0,2,153,0,0,1,1,normal,Yes 55 | 54,44,1,nontypical,130,219,0,2,188,0,0,1,0,normal,No 56 | 55,60,1,asymptomatic,130,253,0,0,144,1,1.4,1,1,reversable,Yes 57 | 56,54,1,asymptomatic,124,266,0,2,109,1,2.2,2,1,reversable,Yes 58 | 57,50,1,nonanginal,140,233,0,0,163,0,0.6,2,1,reversable,Yes 59 | 58,41,1,asymptomatic,110,172,0,2,158,0,0,1,0,reversable,Yes 60 | 59,54,1,nonanginal,125,273,0,2,152,0,0.5,3,1,normal,No 61 | 60,51,1,typical,125,213,0,2,125,1,1.4,1,1,normal,No 62 | 61,51,0,asymptomatic,130,305,0,0,142,1,1.2,2,0,reversable,Yes 63 | 62,46,0,nonanginal,142,177,0,2,160,1,1.4,3,0,normal,No 64 | 63,58,1,asymptomatic,128,216,0,2,131,1,2.2,2,3,reversable,Yes 65 | 64,54,0,nonanginal,135,304,1,0,170,0,0,1,0,normal,No 66 | 65,54,1,asymptomatic,120,188,0,0,113,0,1.4,2,1,reversable,Yes 67 | 66,60,1,asymptomatic,145,282,0,2,142,1,2.8,2,2,reversable,Yes 68 | 67,60,1,nonanginal,140,185,0,2,155,0,3,2,0,normal,Yes 69 | 68,54,1,nonanginal,150,232,0,2,165,0,1.6,1,0,reversable,No 70 | 69,59,1,asymptomatic,170,326,0,2,140,1,3.4,3,0,reversable,Yes 71 | 70,46,1,nonanginal,150,231,0,0,147,0,3.6,2,0,normal,Yes 72 | 71,65,0,nonanginal,155,269,0,0,148,0,0.8,1,0,normal,No 73 | 72,67,1,asymptomatic,125,254,1,0,163,0,0.2,2,2,reversable,Yes 74 | 73,62,1,asymptomatic,120,267,0,0,99,1,1.8,2,2,reversable,Yes 75 | 74,65,1,asymptomatic,110,248,0,2,158,0,0.6,1,2,fixed,Yes 76 | 75,44,1,asymptomatic,110,197,0,2,177,0,0,1,1,normal,Yes 77 | 76,65,0,nonanginal,160,360,0,2,151,0,0.8,1,0,normal,No 78 | 77,60,1,asymptomatic,125,258,0,2,141,1,2.8,2,1,reversable,Yes 79 | 78,51,0,nonanginal,140,308,0,2,142,0,1.5,1,1,normal,No 80 | 79,48,1,nontypical,130,245,0,2,180,0,0.2,2,0,normal,No 81 | 80,58,1,asymptomatic,150,270,0,2,111,1,0.8,1,0,reversable,Yes 82 | 81,45,1,asymptomatic,104,208,0,2,148,1,3,2,0,normal,No 83 | 82,53,0,asymptomatic,130,264,0,2,143,0,0.4,2,0,normal,No 84 | 83,39,1,nonanginal,140,321,0,2,182,0,0,1,0,normal,No 85 | 84,68,1,nonanginal,180,274,1,2,150,1,1.6,2,0,reversable,Yes 86 | 85,52,1,nontypical,120,325,0,0,172,0,0.2,1,0,normal,No 87 | 86,44,1,nonanginal,140,235,0,2,180,0,0,1,0,normal,No 88 | 87,47,1,nonanginal,138,257,0,2,156,0,0,1,0,normal,No 89 | 88,53,0,nonanginal,128,216,0,2,115,0,0,1,0,NA,No 90 | 89,53,0,asymptomatic,138,234,0,2,160,0,0,1,0,normal,No 91 | 90,51,0,nonanginal,130,256,0,2,149,0,0.5,1,0,normal,No 92 | 91,66,1,asymptomatic,120,302,0,2,151,0,0.4,2,0,normal,No 93 | 92,62,0,asymptomatic,160,164,0,2,145,0,6.2,3,3,reversable,Yes 94 | 93,62,1,nonanginal,130,231,0,0,146,0,1.8,2,3,reversable,No 95 | 94,44,0,nonanginal,108,141,0,0,175,0,0.6,2,0,normal,No 96 | 95,63,0,nonanginal,135,252,0,2,172,0,0,1,0,normal,No 97 | 96,52,1,asymptomatic,128,255,0,0,161,1,0,1,1,reversable,Yes 98 | 97,59,1,asymptomatic,110,239,0,2,142,1,1.2,2,1,reversable,Yes 99 | 98,60,0,asymptomatic,150,258,0,2,157,0,2.6,2,2,reversable,Yes 100 | 99,52,1,nontypical,134,201,0,0,158,0,0.8,1,1,normal,No 101 | 100,48,1,asymptomatic,122,222,0,2,186,0,0,1,0,normal,No 102 | 101,45,1,asymptomatic,115,260,0,2,185,0,0,1,0,normal,No 103 | 102,34,1,typical,118,182,0,2,174,0,0,1,0,normal,No 104 | 103,57,0,asymptomatic,128,303,0,2,159,0,0,1,1,normal,No 105 | 104,71,0,nonanginal,110,265,1,2,130,0,0,1,1,normal,No 106 | 105,49,1,nonanginal,120,188,0,0,139,0,2,2,3,reversable,Yes 107 | 106,54,1,nontypical,108,309,0,0,156,0,0,1,0,reversable,No 108 | 107,59,1,asymptomatic,140,177,0,0,162,1,0,1,1,reversable,Yes 109 | 108,57,1,nonanginal,128,229,0,2,150,0,0.4,2,1,reversable,Yes 110 | 109,61,1,asymptomatic,120,260,0,0,140,1,3.6,2,1,reversable,Yes 111 | 110,39,1,asymptomatic,118,219,0,0,140,0,1.2,2,0,reversable,Yes 112 | 111,61,0,asymptomatic,145,307,0,2,146,1,1,2,0,reversable,Yes 113 | 112,56,1,asymptomatic,125,249,1,2,144,1,1.2,2,1,normal,Yes 114 | 113,52,1,typical,118,186,0,2,190,0,0,2,0,fixed,No 115 | 114,43,0,asymptomatic,132,341,1,2,136,1,3,2,0,reversable,Yes 116 | 115,62,0,nonanginal,130,263,0,0,97,0,1.2,2,1,reversable,Yes 117 | 116,41,1,nontypical,135,203,0,0,132,0,0,2,0,fixed,No 118 | 117,58,1,nonanginal,140,211,1,2,165,0,0,1,0,normal,No 119 | 118,35,0,asymptomatic,138,183,0,0,182,0,1.4,1,0,normal,No 120 | 119,63,1,asymptomatic,130,330,1,2,132,1,1.8,1,3,reversable,Yes 121 | 120,65,1,asymptomatic,135,254,0,2,127,0,2.8,2,1,reversable,Yes 122 | 121,48,1,asymptomatic,130,256,1,2,150,1,0,1,2,reversable,Yes 123 | 122,63,0,asymptomatic,150,407,0,2,154,0,4,2,3,reversable,Yes 124 | 123,51,1,nonanginal,100,222,0,0,143,1,1.2,2,0,normal,No 125 | 124,55,1,asymptomatic,140,217,0,0,111,1,5.6,3,0,reversable,Yes 126 | 125,65,1,typical,138,282,1,2,174,0,1.4,2,1,normal,Yes 127 | 126,45,0,nontypical,130,234,0,2,175,0,0.6,2,0,normal,No 128 | 127,56,0,asymptomatic,200,288,1,2,133,1,4,3,2,reversable,Yes 129 | 128,54,1,asymptomatic,110,239,0,0,126,1,2.8,2,1,reversable,Yes 130 | 129,44,1,nontypical,120,220,0,0,170,0,0,1,0,normal,No 131 | 130,62,0,asymptomatic,124,209,0,0,163,0,0,1,0,normal,No 132 | 131,54,1,nonanginal,120,258,0,2,147,0,0.4,2,0,reversable,No 133 | 132,51,1,nonanginal,94,227,0,0,154,1,0,1,1,reversable,No 134 | 133,29,1,nontypical,130,204,0,2,202,0,0,1,0,normal,No 135 | 134,51,1,asymptomatic,140,261,0,2,186,1,0,1,0,normal,No 136 | 135,43,0,nonanginal,122,213,0,0,165,0,0.2,2,0,normal,No 137 | 136,55,0,nontypical,135,250,0,2,161,0,1.4,2,0,normal,No 138 | 137,70,1,asymptomatic,145,174,0,0,125,1,2.6,3,0,reversable,Yes 139 | 138,62,1,nontypical,120,281,0,2,103,0,1.4,2,1,reversable,Yes 140 | 139,35,1,asymptomatic,120,198,0,0,130,1,1.6,2,0,reversable,Yes 141 | 140,51,1,nonanginal,125,245,1,2,166,0,2.4,2,0,normal,No 142 | 141,59,1,nontypical,140,221,0,0,164,1,0,1,0,normal,No 143 | 142,59,1,typical,170,288,0,2,159,0,0.2,2,0,reversable,Yes 144 | 143,52,1,nontypical,128,205,1,0,184,0,0,1,0,normal,No 145 | 144,64,1,nonanginal,125,309,0,0,131,1,1.8,2,0,reversable,Yes 146 | 145,58,1,nonanginal,105,240,0,2,154,1,0.6,2,0,reversable,No 147 | 146,47,1,nonanginal,108,243,0,0,152,0,0,1,0,normal,Yes 148 | 147,57,1,asymptomatic,165,289,1,2,124,0,1,2,3,reversable,Yes 149 | 148,41,1,nonanginal,112,250,0,0,179,0,0,1,0,normal,No 150 | 149,45,1,nontypical,128,308,0,2,170,0,0,1,0,normal,No 151 | 150,60,0,nonanginal,102,318,0,0,160,0,0,1,1,normal,No 152 | 151,52,1,typical,152,298,1,0,178,0,1.2,2,0,reversable,No 153 | 152,42,0,asymptomatic,102,265,0,2,122,0,0.6,2,0,normal,No 154 | 153,67,0,nonanginal,115,564,0,2,160,0,1.6,2,0,reversable,No 155 | 154,55,1,asymptomatic,160,289,0,2,145,1,0.8,2,1,reversable,Yes 156 | 155,64,1,asymptomatic,120,246,0,2,96,1,2.2,3,1,normal,Yes 157 | 156,70,1,asymptomatic,130,322,0,2,109,0,2.4,2,3,normal,Yes 158 | 157,51,1,asymptomatic,140,299,0,0,173,1,1.6,1,0,reversable,Yes 159 | 158,58,1,asymptomatic,125,300,0,2,171,0,0,1,2,reversable,Yes 160 | 159,60,1,asymptomatic,140,293,0,2,170,0,1.2,2,2,reversable,Yes 161 | 160,68,1,nonanginal,118,277,0,0,151,0,1,1,1,reversable,No 162 | 161,46,1,nontypical,101,197,1,0,156,0,0,1,0,reversable,No 163 | 162,77,1,asymptomatic,125,304,0,2,162,1,0,1,3,normal,Yes 164 | 163,54,0,nonanginal,110,214,0,0,158,0,1.6,2,0,normal,No 165 | 164,58,0,asymptomatic,100,248,0,2,122,0,1,2,0,normal,No 166 | 165,48,1,nonanginal,124,255,1,0,175,0,0,1,2,normal,No 167 | 166,57,1,asymptomatic,132,207,0,0,168,1,0,1,0,reversable,No 168 | 167,52,1,nonanginal,138,223,0,0,169,0,0,1,NA,normal,No 169 | 168,54,0,nontypical,132,288,1,2,159,1,0,1,1,normal,No 170 | 169,35,1,asymptomatic,126,282,0,2,156,1,0,1,0,reversable,Yes 171 | 170,45,0,nontypical,112,160,0,0,138,0,0,2,0,normal,No 172 | 171,70,1,nonanginal,160,269,0,0,112,1,2.9,2,1,reversable,Yes 173 | 172,53,1,asymptomatic,142,226,0,2,111,1,0,1,0,reversable,No 174 | 173,59,0,asymptomatic,174,249,0,0,143,1,0,2,0,normal,Yes 175 | 174,62,0,asymptomatic,140,394,0,2,157,0,1.2,2,0,normal,No 176 | 175,64,1,asymptomatic,145,212,0,2,132,0,2,2,2,fixed,Yes 177 | 176,57,1,asymptomatic,152,274,0,0,88,1,1.2,2,1,reversable,Yes 178 | 177,52,1,asymptomatic,108,233,1,0,147,0,0.1,1,3,reversable,No 179 | 178,56,1,asymptomatic,132,184,0,2,105,1,2.1,2,1,fixed,Yes 180 | 179,43,1,nonanginal,130,315,0,0,162,0,1.9,1,1,normal,No 181 | 180,53,1,nonanginal,130,246,1,2,173,0,0,1,3,normal,No 182 | 181,48,1,asymptomatic,124,274,0,2,166,0,0.5,2,0,reversable,Yes 183 | 182,56,0,asymptomatic,134,409,0,2,150,1,1.9,2,2,reversable,Yes 184 | 183,42,1,typical,148,244,0,2,178,0,0.8,1,2,normal,No 185 | 184,59,1,typical,178,270,0,2,145,0,4.2,3,0,reversable,No 186 | 185,60,0,asymptomatic,158,305,0,2,161,0,0,1,0,normal,Yes 187 | 186,63,0,nontypical,140,195,0,0,179,0,0,1,2,normal,No 188 | 187,42,1,nonanginal,120,240,1,0,194,0,0.8,3,0,reversable,No 189 | 188,66,1,nontypical,160,246,0,0,120,1,0,2,3,fixed,Yes 190 | 189,54,1,nontypical,192,283,0,2,195,0,0,1,1,reversable,Yes 191 | 190,69,1,nonanginal,140,254,0,2,146,0,2,2,3,reversable,Yes 192 | 191,50,1,nonanginal,129,196,0,0,163,0,0,1,0,normal,No 193 | 192,51,1,asymptomatic,140,298,0,0,122,1,4.2,2,3,reversable,Yes 194 | 193,43,1,asymptomatic,132,247,1,2,143,1,0.1,2,NA,reversable,Yes 195 | 194,62,0,asymptomatic,138,294,1,0,106,0,1.9,2,3,normal,Yes 196 | 195,68,0,nonanginal,120,211,0,2,115,0,1.5,2,0,normal,No 197 | 196,67,1,asymptomatic,100,299,0,2,125,1,0.9,2,2,normal,Yes 198 | 197,69,1,typical,160,234,1,2,131,0,0.1,2,1,normal,No 199 | 198,45,0,asymptomatic,138,236,0,2,152,1,0.2,2,0,normal,No 200 | 199,50,0,nontypical,120,244,0,0,162,0,1.1,1,0,normal,No 201 | 200,59,1,typical,160,273,0,2,125,0,0,1,0,normal,Yes 202 | 201,50,0,asymptomatic,110,254,0,2,159,0,0,1,0,normal,No 203 | 202,64,0,asymptomatic,180,325,0,0,154,1,0,1,0,normal,No 204 | 203,57,1,nonanginal,150,126,1,0,173,0,0.2,1,1,reversable,No 205 | 204,64,0,nonanginal,140,313,0,0,133,0,0.2,1,0,reversable,No 206 | 205,43,1,asymptomatic,110,211,0,0,161,0,0,1,0,reversable,No 207 | 206,45,1,asymptomatic,142,309,0,2,147,1,0,2,3,reversable,Yes 208 | 207,58,1,asymptomatic,128,259,0,2,130,1,3,2,2,reversable,Yes 209 | 208,50,1,asymptomatic,144,200,0,2,126,1,0.9,2,0,reversable,Yes 210 | 209,55,1,nontypical,130,262,0,0,155,0,0,1,0,normal,No 211 | 210,62,0,asymptomatic,150,244,0,0,154,1,1.4,2,0,normal,Yes 212 | 211,37,0,nonanginal,120,215,0,0,170,0,0,1,0,normal,No 213 | 212,38,1,typical,120,231,0,0,182,1,3.8,2,0,reversable,Yes 214 | 213,41,1,nonanginal,130,214,0,2,168,0,2,2,0,normal,No 215 | 214,66,0,asymptomatic,178,228,1,0,165,1,1,2,2,reversable,Yes 216 | 215,52,1,asymptomatic,112,230,0,0,160,0,0,1,1,normal,Yes 217 | 216,56,1,typical,120,193,0,2,162,0,1.9,2,0,reversable,No 218 | 217,46,0,nontypical,105,204,0,0,172,0,0,1,0,normal,No 219 | 218,46,0,asymptomatic,138,243,0,2,152,1,0,2,0,normal,No 220 | 219,64,0,asymptomatic,130,303,0,0,122,0,2,2,2,normal,No 221 | 220,59,1,asymptomatic,138,271,0,2,182,0,0,1,0,normal,No 222 | 221,41,0,nonanginal,112,268,0,2,172,1,0,1,0,normal,No 223 | 222,54,0,nonanginal,108,267,0,2,167,0,0,1,0,normal,No 224 | 223,39,0,nonanginal,94,199,0,0,179,0,0,1,0,normal,No 225 | 224,53,1,asymptomatic,123,282,0,0,95,1,2,2,2,reversable,Yes 226 | 225,63,0,asymptomatic,108,269,0,0,169,1,1.8,2,2,normal,Yes 227 | 226,34,0,nontypical,118,210,0,0,192,0,0.7,1,0,normal,No 228 | 227,47,1,asymptomatic,112,204,0,0,143,0,0.1,1,0,normal,No 229 | 228,67,0,nonanginal,152,277,0,0,172,0,0,1,1,normal,No 230 | 229,54,1,asymptomatic,110,206,0,2,108,1,0,2,1,normal,Yes 231 | 230,66,1,asymptomatic,112,212,0,2,132,1,0.1,1,1,normal,Yes 232 | 231,52,0,nonanginal,136,196,0,2,169,0,0.1,2,0,normal,No 233 | 232,55,0,asymptomatic,180,327,0,1,117,1,3.4,2,0,normal,Yes 234 | 233,49,1,nonanginal,118,149,0,2,126,0,0.8,1,3,normal,Yes 235 | 234,74,0,nontypical,120,269,0,2,121,1,0.2,1,1,normal,No 236 | 235,54,0,nonanginal,160,201,0,0,163,0,0,1,1,normal,No 237 | 236,54,1,asymptomatic,122,286,0,2,116,1,3.2,2,2,normal,Yes 238 | 237,56,1,asymptomatic,130,283,1,2,103,1,1.6,3,0,reversable,Yes 239 | 238,46,1,asymptomatic,120,249,0,2,144,0,0.8,1,0,reversable,Yes 240 | 239,49,0,nontypical,134,271,0,0,162,0,0,2,0,normal,No 241 | 240,42,1,nontypical,120,295,0,0,162,0,0,1,0,normal,No 242 | 241,41,1,nontypical,110,235,0,0,153,0,0,1,0,normal,No 243 | 242,41,0,nontypical,126,306,0,0,163,0,0,1,0,normal,No 244 | 243,49,0,asymptomatic,130,269,0,0,163,0,0,1,0,normal,No 245 | 244,61,1,typical,134,234,0,0,145,0,2.6,2,2,normal,Yes 246 | 245,60,0,nonanginal,120,178,1,0,96,0,0,1,0,normal,No 247 | 246,67,1,asymptomatic,120,237,0,0,71,0,1,2,0,normal,Yes 248 | 247,58,1,asymptomatic,100,234,0,0,156,0,0.1,1,1,reversable,Yes 249 | 248,47,1,asymptomatic,110,275,0,2,118,1,1,2,1,normal,Yes 250 | 249,52,1,asymptomatic,125,212,0,0,168,0,1,1,2,reversable,Yes 251 | 250,62,1,nontypical,128,208,1,2,140,0,0,1,0,normal,No 252 | 251,57,1,asymptomatic,110,201,0,0,126,1,1.5,2,0,fixed,No 253 | 252,58,1,asymptomatic,146,218,0,0,105,0,2,2,1,reversable,Yes 254 | 253,64,1,asymptomatic,128,263,0,0,105,1,0.2,2,1,reversable,No 255 | 254,51,0,nonanginal,120,295,0,2,157,0,0.6,1,0,normal,No 256 | 255,43,1,asymptomatic,115,303,0,0,181,0,1.2,2,0,normal,No 257 | 256,42,0,nonanginal,120,209,0,0,173,0,0,2,0,normal,No 258 | 257,67,0,asymptomatic,106,223,0,0,142,0,0.3,1,2,normal,No 259 | 258,76,0,nonanginal,140,197,0,1,116,0,1.1,2,0,normal,No 260 | 259,70,1,nontypical,156,245,0,2,143,0,0,1,0,normal,No 261 | 260,57,1,nontypical,124,261,0,0,141,0,0.3,1,0,reversable,Yes 262 | 261,44,0,nonanginal,118,242,0,0,149,0,0.3,2,1,normal,No 263 | 262,58,0,nontypical,136,319,1,2,152,0,0,1,2,normal,Yes 264 | 263,60,0,typical,150,240,0,0,171,0,0.9,1,0,normal,No 265 | 264,44,1,nonanginal,120,226,0,0,169,0,0,1,0,normal,No 266 | 265,61,1,asymptomatic,138,166,0,2,125,1,3.6,2,1,normal,Yes 267 | 266,42,1,asymptomatic,136,315,0,0,125,1,1.8,2,0,fixed,Yes 268 | 267,52,1,asymptomatic,128,204,1,0,156,1,1,2,0,NA,Yes 269 | 268,59,1,nonanginal,126,218,1,0,134,0,2.2,2,1,fixed,Yes 270 | 269,40,1,asymptomatic,152,223,0,0,181,0,0,1,0,reversable,Yes 271 | 270,42,1,nonanginal,130,180,0,0,150,0,0,1,0,normal,No 272 | 271,61,1,asymptomatic,140,207,0,2,138,1,1.9,1,1,reversable,Yes 273 | 272,66,1,asymptomatic,160,228,0,2,138,0,2.3,1,0,fixed,No 274 | 273,46,1,asymptomatic,140,311,0,0,120,1,1.8,2,2,reversable,Yes 275 | 274,71,0,asymptomatic,112,149,0,0,125,0,1.6,2,0,normal,No 276 | 275,59,1,typical,134,204,0,0,162,0,0.8,1,2,normal,Yes 277 | 276,64,1,typical,170,227,0,2,155,0,0.6,2,0,reversable,No 278 | 277,66,0,nonanginal,146,278,0,2,152,0,0,2,1,normal,No 279 | 278,39,0,nonanginal,138,220,0,0,152,0,0,2,0,normal,No 280 | 279,57,1,nontypical,154,232,0,2,164,0,0,1,1,normal,Yes 281 | 280,58,0,asymptomatic,130,197,0,0,131,0,0.6,2,0,normal,No 282 | 281,57,1,asymptomatic,110,335,0,0,143,1,3,2,1,reversable,Yes 283 | 282,47,1,nonanginal,130,253,0,0,179,0,0,1,0,normal,No 284 | 283,55,0,asymptomatic,128,205,0,1,130,1,2,2,1,reversable,Yes 285 | 284,35,1,nontypical,122,192,0,0,174,0,0,1,0,normal,No 286 | 285,61,1,asymptomatic,148,203,0,0,161,0,0,1,1,reversable,Yes 287 | 286,58,1,asymptomatic,114,318,0,1,140,0,4.4,3,3,fixed,Yes 288 | 287,58,0,asymptomatic,170,225,1,2,146,1,2.8,2,2,fixed,Yes 289 | 288,58,1,nontypical,125,220,0,0,144,0,0.4,2,NA,reversable,No 290 | 289,56,1,nontypical,130,221,0,2,163,0,0,1,0,reversable,No 291 | 290,56,1,nontypical,120,240,0,0,169,0,0,3,0,normal,No 292 | 291,67,1,nonanginal,152,212,0,2,150,0,0.8,2,0,reversable,Yes 293 | 292,55,0,nontypical,132,342,0,0,166,0,1.2,1,0,normal,No 294 | 293,44,1,asymptomatic,120,169,0,0,144,1,2.8,3,0,fixed,Yes 295 | 294,63,1,asymptomatic,140,187,0,2,144,1,4,1,2,reversable,Yes 296 | 295,63,0,asymptomatic,124,197,0,0,136,1,0,2,0,normal,Yes 297 | 296,41,1,nontypical,120,157,0,0,182,0,0,1,0,normal,No 298 | 297,59,1,asymptomatic,164,176,1,2,90,0,1,2,2,fixed,Yes 299 | 298,57,0,asymptomatic,140,241,0,0,123,1,0.2,2,0,reversable,Yes 300 | 299,45,1,typical,110,264,0,0,132,0,1.2,2,0,reversable,Yes 301 | 300,68,1,asymptomatic,144,193,1,0,141,0,3.4,2,2,reversable,Yes 302 | 301,57,1,asymptomatic,130,131,0,0,115,1,1.2,2,1,reversable,Yes 303 | 302,57,0,nontypical,130,236,0,2,174,0,0,2,1,normal,Yes 304 | 303,38,1,nonanginal,138,175,0,0,173,0,0,1,NA,normal,No 305 | -------------------------------------------------------------------------------- /ex1data1.txt: -------------------------------------------------------------------------------- 1 | 6.1101,17.592 2 | 5.5277,9.1302 3 | 8.5186,13.662 4 | 7.0032,11.854 5 | 5.8598,6.8233 6 | 8.3829,11.886 7 | 7.4764,4.3483 8 | 8.5781,12 9 | 6.4862,6.5987 10 | 5.0546,3.8166 11 | 5.7107,3.2522 12 | 14.164,15.505 13 | 5.734,3.1551 14 | 8.4084,7.2258 15 | 5.6407,0.71618 16 | 5.3794,3.5129 17 | 6.3654,5.3048 18 | 5.1301,0.56077 19 | 6.4296,3.6518 20 | 7.0708,5.3893 21 | 6.1891,3.1386 22 | 20.27,21.767 23 | 5.4901,4.263 24 | 6.3261,5.1875 25 | 5.5649,3.0825 26 | 18.945,22.638 27 | 12.828,13.501 28 | 10.957,7.0467 29 | 13.176,14.692 30 | 22.203,24.147 31 | 5.2524,-1.22 32 | 6.5894,5.9966 33 | 9.2482,12.134 34 | 5.8918,1.8495 35 | 8.2111,6.5426 36 | 7.9334,4.5623 37 | 8.0959,4.1164 38 | 5.6063,3.3928 39 | 12.836,10.117 40 | 6.3534,5.4974 41 | 5.4069,0.55657 42 | 6.8825,3.9115 43 | 11.708,5.3854 44 | 5.7737,2.4406 45 | 7.8247,6.7318 46 | 7.0931,1.0463 47 | 5.0702,5.1337 48 | 5.8014,1.844 49 | 11.7,8.0043 50 | 5.5416,1.0179 51 | 7.5402,6.7504 52 | 5.3077,1.8396 53 | 7.4239,4.2885 54 | 7.6031,4.9981 55 | 6.3328,1.4233 56 | 6.3589,-1.4211 57 | 6.2742,2.4756 58 | 5.6397,4.6042 59 | 9.3102,3.9624 60 | 9.4536,5.4141 61 | 8.8254,5.1694 62 | 5.1793,-0.74279 63 | 21.279,17.929 64 | 14.908,12.054 65 | 18.959,17.054 66 | 7.2182,4.8852 67 | 8.2951,5.7442 68 | 10.236,7.7754 69 | 5.4994,1.0173 70 | 20.341,20.992 71 | 10.136,6.6799 72 | 7.3345,4.0259 73 | 6.0062,1.2784 74 | 7.2259,3.3411 75 | 5.0269,-2.6807 76 | 6.5479,0.29678 77 | 7.5386,3.8845 78 | 5.0365,5.7014 79 | 10.274,6.7526 80 | 5.1077,2.0576 81 | 5.7292,0.47953 82 | 5.1884,0.20421 83 | 6.3557,0.67861 84 | 9.7687,7.5435 85 | 6.5159,5.3436 86 | 8.5172,4.2415 87 | 9.1802,6.7981 88 | 6.002,0.92695 89 | 5.5204,0.152 90 | 5.0594,2.8214 91 | 5.7077,1.8451 92 | 7.6366,4.2959 93 | 5.8707,7.2029 94 | 5.3054,1.9869 95 | 8.2934,0.14454 96 | 13.394,9.0551 97 | 5.4369,0.61705 98 | -------------------------------------------------------------------------------- /ex1data2.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 | -------------------------------------------------------------------------------- /ex2data1.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 | -------------------------------------------------------------------------------- /ex3d1.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashida048/Machine-Learning-With-Python/813255b784e596d6e0a88c6c65538fe0f560f600/ex3d1.xlsx -------------------------------------------------------------------------------- /ex8data1.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashida048/Machine-Learning-With-Python/813255b784e596d6e0a88c6c65538fe0f560f600/ex8data1.xlsx -------------------------------------------------------------------------------- /kmean.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashida048/Machine-Learning-With-Python/813255b784e596d6e0a88c6c65538fe0f560f600/kmean.xlsx -------------------------------------------------------------------------------- /linearRegressionWithMultipleFeatures.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "data": { 10 | "text/html": [ 11 | "
\n", 12 | "\n", 25 | "\n", 26 | " \n", 27 | " \n", 28 | " \n", 29 | " \n", 30 | " \n", 31 | " \n", 32 | " \n", 33 | " \n", 34 | " \n", 35 | " \n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | "
012
021043399900
116003329900
224003369000
314162232000
430004539900
\n", 67 | "
" 68 | ], 69 | "text/plain": [ 70 | " 0 1 2\n", 71 | "0 2104 3 399900\n", 72 | "1 1600 3 329900\n", 73 | "2 2400 3 369000\n", 74 | "3 1416 2 232000\n", 75 | "4 3000 4 539900" 76 | ] 77 | }, 78 | "execution_count": 1, 79 | "metadata": {}, 80 | "output_type": "execute_result" 81 | } 82 | ], 83 | "source": [ 84 | "import pandas as pd\n", 85 | "df = pd.read_csv('ex1data2.txt', header = None)\n", 86 | "df.head()" 87 | ] 88 | }, 89 | { 90 | "cell_type": "code", 91 | "execution_count": 2, 92 | "metadata": {}, 93 | "outputs": [], 94 | "source": [ 95 | "m = len(df)" 96 | ] 97 | }, 98 | { 99 | "cell_type": "code", 100 | "execution_count": 3, 101 | "metadata": {}, 102 | "outputs": [ 103 | { 104 | "data": { 105 | "text/plain": [ 106 | "47" 107 | ] 108 | }, 109 | "execution_count": 3, 110 | "metadata": {}, 111 | "output_type": "execute_result" 112 | } 113 | ], 114 | "source": [ 115 | "m" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 4, 121 | "metadata": {}, 122 | "outputs": [ 123 | { 124 | "data": { 125 | "text/html": [ 126 | "
\n", 127 | "\n", 140 | "\n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | "
00012
0121043399900
1116003329900
2124003369000
3114162232000
4130004539900
\n", 188 | "
" 189 | ], 190 | "text/plain": [ 191 | " 00 0 1 2\n", 192 | "0 1 2104 3 399900\n", 193 | "1 1 1600 3 329900\n", 194 | "2 1 2400 3 369000\n", 195 | "3 1 1416 2 232000\n", 196 | "4 1 3000 4 539900" 197 | ] 198 | }, 199 | "execution_count": 4, 200 | "metadata": {}, 201 | "output_type": "execute_result" 202 | } 203 | ], 204 | "source": [ 205 | "df = pd.concat([pd.Series(1, index=df.index, name='00'), df], axis=1)\n", 206 | "df.head()" 207 | ] 208 | }, 209 | { 210 | "cell_type": "code", 211 | "execution_count": 6, 212 | "metadata": {}, 213 | "outputs": [ 214 | { 215 | "data": { 216 | "text/plain": [ 217 | "0 402008\n", 218 | "1 331504\n", 219 | "2 371404\n", 220 | "3 233419\n", 221 | "4 542905\n", 222 | "dtype: int64" 223 | ] 224 | }, 225 | "execution_count": 6, 226 | "metadata": {}, 227 | "output_type": "execute_result" 228 | } 229 | ], 230 | "source": [ 231 | "import numpy as np\n", 232 | "np.sum(df, axis=1).head()" 233 | ] 234 | }, 235 | { 236 | "cell_type": "code", 237 | "execution_count": 7, 238 | "metadata": {}, 239 | "outputs": [], 240 | "source": [ 241 | "y = df.iloc[:, 3]" 242 | ] 243 | }, 244 | { 245 | "cell_type": "code", 246 | "execution_count": 8, 247 | "metadata": {}, 248 | "outputs": [ 249 | { 250 | "data": { 251 | "text/html": [ 252 | "
\n", 253 | "\n", 266 | "\n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | "
0001
0121043
1116003
2124003
3114162
4130004
\n", 308 | "
" 309 | ], 310 | "text/plain": [ 311 | " 00 0 1\n", 312 | "0 1 2104 3\n", 313 | "1 1 1600 3\n", 314 | "2 1 2400 3\n", 315 | "3 1 1416 2\n", 316 | "4 1 3000 4" 317 | ] 318 | }, 319 | "execution_count": 8, 320 | "metadata": {}, 321 | "output_type": "execute_result" 322 | } 323 | ], 324 | "source": [ 325 | "X = df.drop(columns=2)\n", 326 | "X.head()" 327 | ] 328 | }, 329 | { 330 | "cell_type": "code", 331 | "execution_count": 9, 332 | "metadata": {}, 333 | "outputs": [], 334 | "source": [ 335 | "for i in range(1, len(X.columns)):\n", 336 | " X[i-1] = X[i-1]/np.max(X[i-1])" 337 | ] 338 | }, 339 | { 340 | "cell_type": "code", 341 | "execution_count": 10, 342 | "metadata": {}, 343 | "outputs": [ 344 | { 345 | "data": { 346 | "text/html": [ 347 | "
\n", 348 | "\n", 361 | "\n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | "
0001
010.4698530.6
110.3573020.6
210.5359540.6
310.3162130.4
410.6699420.8
\n", 403 | "
" 404 | ], 405 | "text/plain": [ 406 | " 00 0 1\n", 407 | "0 1 0.469853 0.6\n", 408 | "1 1 0.357302 0.6\n", 409 | "2 1 0.535954 0.6\n", 410 | "3 1 0.316213 0.4\n", 411 | "4 1 0.669942 0.8" 412 | ] 413 | }, 414 | "execution_count": 10, 415 | "metadata": {}, 416 | "output_type": "execute_result" 417 | } 418 | ], 419 | "source": [ 420 | "X.head()" 421 | ] 422 | }, 423 | { 424 | "cell_type": "code", 425 | "execution_count": 11, 426 | "metadata": {}, 427 | "outputs": [ 428 | { 429 | "data": { 430 | "text/plain": [ 431 | "array([0, 0, 0])" 432 | ] 433 | }, 434 | "execution_count": 11, 435 | "metadata": {}, 436 | "output_type": "execute_result" 437 | } 438 | ], 439 | "source": [ 440 | "import numpy as np\n", 441 | "np.array([0]*len(X.columns))" 442 | ] 443 | }, 444 | { 445 | "cell_type": "code", 446 | "execution_count": 12, 447 | "metadata": {}, 448 | "outputs": [], 449 | "source": [ 450 | "theta = np.array([0]*len(X.columns))" 451 | ] 452 | }, 453 | { 454 | "cell_type": "code", 455 | "execution_count": 13, 456 | "metadata": {}, 457 | "outputs": [], 458 | "source": [ 459 | "y1 = theta*X\n", 460 | "y1=np.sum(y1, axis=1)" 461 | ] 462 | }, 463 | { 464 | "cell_type": "code", 465 | "execution_count": 14, 466 | "metadata": {}, 467 | "outputs": [ 468 | { 469 | "data": { 470 | "text/plain": [ 471 | "170206.32978723405" 472 | ] 473 | }, 474 | "execution_count": 14, 475 | "metadata": {}, 476 | "output_type": "execute_result" 477 | } 478 | ], 479 | "source": [ 480 | "cost = sum(np.sqrt((y1-y)**2))/(2*len(df))\n", 481 | "cost" 482 | ] 483 | }, 484 | { 485 | "cell_type": "code", 486 | "execution_count": 15, 487 | "metadata": {}, 488 | "outputs": [ 489 | { 490 | "data": { 491 | "text/plain": [ 492 | "3404.1265957446813" 493 | ] 494 | }, 495 | "execution_count": 15, 496 | "metadata": {}, 497 | "output_type": "execute_result" 498 | } 499 | ], 500 | "source": [ 501 | "alpha=0.01\n", 502 | "0-alpha*(sum((y1-y)*X.iloc[:,0])/47) " 503 | ] 504 | }, 505 | { 506 | "cell_type": "code", 507 | "execution_count": 16, 508 | "metadata": {}, 509 | "outputs": [], 510 | "source": [ 511 | "def hypothesis(theta, X):\n", 512 | " return theta*X" 513 | ] 514 | }, 515 | { 516 | "cell_type": "code", 517 | "execution_count": 17, 518 | "metadata": {}, 519 | "outputs": [], 520 | "source": [ 521 | "def computeCost(X, y, theta):\n", 522 | " y1 = hypothesis(theta, X)\n", 523 | " y1=np.sum(y1, axis=1)\n", 524 | " return sum(np.sqrt((y1-y)**2))/(2*47)" 525 | ] 526 | }, 527 | { 528 | "cell_type": "code", 529 | "execution_count": 18, 530 | "metadata": {}, 531 | "outputs": [], 532 | "source": [ 533 | "alpha=0.05\n", 534 | "i=1500\n", 535 | "theta = np.array([0.0]*len(X.columns))\n", 536 | "def gradientDescent(X, y, theta, alpha, i):\n", 537 | " #theta = np.array([0]*len(X.columns))\n", 538 | " J = []\n", 539 | " k = 0\n", 540 | " while k < i: \n", 541 | " y1 = hypothesis(theta, X)\n", 542 | " y1 = np.sum(y1, axis=1)\n", 543 | " for c in range(0, len(X.columns)):\n", 544 | " theta[c] = theta[c] - alpha*(sum((y1-y)*X.iloc[:,c])/len(X))\n", 545 | " j = computeCost(X, y, theta)\n", 546 | " J.append(j)\n", 547 | " k += 1\n", 548 | " return J, j, theta" 549 | ] 550 | }, 551 | { 552 | "cell_type": "code", 553 | "execution_count": 67, 554 | "metadata": {}, 555 | "outputs": [], 556 | "source": [ 557 | "J, j, theta = gradientDescent(X, y, theta, 0.05, 10000)" 558 | ] 559 | }, 560 | { 561 | "cell_type": "code", 562 | "execution_count": 68, 563 | "metadata": {}, 564 | "outputs": [], 565 | "source": [ 566 | "y_hat = hypothesis(theta, X)\n", 567 | "y_hat = np.sum(y_hat, axis=1)" 568 | ] 569 | }, 570 | { 571 | "cell_type": "code", 572 | "execution_count": 61, 573 | "metadata": {}, 574 | "outputs": [ 575 | { 576 | "data": { 577 | "text/plain": [ 578 | "range(0, 47)" 579 | ] 580 | }, 581 | "execution_count": 61, 582 | "metadata": {}, 583 | "output_type": "execute_result" 584 | } 585 | ], 586 | "source": [ 587 | "range(len(y))" 588 | ] 589 | }, 590 | { 591 | "cell_type": "code", 592 | "execution_count": 69, 593 | "metadata": {}, 594 | "outputs": [ 595 | { 596 | "data": { 597 | "text/plain": [ 598 | "0 356283.051438\n", 599 | "1 286120.953677\n", 600 | "2 397489.362821\n", 601 | "3 269244.015544\n", 602 | "4 472277.873709\n", 603 | "5 330979.204608\n", 604 | "6 276933.059923\n", 605 | "7 262037.535200\n", 606 | "8 255494.641163\n", 607 | "9 271364.639466\n", 608 | "10 324714.731594\n", 609 | "11 341805.158249\n", 610 | "12 326492.001992\n", 611 | "13 669293.213632\n", 612 | "14 239903.063883\n", 613 | "15 374830.515708\n", 614 | "16 255879.806447\n", 615 | "17 235448.327517\n", 616 | "18 417846.563740\n", 617 | "19 476593.399563\n", 618 | "20 309369.109086\n", 619 | "21 334951.376939\n", 620 | "22 286677.795723\n", 621 | "23 327777.362845\n", 622 | "24 604913.024851\n", 623 | "25 216515.697962\n", 624 | "26 266353.061054\n", 625 | "27 415029.887261\n", 626 | "28 369647.260535\n", 627 | "29 430482.254030\n", 628 | "30 328130.061879\n", 629 | "31 220070.238759\n", 630 | "32 338635.782737\n", 631 | "33 500087.509745\n", 632 | "34 306756.575619\n", 633 | "35 263429.640314\n", 634 | "36 235865.959051\n", 635 | "37 351443.149788\n", 636 | "38 641418.645096\n", 637 | "39 355619.465131\n", 638 | "40 303768.222379\n", 639 | "41 374937.259969\n", 640 | "42 411999.722260\n", 641 | "43 230436.749105\n", 642 | "44 190729.287098\n", 643 | "45 312464.206588\n", 644 | "46 230854.380640\n", 645 | "dtype: float64" 646 | ] 647 | }, 648 | "execution_count": 69, 649 | "metadata": {}, 650 | "output_type": "execute_result" 651 | } 652 | ], 653 | "source": [ 654 | "y_hat" 655 | ] 656 | }, 657 | { 658 | "cell_type": "code", 659 | "execution_count": 23, 660 | "metadata": {}, 661 | "outputs": [ 662 | { 663 | "data": { 664 | "text/plain": [ 665 | "47" 666 | ] 667 | }, 668 | "execution_count": 23, 669 | "metadata": {}, 670 | "output_type": "execute_result" 671 | } 672 | ], 673 | "source": [ 674 | "len(y)" 675 | ] 676 | }, 677 | { 678 | "cell_type": "code", 679 | "execution_count": 33, 680 | "metadata": {}, 681 | "outputs": [ 682 | { 683 | "data": { 684 | "text/plain": [ 685 | "47" 686 | ] 687 | }, 688 | "execution_count": 33, 689 | "metadata": {}, 690 | "output_type": "execute_result" 691 | } 692 | ], 693 | "source": [ 694 | "len(y_hat)" 695 | ] 696 | }, 697 | { 698 | "cell_type": "code", 699 | "execution_count": 70, 700 | "metadata": {}, 701 | "outputs": [ 702 | { 703 | "data": { 704 | "image/png": "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\n", 705 | "text/plain": [ 706 | "
" 707 | ] 708 | }, 709 | "metadata": { 710 | "needs_background": "light" 711 | }, 712 | "output_type": "display_data" 713 | } 714 | ], 715 | "source": [ 716 | "%matplotlib inline\n", 717 | "import matplotlib.pyplot as plt\n", 718 | "plt.figure()\n", 719 | "plt.scatter(x=list(range(0, 47)),y= y, color='blue') \n", 720 | "plt.scatter(x=list(range(0, 47)), y=y_hat, color='red')\n", 721 | "plt.show()" 722 | ] 723 | }, 724 | { 725 | "cell_type": "code", 726 | "execution_count": 172, 727 | "metadata": {}, 728 | "outputs": [], 729 | "source": [ 730 | "X2 = df.drop(columns=2)" 731 | ] 732 | }, 733 | { 734 | "cell_type": "code", 735 | "execution_count": 173, 736 | "metadata": {}, 737 | "outputs": [], 738 | "source": [ 739 | "X1 = np.sum(X, axis=1)" 740 | ] 741 | }, 742 | { 743 | "cell_type": "code", 744 | "execution_count": 174, 745 | "metadata": {}, 746 | "outputs": [], 747 | "source": [ 748 | "X2_sum = np.sum(X2, axis=1)" 749 | ] 750 | }, 751 | { 752 | "cell_type": "code", 753 | "execution_count": 72, 754 | "metadata": {}, 755 | "outputs": [ 756 | { 757 | "data": { 758 | "text/plain": [ 759 | "25751.391715683636" 760 | ] 761 | }, 762 | "execution_count": 72, 763 | "metadata": {}, 764 | "output_type": "execute_result" 765 | } 766 | ], 767 | "source": [ 768 | "cost = sum(np.sqrt((y_hat-y)**2))/(2*len(df))\n", 769 | "cost" 770 | ] 771 | }, 772 | { 773 | "cell_type": "code", 774 | "execution_count": 73, 775 | "metadata": {}, 776 | "outputs": [ 777 | { 778 | "data": { 779 | "image/png": "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\n", 780 | "text/plain": [ 781 | "
" 782 | ] 783 | }, 784 | "metadata": { 785 | "needs_background": "light" 786 | }, 787 | "output_type": "display_data" 788 | } 789 | ], 790 | "source": [ 791 | "plt.figure()\n", 792 | "plt.scatter(x=list(range(0, 10000)), y=J)\n", 793 | "plt.show()" 794 | ] 795 | }, 796 | { 797 | "cell_type": "code", 798 | "execution_count": null, 799 | "metadata": {}, 800 | "outputs": [], 801 | "source": [] 802 | } 803 | ], 804 | "metadata": { 805 | "kernelspec": { 806 | "display_name": "Python 3", 807 | "language": "python", 808 | "name": "python3" 809 | }, 810 | "language_info": { 811 | "codemirror_mode": { 812 | "name": "ipython", 813 | "version": 3 814 | }, 815 | "file_extension": ".py", 816 | "mimetype": "text/x-python", 817 | "name": "python", 818 | "nbconvert_exporter": "python", 819 | "pygments_lexer": "ipython3", 820 | "version": "3.7.1" 821 | } 822 | }, 823 | "nbformat": 4, 824 | "nbformat_minor": 2 825 | } 826 | -------------------------------------------------------------------------------- /linearRegressionWithOneVariable.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import pandas as pd" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 4, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "text/html": [ 21 | "
\n", 22 | "\n", 35 | "\n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | "
01
06.110117.5920
15.52779.1302
28.518613.6620
37.003211.8540
45.85986.8233
\n", 71 | "
" 72 | ], 73 | "text/plain": [ 74 | " 0 1\n", 75 | "0 6.1101 17.5920\n", 76 | "1 5.5277 9.1302\n", 77 | "2 8.5186 13.6620\n", 78 | "3 7.0032 11.8540\n", 79 | "4 5.8598 6.8233" 80 | ] 81 | }, 82 | "execution_count": 4, 83 | "metadata": {}, 84 | "output_type": "execute_result" 85 | } 86 | ], 87 | "source": [ 88 | "df = pd.read_csv('ex1data1.txt', header = None)\n", 89 | "df.head()" 90 | ] 91 | }, 92 | { 93 | "cell_type": "code", 94 | "execution_count": 5, 95 | "metadata": {}, 96 | "outputs": [], 97 | "source": [ 98 | "m = len(df)" 99 | ] 100 | }, 101 | { 102 | "cell_type": "code", 103 | "execution_count": 6, 104 | "metadata": {}, 105 | "outputs": [ 106 | { 107 | "data": { 108 | "text/plain": [ 109 | "97" 110 | ] 111 | }, 112 | "execution_count": 6, 113 | "metadata": {}, 114 | "output_type": "execute_result" 115 | } 116 | ], 117 | "source": [ 118 | "m" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 13, 124 | "metadata": {}, 125 | "outputs": [], 126 | "source": [ 127 | "def hypothesis(theta, X):\n", 128 | " return theta[0] + theta[1]*X" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 111, 134 | "metadata": {}, 135 | "outputs": [], 136 | "source": [ 137 | "def cost_calc(theta, X, y):\n", 138 | " return (1/2*m) * np.sum((hypothesis(theta, X) - y)**2)" 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": 112, 144 | "metadata": {}, 145 | "outputs": [], 146 | "source": [ 147 | "m = len(df)\n", 148 | "def gradient_descent(theta, X, y, epoch, alpha):\n", 149 | " cost = []\n", 150 | " i = 0\n", 151 | " while i < epoch:\n", 152 | " hx = hypothesis(theta, X)\n", 153 | " theta[0] -= alpha*(sum(hx-y)/m)\n", 154 | " theta[1] -= (alpha * np.sum((hx - y) * X))/m\n", 155 | " cost.append(cost_calc(theta, X, y))\n", 156 | " i += 1\n", 157 | " return theta, cost" 158 | ] 159 | }, 160 | { 161 | "cell_type": "code", 162 | "execution_count": 113, 163 | "metadata": {}, 164 | "outputs": [], 165 | "source": [ 166 | "theta = [0,0]\n", 167 | "def predict(theta, X, y, epoch, alpha):\n", 168 | " theta, cost = gradient_descent(theta, X, y, epoch, alpha)\n", 169 | " return hypothesis(theta, X), cost, theta" 170 | ] 171 | }, 172 | { 173 | "cell_type": "code", 174 | "execution_count": 129, 175 | "metadata": {}, 176 | "outputs": [], 177 | "source": [ 178 | "y_predict, cost, theta = predict(theta, df[0], df[1], 2000, 0.01)" 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "execution_count": 130, 184 | "metadata": {}, 185 | "outputs": [ 186 | { 187 | "data": { 188 | "text/plain": [ 189 | "[-3.8957755979447293, 1.1930331137194408]" 190 | ] 191 | }, 192 | "execution_count": 130, 193 | "metadata": {}, 194 | "output_type": "execute_result" 195 | } 196 | ], 197 | "source": [ 198 | "theta" 199 | ] 200 | }, 201 | { 202 | "cell_type": "code", 203 | "execution_count": 140, 204 | "metadata": {}, 205 | "outputs": [ 206 | { 207 | "data": { 208 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEHCAYAAACp9y31AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXxU9bn48c+TEEhYA0KrgJTUWrBIBAGXC96KVLGKSlGg1I26UJdWrcqveL1V1Fq1WNdb7cWKgBcXVARErQsuLbgSwQCKKBI0ARUXNhNkkjy/P86ZMJnMTM5M5sySed6vV16ZOXPmnC+T4ZnvfM/zfb6iqhhjjMkdeelugDHGmNSywG+MMTnGAr8xxuQYC/zGGJNjLPAbY0yOscBvjDE5po1fBxaR/YG5wL5APTBTVe8UkenA+cBWd9f/UtVnYh2re/fu2rdvX7+aaowxrVJZWdmXqtojfLtvgR+oBa5Q1XdEpBNQJiIvuI/drqq3ej1Q3759WbFihS+NNMaY1kpENkXa7lvgV9UtwBb39k4ReR/o5df5jDHGeJOSMX4R6QsMBt50N/1WRMpFZJaIdE1FG4wxxjh8D/wi0hF4ArhMVXcA9wIHAINwvhH8NcrzpojIChFZsXXr1ki7GGOMSYCfY/yISAFO0J+nqgsAVPXzkMfvA5ZEeq6qzgRmAgwdOrRJQaFAIEBlZSW7d+/2o+kmTGFhIb1796agoCDdTTHGtJCfWT0C3A+8r6q3hWzfzx3/B/gFsCaR41dWVtKpUyf69u2LcyrjF1Xlq6++orKykpKSknQ3xxjTQn72+IcDZwKrRWSVu+2/gEkiMghQoAL4TSIH3717twX9FBER9tlnH2zIzRh/LVxZxYznPmDzthp6FhcxdXQ/xg5Ofk6Mn1k9y4BIUTlmzn48LOinjr3Wxvhr4coqrlqwmppAHQBV22q4asFqgKQHf5u52wKVlZWccsopHHjggRxwwAFceuml7NmzJ+K+mzdv5rTTTmv2mCeccALbtm1LqD3Tp0/n1ls9T48wxmSQGc990BD0g2oCdcx47oOkn8sCf4JUlXHjxjF27Fg+/PBD1q9fz65du7j66qub7FtbW0vPnj15/PHHmz3uM888Q3FxsR9NNsZksM3bauLa3hIW+BP00ksvUVhYyK9//WsA8vPzuf3225k1axbV1dXMnj2b8ePHc9JJJ3HcccdRUVHBwQcfDEB1dTUTJkygtLSUiRMncvjhhzfMTO7bty9ffvklFRUVHHTQQZx//vkMGDCA4447jpoa5w1w3333MWzYMA455BBOPfVUqquro7Zz586dlJSUEAgEANixYwd9+/ZtuG+MyQw9i4vi2t4SORP4F66sYvjNL1Ey7WmG3/wSC1dWteh4a9euZciQIY22de7cmT59+vDRRx8B8PrrrzNnzhxeeumlRvvdc889dO3alfLycv74xz9SVlYW8RwffvghF198MWvXrqW4uJgnnngCgHHjxvH222/z7rvvctBBB3H//fdHbWenTp04+uijefrppwF45JFHOPXUUy0t05gMM3V0P4oK8httKyrIZ+rofkk/V04E/uBFk6ptNSh7L5q0JPirasQLnqHbjz32WLp169Zkn2XLlvHLX/4SgIMPPpjS0tKI5ygpKWHQoEEADBkyhIqKCgDWrFnDUUcdxcCBA5k3bx5r166N2dbzzjuPBx54AIAHHnig4VuKMSZzjB3ci5vGDaRXcREC9Cou4qZxA7MrqyeTxLpokuiLOmDAgIYeeNCOHTv49NNPOeCAAygrK6NDhw4Rn+t1gft27do13M7Pz28Y6pk8eTILFy7kkEMOYfbs2bzyyisxjzN8+HAqKip49dVXqauraxhyMsZklrGDe/kS6MPlRI/fj4smo0aNorq6mrlz5wJQV1fHFVdcweTJk2nfvn3M544YMYL58+cD8N5777F69eq4zr1z5072228/AoEA8+bN8/Scs846i0mTJllv3xiTG4Hfj4smIsKTTz7JY489xoEHHsiPf/xjCgsL+fOf/9zscy+66CK2bt1KaWkpt9xyC6WlpXTp0sXzuW+44QYOP/xwjj32WPr37+/pOaeffjrffPMNkyZN8nweY0zrJF6HHdJp6NChGl6P//333+eggw7y9PzwiRHgXDTxa/ysOXV1dQQCAQoLC9mwYQOjRo1i/fr1tG3b1rdzPv744yxatIgHH3ww4WPE85obY9JPRMpUdWj49pwY4w8G91RMhfaiurqakSNHEggEUFXuvfdeX4P+7373O5599lmeeSZpk6aNSblUlTPIBTkR+CF1F0286NSpU0pXFLv77rtTdi5j/JDKcgZpVT4fll4P2yuhS28YdQ2UTkj6aXJijN8Yk91SWc4g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\n", 209 | "text/plain": [ 210 | "
" 211 | ] 212 | }, 213 | "metadata": { 214 | "needs_background": "light" 215 | }, 216 | "output_type": "display_data" 217 | } 218 | ], 219 | "source": [ 220 | "%matplotlib inline\n", 221 | "import matplotlib.pyplot as plt\n", 222 | "plt.figure()\n", 223 | "plt.scatter(df[0], df[1], label = 'Original y')\n", 224 | "plt.scatter(df[0], y_predict, label = 'predicted y')\n", 225 | "plt.legend(loc = \"upper left\")\n", 226 | "plt.xlabel(\"input feature\")\n", 227 | "plt.ylabel(\"Original and Predicted Output\")\n", 228 | "plt.show()" 229 | ] 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 133, 234 | "metadata": {}, 235 | "outputs": [ 236 | { 237 | "data": { 238 | "image/png": "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\n", 239 | "text/plain": [ 240 | "
" 241 | ] 242 | }, 243 | "metadata": { 244 | "needs_background": "light" 245 | }, 246 | "output_type": "display_data" 247 | } 248 | ], 249 | "source": [ 250 | "%matplotlib inline\n", 251 | "import matplotlib.pyplot as plt\n", 252 | "plt.figure()\n", 253 | "plt.scatter(df[0], df[1])\n", 254 | "plt.show()" 255 | ] 256 | }, 257 | { 258 | "cell_type": "code", 259 | "execution_count": 132, 260 | "metadata": {}, 261 | "outputs": [ 262 | { 263 | "data": { 264 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEDCAYAAAA849PJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAWPElEQVR4nO3df5BdZ33f8fenEpZTgm2Q5I5HspGIFSbiRxyzKO7wowRjR2YAQfAEMR5sWrcqIW6aMqQRpQ6J+0fH7QRSBpfUxA7GE2onJi5qUxBuDO1AQNEKyz+EMV4bUws5WI49xhhiI/PtH/dZer3sau9KuytLz/s1c+ee85znnPs95949n3vOPXdvqgpJUn/+3pEuQJJ0ZBgAktQpA0CSOmUASFKnDABJ6pQBIEmdOiYDIMl7k1SSFdNMOyPJl5PsSXJbkrcNTbskycTUeZNc0PreluSvkvx8az8+yV8nubUt7/eG5jk7yVeT7E7yxSSnj1j7y5M8leT8w9sKknRwR20AJHlNko9P034qcA7wf2eY9fvAhVX1ImAj8AdJTmrTvgS8DvjWlHm+Cfyjqnop8O+AK1v7E8Brq+rngTOAjUnOatM+ClxQVWcAnwT+7QjrtAS4HNg+W19JOlxHbQAcxIeAfw1M+w23qvpGVd3dhvcBDwIr2/gtVXXfNPP8VVU90ka/Aqxu7VVV32vtz2q3ycct4IQ2fCKwDyDJyiSfSrKz3V4x9FD/AvhUq0mSFtTSI13AfEryJuDbVXVrklH6bwCOA+6Zw8NcDHxmaBlLgF3A6cAVVbWjTfqnwP9M8gPgu8DkkcF/Aj5UVV9MchqDd/s/l2QV8BbgtcDL51CPJB2Soy4AkuwAlgE/DTwvye426QPAvwHOHXE5pwDXAhdV1Y9GnOeXGATAKyfbquop4Ix2GunGJC+uqjuAfwW8vqp2JPkt4IMMQuF1wPqhgDohyXOAPwB+u6qeGiW8JOlw5Wj9X0BJXgO8s6re2cZfAvwlg3P8MDhNsw/YUFV/M2XeE4AvAP++qv5smmXfB4xV1UNDbS8FbgTOq6pvzFDTB4DHgWuAr1TVz7T204DPVtX6JA8Bp1bVD6bM+01gcs+/oq3Hlqr6b6NsD0maq2PmM4Cqur2qTq6qNVW1BtgLnDnNzv84BjvyT0y3859O24H/OfCO4Z1/O59/Uhv+KQbv7r8OPAKcmORnW9dzgDvb8OeAS4aWcUarf+1Q7TcA73bnL2khHTMBcDBJxpL8URv9VeDVwDvbJZq7J3fCSX4jyV4GRw+3Dc3zO8By4D+3/uOt/RTg80luA3YCN1XV/6iqA8A/Az6V5FbgHcBvtXl+Axhrl5R+DXjXgq68JM3gqD0FJEk6PF0cAUiSftJRdRXQihUras2aNUe6DEk6aqxYsYLt27dvr6qNU6cdVQGwZs0axsfHZ+8oSfqx6f4tDngKSJK6ZQBIUqcMAEnqlAEgSZ0yACSpUwaAJHXKAJCkThkAktQpA0CSOmUASFKnDABJ6pQBIEmdMgAkqVMGgCR1ygCQpE4ZAJLUKQNAkjplAEhSpwwASeqUASBJnTIAJKlTBoAkdcoAkKROjRQASTYmuSvJRJKt00xfluT6Nn1HkjWtfUOS3e12a5K3DM1zX5Lb27Tx+VohSdJols7WIckS4ArgHGAvsDPJtqr62lC3i4FHqur0JJuBy4G3AXcAY1V1IMkpwK1J/ntVHWjz/VJVPTSfKyRJGs0oRwAbgImqureqngSuAzZN6bMJuKYN3wCcnSRV9f2hnf3xQM1H0ZKkwzdKAKwC7h8a39vapu3TdviPAssBkvxikj3A7cC7hgKhgM8l2ZVky0wPnmRLkvEk4/v37x9lnSRJIxglADJN29R38jP2qaodVfUi4OXA+5Ic36a/oqrOBM4Dfj3Jq6d78Kq6sqrGqmps5cqVI5QrSRrFKAGwFzh1aHw1sG+mPkmWAicCDw93qKo7gceBF7fxfe3+QeBGBqeaJEmLZJQA2AmsS7I2yXHAZmDblD7bgIva8PnAzVVVbZ6lAEmeD7wQuC/Js5M8p7U/GziXwQfGkqRFMutVQO0KnkuA7cAS4Oqq2pPkMmC8qrYBVwHXJplg8M5/c5v9lcDWJD8EfgS8u6oeSvIC4MYkkzV8sqo+O98rJ0maWaqOngtzxsbGanzcrwxI0lwk2VVVY1Pb/SawJHXKAJCkThkAktQpA0CSOmUASFKnDABJ6pQBIEmdMgAkqVMGgCR1ygCQpE4ZAJLUKQNAkjplAEhSpwwASeqUASBJnTIAJKlTBoAkdcoAkKROGQCS1CkDQJI6ZQBIUqcMAEnqlAEgSZ0yACSpUwaAJHXKAJCkThkAktSpkQIgycYkdyWZSLJ1munLklzfpu9Isqa1b0iyu91uTfKWUZcpSVpYswZAkiXAFcB5wHrg7UnWT+l2MfBIVZ0OfAi4vLXfAYxV1RnARuC/JFk64jIlSQtolCOADcBEVd1bVU8C1wGbpvTZBFzThm8Azk6Sqvp+VR1o7ccDNYdlSpIW0CgBsAq4f2h8b2ubtk/b4T8KLAdI8otJ9gC3A+9q00dZJm3+LUnGk4zv379/hHIlSaMYJQAyTVuN2qeqdlTVi4CXA+9LcvyIy6TNf2VVjVXV2MqVK0coV5I0ilECYC9w6tD4amDfTH2SLAVOBB4e7lBVdwKPAy8ecZmSpAU0SgDsBNYlWZvkOGAzsG1Kn23ARW34fODmqqo2z1KAJM8HXgjcN+IyJUkLaOlsHarqQJJLgO3AEuDqqtqT5DJgvKq2AVcB1yaZYPDOf3Ob/ZXA1iQ/BH4EvLuqHgKYbpnzvG6SpINI1bSn3p+RxsbGanx8/EiXIUlHlSS7qmpsarvfBJakThkAktQpA0CSOmUASFKnDABJ6pQBIEmdMgAkqVMGgCR1ygCQpE4ZAJLUKQNAkjplAEhSpwwASeqUASBJnTIAJKlTBoAkdcoAkKROGQCS1CkDQJI6ZQBIUqcMAEnqlAEgSZ0yACSpUwaAJHXKAJCkThkAktQpA0CSOjVSACTZmOSuJBNJtk4zfVmS69v0HUnWtPZzkuxKcnu7f+3QPF9oy9zdbifP10pJkma3dLYOSZYAVwDnAHuBnUm2VdXXhrpdDDxSVacn2QxcDrwNeAh4Y1XtS/JiYDuwami+C6pqfJ7WRZI0B6McAWwAJqrq3qp6ErgO2DSlzybgmjZ8A3B2klTVLVW1r7XvAY5Psmw+CpckHZ5RAmAVcP/Q+F6e/i7+aX2q6gDwKLB8Sp+3ArdU1RNDbX/cTv9cmiTTPXiSLUnGk4zv379/hHIlSaMYJQCm2zHXXPokeRGD00L/fGj6BVX1EuBV7faO6R68qq6sqrGqGlu5cuUI5UqSRjFKAOwFTh0aXw3sm6lPkqXAicDDbXw1cCNwYVXdMzlDVX273T8GfJLBqSZJ0iIZJQB2AuuSrE1yHLAZ2DalzzbgojZ8PnBzVVWSk4C/AN5XVV+a7JxkaZIVbfhZwBuAOw5vVSRJczFrALRz+pcwuILnTuBPq2pPksuSvKl1uwpYnmQCeA8weanoJcDpwKVTLvdcBmxPchuwG/g28LH5XDFJ0sGlaurp/GeusbGxGh/3qlFJmosku6pqbGr7rN8DONqd88EvcPeDjx/pMiTpsJ2wbAm3/d7GeVveMf2vINz5SzqWfPeJp3jpBz47b8s7pgPAnb+kY813n3hq3pZ1TAeAJGlmBoAkdeqYDoB1Jz/7SJcgSfPqhGVL5m1Zx3QA3PSe1xgCko4Z830V0DF/GehN73nNkS5Bkp6RjukjAEnSzAwASeqUASBJnTIAJKlTBoAkdcoAkKROGQCS1CkDQJI6ZQBIUqcMAEnqlAEgSZ0yACSpUwaAJHXKAJCkThkAktQpA0CSOmUASFKnDABJ6tRIAZBkY5K7kkwk2TrN9GVJrm/TdyRZ09rPSbIrye3t/rVD87ystU8k+XCSzNdKSZJmN2sAJFkCXAGcB6wH3p5k/ZRuFwOPVNXpwIeAy1v7Q8Abq+olwEXAtUPzfBTYAqxrt/n7pWNJ0qxGOQLYAExU1b1V9SRwHbBpSp9NwDVt+Abg7CSpqluqal9r3wMc344WTgFOqKovV1UBnwDefNhrI0ka2SgBsAq4f2h8b2ubtk9VHQAeBZZP6fNW4JaqeqL13zvLMiVJC2jpCH2mOzdfc+mT5EUMTgudO4dlTs67hcGpIk477bTZapUkjWiUI4C9wKlD46uBfTP1SbIUOBF4uI2vBm4ELqyqe4b6r55lmQBU1ZVVNVZVYytXrhyhXEnSKEYJgJ3AuiRrkxwHbAa2TemzjcGHvADnAzdXVSU5CfgL4H1V9aXJzlX1APBYkrPa1T8XAp8+zHWRJM3BrAHQzulfAmwH7gT+tKr2JLksyZtat6uA5UkmgPcAk5eKXgKcDlyaZHe7ndym/RrwR8AEcA/wmflaKUnS7DK4COfoMDY2VuPj40e6DEk6qiTZVVVjU9v9JrAkdcoAkKROGQCS1CkDQJI6ZQBIUqcMAEnqlAEgSZ0yACSpUwaAJHXKAJCkThkAktQpA0CSOmUASFKnDABJ6pQBIEmdMgAkqVMGgCR1ygCQpE4ZAJLUKQNAkjplAEhSpwwASeqUASBJnTIAJKlTBoAkdcoAkKROGQCS1KmRAiDJxiR3JZlIsnWa6cuSXN+m70iyprUvT/L5JN9L8pEp83yhLXN3u508HyskSRrN0tk6JFkCXAGcA+wFdibZVlVfG+p2MfBIVZ2eZDNwOfA24O+AS4EXt9tUF1TV+GGugyTpEIxyBLABmKiqe6vqSeA6YNOUPpuAa9rwDcDZSVJVj1fVFxkEgSTpGWSUAFgF3D80vre1Tdunqg4AjwLLR1j2H7fTP5cmyXQdkmxJMp5kfP/+/SMsUpI0ilECYLodcx1Cn6kuqKqXAK9qt3dM16mqrqyqsaoaW7ly5azFSpJGM0oA7AVOHRpfDeybqU+SpcCJwMMHW2hVfbvdPwZ8ksGpJknSIhklAHYC65KsTXIcsBnYNqXPNuCiNnw+cHNVzXgEkGRpkhVt+FnAG4A75lq8JOnQzXoVUFUdSHIJsB1YAlxdVXuSXAaMV9U24Crg2iQTDN75b56cP8l9wAnAcUneDJwLfAvY3nb+S4D/BXxsXtdMknRQOcgb9WecsbGxGh/3qlFJmosku6pqbGq73wSWpE4ZAJLUKQNAkjplAEhSpwwASeqUASBJnTIAJKlTBoAkdcoAkKROGQCS1CkDQJI6ZQBIUqcMAEnqlAEgSZ0yACSpUwaAJHXKAJCkThkAktQpA0CSOmUASFKnDABJ6pQBIEmdMgAkqVMGgCR1ygCQpE4ZAJLUKQNAkjo1UgAk2ZjkriQTSbZOM31Zkuvb9B1J1rT25Uk+n+R7ST4yZZ6XJbm9zfPhJJmPFZIkjWbWAEiyBLgCOA9YD7w9yfop3S4GHqmq04EPAZe39r8DLgXeO82iPwpsAda128ZDWQFJ0qEZ5QhgAzBRVfdW1ZPAdcCmKX02Ade04RuAs5Okqh6vqi8yCIIfS3IKcEJVfbmqCvgE8ObDWRFJ0tyMEgCrgPuHxve2tmn7VNUB4FFg+SzL3DvLMgFIsiXJeJLx/fv3j1CuJGkUowTAdOfm6xD6HFL/qrqyqsaqamzlypUHWaQkaS5GCYC9wKlD46uBfTP1SbIUOBF4eJZlrp5lmZKkBTRKAOwE1iVZm+Q4YDOwbUqfbcBFbfh84OZ2bn9aVfUA8FiSs9rVPxcCn55z9ZKkQ7Z0tg5VdSDJJcB2YAlwdVXtSXIZMF5V24CrgGuTTDB45795cv4k9wEnAMcleTNwblV9Dfg14OPATwGfaTdJ0iLJQd6oP+OMjY3V+Pj4kS5Dko4qSXZV1djUdr8JLEmdMgAkqVMGgCR1ygCQpE4ZAJLUqaPqKqAk+4FvHeLsK4CH5rGc+WJdc2Ndc2Ndc3Ms1vUQQFX9xD/cPKoC4HAkGZ/uMqgjzbrmxrrmxrrmpre6PAUkSZ0yACSpUz0FwJVHuoAZWNfcWNfcWNfcdFVXN58BSJKerqcjAEnSEANAkjp1zAdAko1J7koykWTrIj/2qUk+n+TOJHuS/MvW/rtJvp1kd7u9fmie97Va70ryywtY231Jbm+PP97anpfkpiR3t/vntvYk+XCr67YkZy5QTS8c2ia7k3w3yW8eqe2V5OokDya5Y6htztsoyUWt/91JLpruseahrv+Y5OvtsW9MclJrX5PkB0Pb7g+H5nlZew1MtNqn+6W+w61rzs/dfP/NzlDX9UM13Zdkd2tfzO010/5h8V5jVXXM3hj8fsE9wAuA44BbgfWL+PinAGe24ecA3wDWA78LvHea/utbjcuAta32JQtU233Aiilt/wHY2oa3Ape34dcz+L2GAGcBOxbpufsb4PlHansBrwbOBO441G0EPA+4t90/tw0/dwHqOhdY2oYvH6przXC/Kcv5a+Aftpo/A5y3AHXN6blbiL/Z6eqaMv33gd85Attrpv3Dor3GjvUjgA3ARFXdW1VPAtcBmxbrwavqgar6aht+DLgTWHWQWTYB11XVE1X1TWCCwToslk3ANW34GuDNQ+2fqIGvACclOWWBazkbuKeqDvbN7wXdXlX1f/jJnzad6zb6ZeCmqnq4qh4BbgJ+4huZh1tXVX2uqg600a/w9J9c/QmtthOq6ss12It8Ymhd5q2ug5jpuZv3v9mD1dXexf8q8F8PtowF2l4z7R8W7TV2rAfAKuD+ofG9HHwHvGCSrAF+AdjRmi5ph3FXTx7isbj1FvC5JLuSbGlt/6AGP9dJuz/5CNQ1aTNP/6M80ttr0ly30ZGo8Z/w9F/YW5vkliT/O8mrWtuqVsti1DWX526xt9ergO9U1d1DbYu+vabsHxbtNXasB8B05+gW/brXJD8NfAr4zar6LvBR4GeAM4AHGByCwuLW+4qqOhM4D/j1JK8+SN9F3Y4Z/Pb0m4A/a03PhO01m5lqWext937gAPAnrekB4LSq+gXgPcAnk5ywiHXN9blb7Of07Tz9jcaib69p9g8zdp2hhkOu7VgPgL3AqUPjq4F9i1lAkmcxeHL/pKr+HKCqvlNVT1XVj4CP8f9PWyxavVW1r90/CNzYavjO5Kmddv/gYtfVnAd8taq+02o84ttryFy30aLV2D78ewNwQTtNQTvF8rdteBeD8+s/2+oaPk20IHUdwnO3mNtrKfArwPVD9S7q9ppu/8AivsaO9QDYCaxLsra9q9wMbFusB2/nF68C7qyqDw61D58/fwsweXXCNmBzkmVJ1gLrGHzwNN91PTvJcyaHGXyAeEd7/MkrCC4CPj1U14XtKoSzgEcnD1EXyNPelR3p7TXFXLfRduDcJM9tpz/ObW3zKslG4LeBN1XV94faVyZZ0oZfwGAb3dtqeyzJWe11euHQusxnXXN97hbzb/Z1wNer6sendhZze820f2AxX2OH8yn20XBj8Mn5Nxgk+fsX+bFfyeBQ7DZgd7u9HrgWuL21bwNOGZrn/a3WuzjMqwwOUtcLGFxdcSuwZ3K7AMuBvwTubvfPa+0Brmh13Q6MLeA2+/vA3wInDrUdke3FIIQeAH7I4F3WxYeyjRick59ot3+8QHVNMDgPPPk6+8PW963tOb4V+CrwxqHljDHYId8DfIT2nwHmua45P3fz/Tc7XV2t/ePAu6b0XcztNdP+YdFeY/4rCEnq1LF+CkiSNAMDQJI6ZQBIUqcMAEnqlAEgSZ0yACSpUwaAJHXq/wFziL1ivJUqWwAAAABJRU5ErkJggg==\n", 265 | "text/plain": [ 266 | "
" 267 | ] 268 | }, 269 | "metadata": { 270 | "needs_background": "light" 271 | }, 272 | "output_type": "display_data" 273 | } 274 | ], 275 | "source": [ 276 | "plt.figure()\n", 277 | "plt.scatter(range(len(cost)), cost)\n", 278 | "plt.show()" 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": 135, 284 | "metadata": {}, 285 | "outputs": [ 286 | { 287 | "data": { 288 | "text/html": [ 289 | "
\n", 290 | "\n", 303 | "\n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | "
XY
07.6157
17.1174
28.2175
37.5188
47.4171
57.8143
67.3217
78.0190
87.1142
97.5190
108.1215
117.0199
127.3262
137.8105
147.3121
158.081
168.582
177.1210
188.2202
197.9155
207.6157
218.8147
227.2133
237.953
248.156
257.7113
268.435
277.4125
287.376
298.548
307.8147
316.7117
327.1182
337.387
\n", 484 | "
" 485 | ], 486 | "text/plain": [ 487 | " X Y\n", 488 | "0 7.6 157\n", 489 | "1 7.1 174\n", 490 | "2 8.2 175\n", 491 | "3 7.5 188\n", 492 | "4 7.4 171\n", 493 | "5 7.8 143\n", 494 | "6 7.3 217\n", 495 | "7 8.0 190\n", 496 | "8 7.1 142\n", 497 | "9 7.5 190\n", 498 | "10 8.1 215\n", 499 | "11 7.0 199\n", 500 | "12 7.3 262\n", 501 | "13 7.8 105\n", 502 | "14 7.3 121\n", 503 | "15 8.0 81\n", 504 | "16 8.5 82\n", 505 | "17 7.1 210\n", 506 | "18 8.2 202\n", 507 | "19 7.9 155\n", 508 | "20 7.6 157\n", 509 | "21 8.8 147\n", 510 | "22 7.2 133\n", 511 | "23 7.9 53\n", 512 | "24 8.1 56\n", 513 | "25 7.7 113\n", 514 | "26 8.4 35\n", 515 | "27 7.4 125\n", 516 | "28 7.3 76\n", 517 | "29 8.5 48\n", 518 | "30 7.8 147\n", 519 | "31 6.7 117\n", 520 | "32 7.1 182\n", 521 | "33 7.3 87" 522 | ] 523 | }, 524 | "execution_count": 135, 525 | "metadata": {}, 526 | "output_type": "execute_result" 527 | } 528 | ], 529 | "source": [ 530 | "data = pd.read_excel('pH_vs_bicarbonate.xlsx')\n", 531 | "data" 532 | ] 533 | }, 534 | { 535 | "cell_type": "code", 536 | "execution_count": 137, 537 | "metadata": {}, 538 | "outputs": [ 539 | { 540 | "data": { 541 | "image/png": "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\n", 542 | "text/plain": [ 543 | "
" 544 | ] 545 | }, 546 | "metadata": { 547 | "needs_background": "light" 548 | }, 549 | "output_type": "display_data" 550 | } 551 | ], 552 | "source": [ 553 | "plt.figure()\n", 554 | "plt.scatter(data['X'], data['Y'])\n", 555 | "plt.show()" 556 | ] 557 | }, 558 | { 559 | "cell_type": "code", 560 | "execution_count": null, 561 | "metadata": {}, 562 | "outputs": [], 563 | "source": [] 564 | } 565 | ], 566 | "metadata": { 567 | "kernelspec": { 568 | "display_name": "Python 3", 569 | "language": "python", 570 | "name": "python3" 571 | }, 572 | "language_info": { 573 | "codemirror_mode": { 574 | "name": "ipython", 575 | "version": 3 576 | }, 577 | "file_extension": ".py", 578 | "mimetype": "text/x-python", 579 | "name": "python", 580 | "nbconvert_exporter": "python", 581 | "pygments_lexer": "ipython3", 582 | "version": "3.7.1" 583 | } 584 | }, 585 | "nbformat": 4, 586 | "nbformat_minor": 2 587 | } 588 | -------------------------------------------------------------------------------- /linearRegressionWithOneVariable1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import pandas as pd" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 4, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "text/html": [ 21 | "
\n", 22 | "\n", 35 | "\n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | "
01
06.110117.5920
15.52779.1302
28.518613.6620
37.003211.8540
45.85986.8233
\n", 71 | "
" 72 | ], 73 | "text/plain": [ 74 | " 0 1\n", 75 | "0 6.1101 17.5920\n", 76 | "1 5.5277 9.1302\n", 77 | "2 8.5186 13.6620\n", 78 | "3 7.0032 11.8540\n", 79 | "4 5.8598 6.8233" 80 | ] 81 | }, 82 | "execution_count": 4, 83 | "metadata": {}, 84 | "output_type": "execute_result" 85 | } 86 | ], 87 | "source": [ 88 | "df = pd.read_csv('ex1data1.txt', header = None)\n", 89 | "df.head()" 90 | ] 91 | }, 92 | { 93 | "cell_type": "code", 94 | "execution_count": 5, 95 | "metadata": {}, 96 | "outputs": [], 97 | "source": [ 98 | "m = len(df)" 99 | ] 100 | }, 101 | { 102 | "cell_type": "code", 103 | "execution_count": 6, 104 | "metadata": {}, 105 | "outputs": [ 106 | { 107 | "data": { 108 | "text/plain": [ 109 | "97" 110 | ] 111 | }, 112 | "execution_count": 6, 113 | "metadata": {}, 114 | "output_type": "execute_result" 115 | } 116 | ], 117 | "source": [ 118 | "m" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 13, 124 | "metadata": {}, 125 | "outputs": [], 126 | "source": [ 127 | "def hypothesis(theta, X):\n", 128 | " return theta[0] + theta[1]*X" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 111, 134 | "metadata": {}, 135 | "outputs": [], 136 | "source": [ 137 | "def cost_calc(theta, X, y):\n", 138 | " return (1/2*m) * np.sum((hypothesis(theta, X) - y)**2)" 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": 112, 144 | "metadata": {}, 145 | "outputs": [], 146 | "source": [ 147 | "m = len(df)\n", 148 | "def gradient_descent(theta, X, y, epoch, alpha):\n", 149 | " cost = []\n", 150 | " i = 0\n", 151 | " while i < epoch:\n", 152 | " hx = hypothesis(theta, X)\n", 153 | " theta[0] -= alpha*(sum(hx-y)/m)\n", 154 | " theta[1] -= (alpha * np.sum((hx - y) * X))/m\n", 155 | " cost.append(cost_calc(theta, X, y))\n", 156 | " i += 1\n", 157 | " return theta, cost" 158 | ] 159 | }, 160 | { 161 | "cell_type": "code", 162 | "execution_count": 113, 163 | "metadata": {}, 164 | "outputs": [], 165 | "source": [ 166 | "theta = [0,0]\n", 167 | "def predict(theta, X, y, epoch, alpha):\n", 168 | " theta, cost = gradient_descent(theta, X, y, epoch, alpha)\n", 169 | " return hypothesis(theta, X), cost, theta" 170 | ] 171 | }, 172 | { 173 | "cell_type": "code", 174 | "execution_count": 129, 175 | "metadata": {}, 176 | "outputs": [], 177 | "source": [ 178 | "y_predict, cost, theta = predict(theta, df[0], df[1], 2000, 0.01)" 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "execution_count": 130, 184 | "metadata": {}, 185 | "outputs": [ 186 | { 187 | "data": { 188 | "text/plain": [ 189 | "[-3.8957755979447293, 1.1930331137194408]" 190 | ] 191 | }, 192 | "execution_count": 130, 193 | "metadata": {}, 194 | "output_type": "execute_result" 195 | } 196 | ], 197 | "source": [ 198 | "theta" 199 | ] 200 | }, 201 | { 202 | "cell_type": "code", 203 | "execution_count": 140, 204 | "metadata": {}, 205 | "outputs": [ 206 | { 207 | "data": { 208 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEHCAYAAACp9y31AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXxU9bn48c+TEEhYA0KrgJTUWrBIBAGXC96KVLGKSlGg1I26UJdWrcqveL1V1Fq1WNdb7cWKgBcXVARErQsuLbgSwQCKKBI0ARUXNhNkkjy/P86ZMJnMTM5M5sySed6vV16ZOXPmnC+T4ZnvfM/zfb6iqhhjjMkdeelugDHGmNSywG+MMTnGAr8xxuQYC/zGGJNjLPAbY0yOscBvjDE5po1fBxaR/YG5wL5APTBTVe8UkenA+cBWd9f/UtVnYh2re/fu2rdvX7+aaowxrVJZWdmXqtojfLtvgR+oBa5Q1XdEpBNQJiIvuI/drqq3ej1Q3759WbFihS+NNMaY1kpENkXa7lvgV9UtwBb39k4ReR/o5df5jDHGeJOSMX4R6QsMBt50N/1WRMpFZJaIdE1FG4wxxjh8D/wi0hF4ArhMVXcA9wIHAINwvhH8NcrzpojIChFZsXXr1ki7GGOMSYCfY/yISAFO0J+nqgsAVPXzkMfvA5ZEeq6qzgRmAgwdOrRJQaFAIEBlZSW7d+/2o+kmTGFhIb1796agoCDdTTHGtJCfWT0C3A+8r6q3hWzfzx3/B/gFsCaR41dWVtKpUyf69u2LcyrjF1Xlq6++orKykpKSknQ3xxjTQn72+IcDZwKrRWSVu+2/gEkiMghQoAL4TSIH3717twX9FBER9tlnH2zIzRh/LVxZxYznPmDzthp6FhcxdXQ/xg5Ofk6Mn1k9y4BIUTlmzn48LOinjr3Wxvhr4coqrlqwmppAHQBV22q4asFqgKQHf5u52wKVlZWccsopHHjggRxwwAFceuml7NmzJ+K+mzdv5rTTTmv2mCeccALbtm1LqD3Tp0/n1ls9T48wxmSQGc990BD0g2oCdcx47oOkn8sCf4JUlXHjxjF27Fg+/PBD1q9fz65du7j66qub7FtbW0vPnj15/PHHmz3uM888Q3FxsR9NNsZksM3bauLa3hIW+BP00ksvUVhYyK9//WsA8vPzuf3225k1axbV1dXMnj2b8ePHc9JJJ3HcccdRUVHBwQcfDEB1dTUTJkygtLSUiRMncvjhhzfMTO7bty9ffvklFRUVHHTQQZx//vkMGDCA4447jpoa5w1w3333MWzYMA455BBOPfVUqquro7Zz586dlJSUEAgEANixYwd9+/ZtuG+MyQw9i4vi2t4SORP4F66sYvjNL1Ey7WmG3/wSC1dWteh4a9euZciQIY22de7cmT59+vDRRx8B8PrrrzNnzhxeeumlRvvdc889dO3alfLycv74xz9SVlYW8RwffvghF198MWvXrqW4uJgnnngCgHHjxvH222/z7rvvctBBB3H//fdHbWenTp04+uijefrppwF45JFHOPXUUy0t05gMM3V0P4oK8httKyrIZ+rofkk/V04E/uBFk6ptNSh7L5q0JPirasQLnqHbjz32WLp169Zkn2XLlvHLX/4SgIMPPpjS0tKI5ygpKWHQoEEADBkyhIqKCgDWrFnDUUcdxcCBA5k3bx5r166N2dbzzjuPBx54AIAHHnig4VuKMSZzjB3ci5vGDaRXcREC9Cou4qZxA7MrqyeTxLpokuiLOmDAgIYeeNCOHTv49NNPOeCAAygrK6NDhw4Rn+t1gft27do13M7Pz28Y6pk8eTILFy7kkEMOYfbs2bzyyisxjzN8+HAqKip49dVXqauraxhyMsZklrGDe/kS6MPlRI/fj4smo0aNorq6mrlz5wJQV1fHFVdcweTJk2nfvn3M544YMYL58+cD8N5777F69eq4zr1z5072228/AoEA8+bN8/Scs846i0mTJllv3xiTG4Hfj4smIsKTTz7JY489xoEHHsiPf/xjCgsL+fOf/9zscy+66CK2bt1KaWkpt9xyC6WlpXTp0sXzuW+44QYOP/xwjj32WPr37+/pOaeffjrffPMNkyZN8nweY0zrJF6HHdJp6NChGl6P//333+eggw7y9PzwiRHgXDTxa/ysOXV1dQQCAQoLC9mwYQOjRo1i/fr1tG3b1rdzPv744yxatIgHH3ww4WPE85obY9JPRMpUdWj49pwY4w8G91RMhfaiurqakSNHEggEUFXuvfdeX4P+7373O5599lmeeSZpk6aNSblUlTPIBTkR+CF1F0286NSpU0pXFLv77rtTdi5j/JDKcgZpVT4fll4P2yuhS28YdQ2UTkj6aXJijN8Yk91SWc4gbcrnw1OXwPZPAXV+P3WJsz3JLPAbYzJeKssZpM3S6yEQ9u8J1Djbk8wCvzEm46WynEHabK+Mb3sLWOA3xmS8VJYzSJsuvePb3gIW+DNIx44dAW8lnO+4446YxdkieeWVVxgzZkzC7TMmXVJZziBtRl0DBWHfYAqKnO1JljNZPelSV1dHfn5+8zuG8FLC+Y477uCMM85odpawMa2Fn5l5GZEqGszesayezFVRUUH//v05++yzKS0t5bTTTmvogfft25frr7+eESNG8Nhjj7FhwwaOP/54hgwZwlFHHcW6desA2LhxI0ceeSTDhg3jj3/8Y6NjB+vp1NXVceWVVzJw4EBKS0u5++67ueuuu9i8eTMjR45k5MiRADz//PMceeSRHHrooYwfP55du3YB8M9//pP+/fszYsQIFixYEPHfctRRR7Fq1aqG+8OHD6e8vDz5L5oxGciPIo4JK50Av18D07c5v30I+pBLgb98Ptx+MEwvdn4nIUXqgw8+YMqUKZSXl9O5c2fuueeehscKCwsbqnBOmTKFu+++m7KyMm699VYuuugiAC699FIuvPBC3n77bfbdd9+I55g5cyYbN25k5cqVlJeXc/rpp3PJJZfQs2dPXn75ZV5++WW+/PJL/vSnP/Hiiy/yzjvvMHToUG677TZ2797N+eefz1NPPcW///1vPvvss4jnOO+885g9ezYA69ev57vvvotaMdSY1iapqaI+xBk/5Ebg9yk/dv/992f48OEAnHHGGSxbtqzhsYkTJwKwa9cuXnvtNcaPH8+gQYP4zW9+w5YtWwBYvnx5Q+2cM888M+I5XnzxRS644ALatHFG5SKVeX7jjTd47733GD58OIMGDWLOnDls2rSJdevWUVJSwoEHHoiIcMYZZ0Q8x/jx41myZAmBQIBZs2YxefLkxF4QY7JQ0lJFU5iH31K5McYfKz+2BV+lwuvxh94PlmSur6+nuLi40VBKrGOEi1b3P3yfY489locffrjR9lWrVnlaJL19+/Yce+yxLFq0iPnz56d0VrEx6dazuIiqCEE+7lRRn+KMH3Kjx+9Tfuwnn3zC66+/DsDDDz/MiBEjmuzTuXNnSkpKeOyxxwAnSL/77ruAM5b+yCOPAEQtr3zcccfx97//ndraWgC+/vprwCn7sHPnTgCOOOIIli9f3rDyV3V1NevXr6d///5s3LiRDRs2NLQxmvPOO49LLrmEYcOGRfxWYUxrlbRU0RTm4bdUbgR+n/JjDzroIObMmUNpaSlff/01F154YcT95s2bx/33388hhxzCgAEDWLRoEQB33nknf/vb3xg2bBjbt2+P+NzzzjuPPn36UFpayiGHHMJDDz0EwJQpU/j5z3/OyJEj6dGjB7Nnz2bSpEmUlpZyxBFHsG7dOgoLC5k5cyYnnngiI0aM4Ac/+EHUf8uQIUPo3Lmz1es3OSeYKlpctHc50sKCBEJjCvPwWyonyjI3jL2Ffg0rKIKT7kr4K1hFRQVjxoxhzZo1CT0/02zevJmjjz6adevWkZcX+U1vZZlNa5WU0u0+xJmWilaWOTd6/KUTnBe/y/6AOL/T+MfINHPnzuXwww/nxhtvjBr0jWnNkpLZk0VxJjd6/CYp7DU3rVXJtKeJFAkF2HjzialuTtIk3OMXkeFethljTLbqWVzEyXnLWNb2Ej5u9yuWtb2Ek/OWta4icCG8pHPeDRzqYVvKeUl1NMmRDd8MjUnU3O8/SknNI+S54aS3fMktBf9gzU/6Aseks2m+iBr4ReRI4D+AHiJyechDnYFmi8+IyP7AXGBfoB6Yqap3ikg34FGgL1ABTFDVb+JteGFhIV999RX77LOPBX+fqSpfffUVhYWF6W6KMclXPp8DNj3qjOuEKJI9DNtwN/CbtDTLT7F6/G2Bju4+nUK27wBil4501AJXqOo7ItIJKBORF4DJwFJVvVlEpgHTgD/E2/DevXtTWVnJ1q1b432qSUBhYSG9e2deWpoxLbb0eog4wk9G5uAnQ9TAr6qvAq+KyGxV3RTvgVV1C7DFvb1TRN4HegGnAEe7u80BXiGBwF9QUEBJSUm8TzPGmMZiBfcMzMFPBi9j/LNFpMnHoap6HvgSkb7AYOBN4PvuhwKqukVEvuf1OMYYk3Rderv1dcKJL7XwM4GXwH9lyO1C4FScYRxPRKQj8ARwmaru8DoeLyJTgCkAffr08Xo6Y4yJz6hrmk68QmDoORmZg58MzQZ+VS0L27RcRF71cnARKcAJ+vNUNVgM/nMR2c/t7e8HfBHlvDOBmeDk8Xs5nzHGxC2FC6BkimYDv5uFE5QHDMHJ1GnueQLcD7yvqreFPLQYOBu42f29KJ4GG2NM0pVOaNWBPpyXoZ4ynEvegjPEsxE418PzhgNnAqtFJFiT+L9wAv58ETkX+AQYH2+jjTHGJM7LUE9CqTOquowmmbENRiVyTGOMMS3nZainELgIGIHT818G3Kuqu31umzHGGB94GeqZC+zEKdMAMAl4EBuiMcak0pLLoWw2aB1IPgyZDGNua+5ZJgIvgb+fqh4Scv9lEXnXrwYZY0wTSy6HFffvva91e+9b8I+bl+LrK0XkiOAdETkcWO5fk4wxJkzZ7Pi2m5i89PgPB84SkU/c+32A90VkNaCqWupb64wxBpwefjzbTUxeAv/xvrfCGGNikfzIQV6aLRRsIvAy1PMnVd0U+hO6ze8GGmMMQybHt93E5KXHPyD0joi0wZm9a4wxqRG8gJvhWT0LV1Yx47kP2Lythp7FRUwd3c/7Yu0pFGshlqtwZtoWicgO9k7G2oNbQ8cYY1JmzG0ZF+hDLVxZxVULVjcs2l61rYarFqwGyLjgH3WoR1VvUtVOwAxV7ayqndyffVT1qhS20RhjMt6M5z5oCPpBNYE6Zjz3QZpaFJ2XoZ5nReQ/wzeq6r98aE/Gy5avcsaY1Nq8rSau7enkJfBPDbldCByGU7it9a1A3Ixs+ipnjEmtnsVFVEUI8j2Li9LQmtiazepR1ZNCfo4FDgY+979pmSebvsoZY1Jr6uh+FBU0Ti8tKshn6uh+aWpRdF56/OEqcYJ/zsmmr3LGmNQKfuvPhqFgL9U572bvEvR5wCAgJ2v1ZNNXOWNam2y4vjZ2cK+Ma1MkXnr8K0Ju1wIPq2pO1uqZOrpfozF+yNyvcsa0JnZ9Lbm8BP5HgR/h9Po35HId/mz6KmdMaxLr+pr9/4tfrAlcbYA/A+cAm3CGeXqLyAPA1aoaSE0TM0u2fJUzpjWx62vJFSurZwbQDShR1SGqOhg4ACgGbk1F44wxBqJfR7Pra4mJFfjHAOer6s7gBlXdAVwInOB3w4wxJiibUiWzQawxflVVjbCxTkSabDfGGL/Y9bXkihX43xORs1R1buhGETkDWOdvs4wxpjG7vpY8sQL/xcACETkHp0SDAsOAIuAXKWibMcYYH0QN/KpaBRwuIsfg1OQX4FlVXZqqxhljjEm+ZvP4VfUl4KUUtMUYY0wKJFKrxxjjUTaUGTC5xwK/MT6xMgMmU3lZbN0YkwAr420yVdTALyI7RWRHtJ/mDiwis0TkCxFZE7JtuohUicgq98cmgplWy8oMmEwVK6unE4CIXA98BjyIk9lzOtDJw7FnA/8DzA3bfruqWskH0+pZGW+TqbwM9YxW1XtUdaeq7lDVe4FTm3uSuybv1y1uoTFZysoMmEzl5eJunYicDjyCM4lrElAX+ykx/VZEzsKp83+Fqn7TgmMZ45uWZuRYmQGTqSRCOZ7GO4j0Be4EhuME/uXAZapa0ezBnecuUdWD3fvfB750j3MDsJ+qnhPluVOAKQB9+vQZsmnTJg//HGOSIzwjB5ze+k3jBlrgNllDRMpUdWj4di+LrVeo6imq2l1Ve6jqWC9BP8qxPlfVOlWtB+4DDoux70xVHaqqQ3v06JHI6YxJmGXkmNas2cAvIj8WkaXB7BwRKRWR/07kZCKyX8jdXwBrou1rTDpZRo5pzbxc3L0PuAoIAKhqOfDL5p4kIg8DrwP9RKRSRM4F/iIiq0WkHBgJ/D7hlhvjI1v4w7RmXi7utlfVt0QkdFttc09S1UkRNt/vtWHGpNPU0f0ijvFbRo5pDbwE/i9F5ACcC7KIyGnAFl9bZUyapTUjp3w+LL0etldCl94w6hooneD/eU3O8BL4LwZmAv1FpArYiDOJy5hWLS0Lf5TPh6cugYB7LWH7p859sOBvksZL4FdV/ZmIdADyVHWniJT43TDTMlYVMkstvX5v0A8K1DjbLfCbJPES+J8ADlXVb0O2PQ4M8adJpqWsKmR8MupDcntlfNuNSUDUwC8i/XFW3uoiIuNCHuoMFPrdMJO4WDnoFvgby7gPyS69neGdSNuNSZJY6Zz9gDFAMXBSyM+hwPn+N80kynLQvcu4iVqjroGCsJTRgiJnuzFJEqs65yJgkYgcqaqvp7BNpoWsKqR3vn9IxpuhE3zMsnqMj7yM8V8gIu+r6jYAEekK/DVajR2TfpaD7p2vH5KJZuiUTrBAb3zlZeZuaTDoA7jVNAf71yTTUmMH9+KmcQPpVVyEAL2Ki6y4WBS+lk6OlaFjTBp56fHniUjXYPlkEenm8XkmjdKSg56FfJ2oZRk6JkN5CeB/BV4Tkcfd++OBG/1rkjGp5duHpGXomAzlpSzzXJwVtz4HvgDGqeqDfjfMmKxnGTomQ8XK4++sqjvcoZ3PgIdCHuumqrasojGxWIaOyVCxhnoewsnjL8Mt0OYS9/4PfWyXSbGMmr2aqRIpnpZAho79LYzfYuXxj3F/W12eLOU1gGTc7NVMlKLiafa3MKkQa6jn0FhPVNV3kt+c1s3vnlzo8bsUFfDtnloCdc6XtVgBxEo8RBHaw5c80MavkR/F0+xvYVIh1lDPX93fhcBQ4F2cYZ5S4E1ghL9Na1387smFH39bTaDJPtECiJV4iCC8hx8e9IOSnJppfwuTClGzelR1pKqOBDbhVOccqqpDcCZvfZSqBrYWfteEiXT8SCIFEFtmMIJIk68iSXJqpv0tTCp4mbnbX1VXB++o6hpgkH9Nap387sl5PU6kAOLr7NVssORyuK4bTO/i/F5yubeevA+pmTn/tzAp4WUC1/si8g/g/3Cyec4A3ve1Va2Q34XToh0/VLQAktZlBtNtyeWwImQpaK1z7hd0gMC3TfeXfNB631Izc/pvYVJGVDX2DiKFwIXAf7qb/gXcq6q7fW5bg6FDh+qKFStSdTpfhI/BgxOIk1VDJ9LxC/KEjoVt2FYdsAASzXXdIo/fSx60add4uKegCE66y/LwTdYQkTJVHRq+vdkev6ruFpG/A8+oapqKlGc/v3ty1lNMULSLtlrvBHmbfGVaIS89/pOBGUBbVS0RkUHA9ap6cioaCK2jx28yVNQefz5ca5PTTXaL1uP3cnH3WuAwYBuAqq4C+ia1dcaky5DJ8W03phXwcnG3VlW3i4jvjTEm5cbc5vwum+30/CXfCfrB7ca0Ql4C/xoR+RWQLyIHApcAr/nbLGNSaMxtFuhNTvEy1PM7YADwHU7htu3AZX42yhhjjH9i9vhFJB+4TlWnAlenpknGGGP8FDPwq2qdiAxJ5MAiMgunrPMXqnqwu60b8CjOxeEKYEJwSUdjPFtyeVLH5K0Mssk1XoZ6VorIYhE5U0TGBX88PG82cHzYtmnAUlU9EFjq3jfGu+BM22AKZnCm7ZLLEzpccOJb1bYalL3F8xaurEpem43JMF4CfzfgK+AY4CT3Z0xzT1LVfwHhidCnAHPc23OAsZ5bagw4Pf14tjfD7+J5xmQiL1k9U1X1yySd7/uqugVAVbeIyPei7SgiU4ApAH369EnS6U3WizrTtvnKpJFYGWSTi6L2+EXkJBHZCpSLSKWI/EcK24WqznRLQQ/t0aNHKk9tMpnkx7e9GVYG2eSiWEM9NwJHqWpP4FTgpiSc73MR2Q/A/f1FEo5pckmSZ9paGWSTi2IF/lpVXQegqm8CnZJwvsXA2e7ts4FFSTimySVjboOh5+7t4Uu+cz/BrJ6xg3tx07iB9CouQoBexUVJq5hqTKaKWqRNRCqB0P9Nl4feV9WY/9NE5GHgaKA78DlOzZ+FwHygD/AJMF5Vm62ElYoibZbSlyah69pmeAVMe4+YbJNIWeb7aNzLD78fk6pOivLQKK/HSBW/18M1UYSva7v9U+c+ZFzwt/eIaU2iBn5VvS6VDUmnWCl99p/aR5HWtQ3UONszLPDbe8S0Jl7y+Fs9S+lLk2jr2npZ7zbF7D1iWhML/FhKX9p06R3f9jSy94hpTSzwYyl9aTPqGmcd21AFRc72DGPvEdOaRB3jF5GYxU+ay+rJJrZebRLFU0AtOI6fBVk99h4xrUmsdM5r3Zv9gGE4Ofjg1Or5l6qe53/zHLbmbhYonw9PXQaBb5s+1oI8e2NM4uJO5wxm9YjI88ChqrrTvT8deMyndppsFJ6WGa5sdlIDv+XTG9MyXoq09QH2hNzfgy22bkJFSssMlWABtUgsn96YlvMS+B8E3hKRJwEFfgHM9bVVJnNFmmnbXPplggXUIrF8emNartnAr6o3isg/gRHupl+r6kp/m2UyUrSZtkVdoSZy5Q1V+PgH4zkgSU2wfHpjWs5rOucqnHH9J4GvRMQK5OeiaDNtoUlapirUqTC37mec9fnEpDXB8umNablme/wi8jucAmufA3WA4Az5lPrbNJNWEYZ0dHslEmFXrfkGGTeTysevoqd8xWbdh7/UTmBxvfMlUZLYG586ul+jMX6wfHpj4uVljP9SoJ+qfuV3YzJRtmWQtLi95fPh2T80Hrpxh3S205FidjZ5yud0Z9/SCUx8pjtVEYJ8Mnvjlk9vTMt5CfyfAtv9bkgmyrYMkoTbGynYhwvUUFffkWppS3vZm+RVrW25KTCeO0msN57IB9XYwb0y8vU3Jlt4GeP/GHhFRK4SkcuDP343LBNk20LcCbW3fD4sujh20Hd1zfuWaYHzqKzvTr0KlfXdmRY4jxWdjwXiX9Qk+EFVta0GZe8H1cKVVV7/ycaYBHjp8X/i/rR1f3JGujJIEh2uSai9S6+Huj3RHw+xu2hfXqj7KYv3jGjYVlSQz00Jjq9baqYx6eElnTNn6vKHK25fwDfVgYjb/RJtuGbFpq95ed3WmB8GPYuLYo+xx3HBtomCItr//HpuqhsY8UNp4coqpi9ey7aava9Xc0NNlpppTHp4yerpAfw/YABQGNyuqsf42K6MEKWMUcTtyboIHK0XPO+NTwieNjSgBp+zeVsNxe0LKMgTAvV7G9gwxh4lBz/aBdtGirrBz2+B0gmMpWkQD/+wCm97tB58sx9UxhhfeBnqmQc8CowBLsBZJH2rn43KFNtrmvb2I21P5kXgaL3d8M+amkAd1z21lt2B+obzflMdoCBfKC4qYHtNgLM7vsX/K3iU9os+A8lrWjrBvWC7R9rQVmobn09B2u8N+LFE+rDy8m+y1Exj0sPLxd19VPV+IKCqr6rqOcARPrcrI3idLJTMi8Dx9Ha/qQ40OW+gTunQrg0bD/pfptfeQfuaLYBGrZfTNe9brgxM4WvtiKoT8L+q78h1BZfBHzZ6KpHc3NBMtH9TvBeDjTHJ4aXHH+zebhGRE4HNQOYtkeQDrz3SZI5VRzpncMZcc07OW8a1bebSrWYXbPR2voYLtt+FXbA9caDnNkcbsgkeK1YP3lIzjUk9Lz3+P4lIF+AK4ErgH8DvfW1VhvDaI43Wo80TiTs1MdI5Tz+iT8TVn4qL9l5knltwI3cW3MM+ebsQT1dr2XvBtoW97kirUwF0bV9gPXhjMlDUhVgySaYvxBLr4mZRQX5Sgl+ki8cAy568h2u5j47ynbeAL/mg9Ulf7SrbZjgbkwuiLcSSE4E/FUFp4coqrpj/LnURXs9exUUsn5bkJCh3tq3WfO0tHTNo3H0ZubShMSb5ogX+Vr/Yeqpmh44d3Iv6KB+iSc1LL58Pt5TAgvMh3qBf8lML+sYYTxd3s5rfs0NDv03kiUTs8YdfA0joG4iXejrRSB4M+XVcyx9m8tBNJrfNmGwQNfA3V49HVbNi9Ww/Z4cuXFnF1MffJVDnBPtIQT88qyWhnP/m1rSNQBW+I5/CU/8edy8/k4vTZXLbjMkWsXr8nfw6qYhUADtx6vvXRhqDSpZoqYbJKLtw3VNrG4J+JAKcOqRxuqLnbyBLLncWKY9zvVpVqEf4v7pRzOx4MctL915b8NpTzuQaOpncNmOyRdTAn4IaPSNV9Uufz8HU0f0a9cqDdu2uZeHKqhYFi0h1fEIp8PK6xpOcm/0GUj4fFlyAUhfX+L0qfK0dua72LBbXj2hSPC2ennIm19DJ5LYZky2avbgrIoUicrGI3CMis4I/qWhcMowd3IsObZt+vgXqNSXllcMDUqSc/5PzlrGs3SXo9C7ORds4gz5F3Vgx5C+c3P5BnqofETEXP57ZxZm8vGEmt82YbOHl4u6DwDpgNHA9cDrwfgvPq8DzIqLA/6rqzBYeL6ZoNXdS0UsMD0ihM3OvazOLM/KXkod6n3QVKqR42jBg+cnRd42np5zJNXQyuW3GZAsvgf9HqjpeRE5R1Tki8hDwXAvPO1xVN4vI94AXRGSdqv4rdAcRmQJMAejTp2Vru8dTBTKejJGuUco2B0UKSGMH96LXp0s4qOyPdMDjpCuXKohIQpOv4nkNMnl5w0xumzHZotkJXCLylqoeJiL/Ai4CPgPeUtUfJqUBItOBXbQtIysAABG8SURBVKp6a7R9kjGBK1IvMXw4xOt+oftHun4AzqStJgGpBSmZqrAg73jyT74toaAX77/NGJP9ok3g8tLjnykiXYE/AouBjsA1LWhIByBPVXe6t4/DGULyjddeYrwZI557ny3JwccJ+h9ob1Ye8t88kWAqo/WUjTFBKS/ZICI/BJ5077YBHlLVG2M9x+9aPcHhnWgVJgXYePOJiR08gRz8IFXnYsiDdT/jT3ouHdq2abTCVVCkkhA2yckYk3CPX0TaAacCfUP3V9WEeumq+jFwSCLP9UOsAmtBLcoYWXq956AfDPQAm7U7f6mdwOL6YLlkjRj0wen5h6am2iQnY0wsXoZ6FgHbgTLgO3+bk3rNrR4Vd8ZI6MQryfc8AUsV5tb9jGtrz/F+rhChgb0lk5zsm4IxrZ+XwN9bVY/3vSU+ixbQYqV0RrxAG0m0MXytQ6HZnPzvNJ+pgd+E9O4j69q+oNFSi6FCA3uik5zsm4IxucFL4H9NRAaq6urmd81MsQJatDRHz6WUb9gXrauJGtyFYBrm3m2qUC+QD1TWhw/pRD/OtScNAOCyR1dF3CcY2BNdxNzKIRiTG7yUZR4BlInIByJSLiKrRaTc74YlU7SANn3xWr79rrbJ/s0O75TPh9sPhuldYgb9UJX13alXobK+O5cGLuJHux+C6duZ2P6+ZoM+OGP/wWUKezUzezXSilhehqysHIIxucFLj//nvrfCZ9ECV6SLpXnSuJRBk57uksthxSyCl2G9BP068hix565G23oVF7FwZRXVe5p+8EQSGuybm72aaOpmot8UjDHZJVZZ5s6qugOnimZWi7UYeLh6N62malsNlz26iumL1zL95AGMrforlD3gLFsYBwUe1VGNthUV5DOyf4+I2URFBXnU1mujSWHhvXUvgT2RRcytHIIxuSFWj/8hYAxONk/4NUoFkjJzNxUiBTSv7qqdzlEL16LirXcfTkp+SofSO+kVFqSjZRN169Cu4fFYvfVEAntzbJKXMbkhJ9bchaZZPdV7aqPW2QktngbEXU8HYE/bYtqdNCNqPZ2SaU8T6ZVv0WQxY4wJ0ZIJXIdG2Lwd2KSq3gaoM9CJpfvxRFlVk173s22n0l+qEqqWqQrV0pYXTlll4+nGmIzlJavnHuANYCZwn3v7EWC9iBznY9uSJtKC60+UVXHqECdD5uS8ZaxvdwYb2/0q7qCv6vxU1ndHTr2PDtO3ehoaSTTzxhhjWspLVk8FcK6qrgUQkZ8AU4EbgAXA8761LkmipXO+vG4ry/e7A939atzj96qwS9txde25LHYXPwld5rA5Np5ujEkXL4G/fzDoA6jqeyIyWFU/loRWD0m9SOmc17WZxZk1L8LG+C7aKk7QfzCsvEL1nviXcvTjAq0xxjTHS+D/QETuxRneAZiIM8zTDoi96GyGCB1Pv67NLM7MfxEhvou24KY2de/PouELuH3xWqjd+8//pjpg5Q2MMVnByxj/ZOAj4DLg98DH7rYAMNKvhiXT1NH9+L+2f2Zju19xVv6L5En8mTq7tQ3XtbkMfvums45vu6afmdHWsDXGmEzSbI9fVWuAv7o/4XYlvUU+GLt0FJq3JaFx/GA9/Gtrz0G+g+nuY1bewBiTrWLN3J2vqhNEZDU0TTlX1VJfW5YsSy6HXfEFfQXqFC4PXNSojk6eSMM4vqVjGmOyVawe/6Xu7zGpaIhvymZ73lUByWvLY72n8Yf1/Zt82tWpNozjW3kDY0y2ijrGr6pbRCQfuF9VN4X/pLCNLeNhIRRVqKnP59I9F7HwpFVcu3FAxFm10LhM8U3jBtKruAjBKaJmC5cbY7JBzDF+Va0TkWoR6aKq21PVqKSKsQqWKgQQrgxcyOL6EeSLUNbMilywdxzf0jGNMdnISzrnbmC1iLwAfBvcqKqX+NaqZBoyGVbc32hTsJ5O+FKHdaqeLs6GjuPbUoXGmGzjJfA/7f5kpzG3Ob/LZqNaRx15zKs7JuLatsGa982VcA5O1gJsqUJjTNZptjqniBQCP8K59rlBVXenomGhklGdM1T4UozgXJi9adxAAE8lnIsK8mnXJi/iYi7NLdto3xKMMakQd3VOEWkD/Bk4B9iEcyG4t4g8AFytqlkxazeS8Do5XYoKCNTVN6xlW1SQR9f2BXxTHSBfhLoIH441gbqoHw6xhotsQXNjTLrFmrk7A+gGlKjqEFUdDBwAFAO3pqJxfho7uBfLpx3D7RMH8e2eWr7dszeI1wTq2bW7ljsmDmLDTSfEfexYufyxFjQ3xphUiDXGPwb4sYaMBanqDhG5EFjH3jz/rDbjuQ8aLXMYFKhXrpj/LkDUXn+eOI8F6vc+VpAnMXP5bcavMSbdYgV+1QgXANwUz8xftiuCSGPrsS7kBidsRQr64KzPmx/+namZKcI249cYk26xhnreE5GzwjeKyBk4Pf6sEmkxlsvdMf1YagJ1UQu65Ys0+bYQqNOYwza2AIsxJt1i9fgvBhaIyDnsXXB9GFAE/CIFbUuqSGPr9R6fqwoF+Y2DfFFBftSLu1XbaiiZ9nTEjB1bgMUYk25RA7+qVgGHi8gxwACcQYxnVXVpS08qIscDdwL5wD9U9eaWHrM5LR1D79C2DR3atWkUrGc890HUoaLgt4pIGTt+zPi1FFFjjFdeyjK/BLyUrBO69X/+BhwLVAJvi8hiVX0vWeeIJNrYulfbawKsurbpEsPN5fyH1vbxi6WIGmPi4WUhlmQ7DPhIVT9W1T04K3ud4vdJp47uF3c9/lCRLr6GF2qLxu+MHUsRNcbEIx2Bvxfwacj9Snebr8YO7hW14mZzYl18Dc4H2HjziQ0lH8L5nbFjKaLGmHikI/BH6hw3ickiMkVEVojIiq1btyblxNECc36MdRjjKbecroydaB8sliJqjIkkHYG/Etg/5H5vYHP4Tqo6U1WHqurQHj16JOXE0QLzpMP3j7j9jomDWD7tGM/j5Omq0W8posaYeHipzplsbwMHikgJUAX8EvhVKk4cK5Vy6A+6JSUrJh01+i1F1BgTj5QHflWtFZHfAs/hpHPOUtW1qW5HuGxfVCXb22+MSZ109PhR1WeAZ1J9Xkt7NMaY9Izxp42lPRpjTI4F/mjpjS2Z2GWMMdkmpwJ/tPRGgYalFI0xprXLqcAfbfauQsLDPQtXVjH85pcomfY0w29+yT5AjDEZL6cCf6zZu4nMco1U6vmqBast+BtjMlpOBX6IPns3kVmudrHYGJONci7wJ3OWq9XIMcZko5wL/Mksq2A1cowx2SgtE7jSLVmzXKeO7tekHr/VyDHGZLqcDPzJYjVyjDHZyAJ/C1mNHGNMtsm5MX5jjMl1OdHjt4XIjTFmr1Yf+K0ipzHGNNbqh3pskpUxxjTW6gO/TbIyxpjGWn3gt0lWxhjTWKsP/LYQuTHGNNbqL+7aJCtjjGms1Qd+sElWxhgTqtUP9RhjjGnMAr8xxuQYC/zGGJNjLPAbY0yOscBvjDE5RlSjLT+eOURkK7ApCYfqDnyZhOOkQja1FbKrvdZW/2RTe7OprZBYe3+gqj3CN2ZF4E8WEVmhqkPT3Q4vsqmtkF3ttbb6J5vam01theS214Z6jDEmx1jgN8aYHJNrgX9muhsQh2xqK2RXe62t/smm9mZTWyGJ7c2pMX5jjDG51+M3xpic1yoDv4hUiMhqEVklIisiPC4icpeIfCQi5SJyaJra2c9tY/Bnh4hcFrbP0SKyPWSfa1Lcxlki8oWIrAnZ1k1EXhCRD93fXaM892x3nw9F5Ow0tXWGiKxz/85PikhxlOfGfM+kqK3TRaQq5G99QpTnHi8iH7jv32l+tzVGex8NaWuFiKyK8txUv7b7i8jLIvK+iKwVkUvd7Rn3vo3RVn/ft6ra6n6ACqB7jMdPAJ4FBDgCeDMD2pwPfIaTdxu6/WhgSRrb9Z/AocCakG1/Aaa5t6cBt0R4XjfgY/d3V/d21zS09TigjXv7lkht9fKeSVFbpwNXenifbAB+CLQF3gV+ko72hj3+V+CaDHlt9wMOdW93AtYDP8nE922Mtvr6vm2VPX4PTgHmquMNoFhE9ktzm0YBG1Q1GRPVkkZV/wV8Hbb5FGCOe3sOMDbCU0cDL6jq16r6DfACcLxvDSVyW1X1eVWtde++AfT2sw1eRXldvTgM+EhVP1bVPcAjOH8PX8Vqr4gIMAF42O92eKGqW1T1Hff2TuB9oBcZ+L6N1la/37etNfAr8LyIlInIlAiP9wI+Dblf6W5Lp18S/T/OkSLyrog8KyIDUtmoKL6vqlvAeeMC34uwTya+xufgfNOLpLn3TKr81v16PyvKUEQmvq5HAZ+r6odRHk/baysifYHBwJtk+Ps2rK2hkv6+ba0LsQxX1c0i8j3gBRFZ5/ZYgiTCc9KW3iQibYGTgasiPPwOzvDPLnfMdyFwYCrbl6BMe42vBmqBeVF2ae49kwr3AjfgvE434AyfnBO2T0a9rq5JxO7tp+W1FZGOwBPAZaq6w/li0vzTImzz/fUNb2vIdl/et62yx6+qm93fXwBP4nw9DlUJ7B9yvzewOTWti+jnwDuq+nn4A6q6Q1V3ubefAQpEpHuqGxjm8+DQmPv7iwj7ZMxr7F6gGwOcru7AaDgP7xnfqernqlqnqvXAfVHakDGvK4CItAHGAY9G2ycdr62IFOAE0nmqusDdnJHv2yht9fV92+oCv4h0EJFOwds4F0nWhO22GDhLHEcA24NfAdMkao9JRPZ1x1ARkcNw/mZfpbBtkSwGgtkOZwOLIuzzHHCciHR1hyyOc7ellIgcD/wBOFlVq6Ps4+U947uw60y/iNKGt4EDRaTE/ab4S5y/R7r8DFinqpWRHkzHa+v+f7kfeF9Vbwt5KOPet9Ha6vv71q+r1en6wcl2eNf9WQtc7W6/ALjAvS3A33CyI1YDQ9PY3vY4gbxLyLbQtv7W/Xe8i3OR5z9S3L6HgS1AAKc3dC6wD7AU+ND93c3ddyjwj5DnngN85P78Ok1t/QhnzHaV+/N3d9+ewDOx3jNpaOuD7vuxHCdI7RfeVvf+CTjZHxtS0dZo7XW3zw6+V0P2TfdrOwJneKY85O9+Qia+b2O01df3rc3cNcaYHNPqhnqMMcbEZoHfGGNyjAV+Y4zJMRb4jTEmx1jgN8aYHGOB32Q9EXnNh2P2FZFfxXh8hltNcUYCxx4kUSpvGpMKls5pTAQicjROpcwxUR7fAfRQ1e8SOPZknLkjv43jOYLz/7U+3vMZE856/Cbricgu9/fRIvKKiDzu1jKfFzLruUJEbhGRt9yfH7nbZ4vIaeHHAm4GjnLrnP8+7HyLgQ7AmyIyUUR6iMgTIvK2+zPc3e8wEXlNRFa6v/u5s22vBya6x54oTh3+K0OOv8b9xtFXnDrt9+DUbNpfRI4TkddF5B0Recyt8WJMXCzwm9ZmMHAZTk3zHwLDQx7boaqHAf8D3NHMcaYB/1bVQap6e+gDqnoyUOM+9ihwJ3C7qg4DTgX+4e66DvhPVR0MXAP8WZ1SytcAj4Y8P5Z+OCXEBwPfAv8N/ExVDwVWAJc383xjmmit1TlN7npL3box4qwI1RdY5j72cMjv25s+NWE/A34SUv2xs1tDpQswR0QOxJmWX5DAsTeps2YEOIsG/QRY7p6rLfB6SxpucpMFftPahI6519H4Pa4RbtfifvN1h4XaJnDOPOBIVa0J3SgidwMvq+ovxKm1/kqU5ze0wVUYcvvb0EPiLBIyKYE2GtPAhnpMLpkY8jvYU64Ahri3T2Fvr3wnzlJ4XjyPU0wPcLJ23JtdgCr39uSQ/cOPXYGzrCHirP9cEuU8bwDDQ65PtBeRH3tsozENLPCbXNJORN4ELgWCF2zvA34qIm8Bh7O3h10O1Iqz8tnvmx6qkUuAoeKsnPUeTnVVcNZ4vUlEluOslRv0Ms7Q0CoRmYhTi72bOzR1IU7lzSZUdSvOB8jDIlKO80HQ3+O/3ZgGls5pcoKIVOCkUH6Z7rYYk27W4zfGmBxjPX5jjMkx1uM3xpgcY4HfGGNyjAV+Y4zJMRb4jTEmx1jgN8aYHGOB3xhjcsz/B+J/EDkAECuWAAAAAElFTkSuQmCC\n", 209 | "text/plain": [ 210 | "
" 211 | ] 212 | }, 213 | "metadata": { 214 | "needs_background": "light" 215 | }, 216 | "output_type": "display_data" 217 | } 218 | ], 219 | "source": [ 220 | "%matplotlib inline\n", 221 | "import matplotlib.pyplot as plt\n", 222 | "plt.figure()\n", 223 | "plt.scatter(df[0], df[1], label = 'Original y')\n", 224 | "plt.scatter(df[0], y_predict, label = 'predicted y')\n", 225 | "plt.legend(loc = \"upper left\")\n", 226 | "plt.xlabel(\"input feature\")\n", 227 | "plt.ylabel(\"Original and Predicted Output\")\n", 228 | "plt.show()" 229 | ] 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 133, 234 | "metadata": {}, 235 | "outputs": [ 236 | { 237 | "data": { 238 | "image/png": "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\n", 239 | "text/plain": [ 240 | "
" 241 | ] 242 | }, 243 | "metadata": { 244 | "needs_background": "light" 245 | }, 246 | "output_type": "display_data" 247 | } 248 | ], 249 | "source": [ 250 | "%matplotlib inline\n", 251 | "import matplotlib.pyplot as plt\n", 252 | "plt.figure()\n", 253 | "plt.scatter(df[0], df[1])\n", 254 | "plt.show()" 255 | ] 256 | }, 257 | { 258 | "cell_type": "code", 259 | "execution_count": null, 260 | "metadata": {}, 261 | "outputs": [], 262 | "source": [] 263 | } 264 | ], 265 | "metadata": { 266 | "kernelspec": { 267 | "display_name": "Python 3", 268 | "language": "python", 269 | "name": "python3" 270 | }, 271 | "language_info": { 272 | "codemirror_mode": { 273 | "name": "ipython", 274 | "version": 3 275 | }, 276 | "file_extension": ".py", 277 | "mimetype": "text/x-python", 278 | "name": "python", 279 | "nbconvert_exporter": "python", 280 | "pygments_lexer": "ipython3", 281 | "version": "3.7.1" 282 | } 283 | }, 284 | "nbformat": 4, 285 | "nbformat_minor": 2 286 | } 287 | -------------------------------------------------------------------------------- /logisticRegressionWithOptimizationFunc.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 6, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "import matplotlib.pyplot as plt" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 7, 17 | "metadata": {}, 18 | "outputs": [ 19 | { 20 | "data": { 21 | "text/html": [ 22 | "
\n", 23 | "\n", 36 | "\n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | "
012
034.62366078.0246930
130.28671143.8949980
235.84740972.9021980
360.18259986.3085521
479.03273675.3443761
\n", 78 | "
" 79 | ], 80 | "text/plain": [ 81 | " 0 1 2\n", 82 | "0 34.623660 78.024693 0\n", 83 | "1 30.286711 43.894998 0\n", 84 | "2 35.847409 72.902198 0\n", 85 | "3 60.182599 86.308552 1\n", 86 | "4 79.032736 75.344376 1" 87 | ] 88 | }, 89 | "execution_count": 7, 90 | "metadata": {}, 91 | "output_type": "execute_result" 92 | } 93 | ], 94 | "source": [ 95 | "df = pd.read_csv('ex2data1.txt', header=None)\n", 96 | "df.head()" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": 8, 102 | "metadata": {}, 103 | "outputs": [ 104 | { 105 | "data": { 106 | "text/html": [ 107 | "
\n", 108 | "\n", 121 | "\n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | "
01
034.62366078.024693
130.28671143.894998
235.84740972.902198
\n", 147 | "
" 148 | ], 149 | "text/plain": [ 150 | " 0 1\n", 151 | "0 34.623660 78.024693\n", 152 | "1 30.286711 43.894998\n", 153 | "2 35.847409 72.902198" 154 | ] 155 | }, 156 | "execution_count": 8, 157 | "metadata": {}, 158 | "output_type": "execute_result" 159 | } 160 | ], 161 | "source": [ 162 | "X = df.iloc[:, :-1]\n", 163 | "X.head(3)" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": 9, 169 | "metadata": {}, 170 | "outputs": [], 171 | "source": [ 172 | "y = df.iloc[:, -1]" 173 | ] 174 | }, 175 | { 176 | "cell_type": "code", 177 | "execution_count": 10, 178 | "metadata": {}, 179 | "outputs": [ 180 | { 181 | "data": { 182 | "text/plain": [ 183 | "0 0\n", 184 | "1 0\n", 185 | "2 0\n", 186 | "Name: 2, dtype: int64" 187 | ] 188 | }, 189 | "execution_count": 10, 190 | "metadata": {}, 191 | "output_type": "execute_result" 192 | } 193 | ], 194 | "source": [ 195 | "y[:3]" 196 | ] 197 | }, 198 | { 199 | "cell_type": "code", 200 | "execution_count": 11, 201 | "metadata": {}, 202 | "outputs": [ 203 | { 204 | "data": { 205 | "text/plain": [ 206 | "array([[ 1. , 34.62365962, 78.02469282],\n", 207 | " [ 1. , 30.28671077, 43.89499752],\n", 208 | " [ 1. , 35.84740877, 72.90219803],\n", 209 | " [ 1. , 60.18259939, 86.3085521 ],\n", 210 | " [ 1. , 79.03273605, 75.34437644],\n", 211 | " [ 1. , 45.08327748, 56.31637178],\n", 212 | " [ 1. , 61.10666454, 96.51142588],\n", 213 | " [ 1. , 75.02474557, 46.55401354],\n", 214 | " [ 1. , 76.0987867 , 87.42056972],\n", 215 | " [ 1. , 84.43281996, 43.53339331]])" 216 | ] 217 | }, 218 | "execution_count": 11, 219 | "metadata": {}, 220 | "output_type": "execute_result" 221 | } 222 | ], 223 | "source": [ 224 | "X = np.c_[np.ones((X.shape[0], 1)), X]\n", 225 | "X[:10]" 226 | ] 227 | }, 228 | { 229 | "cell_type": "code", 230 | "execution_count": 12, 231 | "metadata": {}, 232 | "outputs": [ 233 | { 234 | "data": { 235 | "text/plain": [ 236 | "array([[0],\n", 237 | " [0],\n", 238 | " [0],\n", 239 | " [1],\n", 240 | " [1],\n", 241 | " [0],\n", 242 | " [1],\n", 243 | " [1],\n", 244 | " [1],\n", 245 | " [1]], dtype=int64)" 246 | ] 247 | }, 248 | "execution_count": 12, 249 | "metadata": {}, 250 | "output_type": "execute_result" 251 | } 252 | ], 253 | "source": [ 254 | "y = y[:, np.newaxis]\n", 255 | "y[:10]" 256 | ] 257 | }, 258 | { 259 | "cell_type": "code", 260 | "execution_count": 13, 261 | "metadata": {}, 262 | "outputs": [ 263 | { 264 | "data": { 265 | "text/plain": [ 266 | "array([[0.],\n", 267 | " [0.],\n", 268 | " [0.]])" 269 | ] 270 | }, 271 | "execution_count": 13, 272 | "metadata": {}, 273 | "output_type": "execute_result" 274 | } 275 | ], 276 | "source": [ 277 | "theta = np.zeros((X.shape[1], 1))\n", 278 | "theta" 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": 14, 284 | "metadata": {}, 285 | "outputs": [ 286 | { 287 | "data": { 288 | "text/plain": [ 289 | "array([[0.],\n", 290 | " [0.],\n", 291 | " [0.],\n", 292 | " [0.],\n", 293 | " [0.]])" 294 | ] 295 | }, 296 | "execution_count": 14, 297 | "metadata": {}, 298 | "output_type": "execute_result" 299 | } 300 | ], 301 | "source": [ 302 | "z = np.dot(X, theta)\n", 303 | "z[:5]" 304 | ] 305 | }, 306 | { 307 | "cell_type": "code", 308 | "execution_count": 15, 309 | "metadata": {}, 310 | "outputs": [ 311 | { 312 | "data": { 313 | "text/plain": [ 314 | "array([[0.5],\n", 315 | " [0.5],\n", 316 | " [0.5],\n", 317 | " [0.5],\n", 318 | " [0.5]])" 319 | ] 320 | }, 321 | "execution_count": 15, 322 | "metadata": {}, 323 | "output_type": "execute_result" 324 | } 325 | ], 326 | "source": [ 327 | "h = 1/(1+np.exp(-z))\n", 328 | "h[:5]" 329 | ] 330 | }, 331 | { 332 | "cell_type": "code", 333 | "execution_count": 16, 334 | "metadata": {}, 335 | "outputs": [ 336 | { 337 | "data": { 338 | "text/plain": [ 339 | "100" 340 | ] 341 | }, 342 | "execution_count": 16, 343 | "metadata": {}, 344 | "output_type": "execute_result" 345 | } 346 | ], 347 | "source": [ 348 | "m = X.shape[0]\n", 349 | "m" 350 | ] 351 | }, 352 | { 353 | "cell_type": "code", 354 | "execution_count": 17, 355 | "metadata": {}, 356 | "outputs": [ 357 | { 358 | "data": { 359 | "text/plain": [ 360 | "0.6931471805599453" 361 | ] 362 | }, 363 | "execution_count": 17, 364 | "metadata": {}, 365 | "output_type": "execute_result" 366 | } 367 | ], 368 | "source": [ 369 | "cost = -(1/m)*np.sum(y*np.log(h) + (1-y)*np.log(1-h))\n", 370 | "cost" 371 | ] 372 | }, 373 | { 374 | "cell_type": "code", 375 | "execution_count": 18, 376 | "metadata": {}, 377 | "outputs": [ 378 | { 379 | "data": { 380 | "text/plain": [ 381 | "array([[ -0.1 ],\n", 382 | " [-12.00921659],\n", 383 | " [-11.26284221]])" 384 | ] 385 | }, 386 | "execution_count": 18, 387 | "metadata": {}, 388 | "output_type": "execute_result" 389 | } 390 | ], 391 | "source": [ 392 | "grad = (1/m) * np.dot(X.T, (h-y))\n", 393 | "grad" 394 | ] 395 | }, 396 | { 397 | "cell_type": "code", 398 | "execution_count": 19, 399 | "metadata": {}, 400 | "outputs": [], 401 | "source": [ 402 | "def sigmoid(x, theta):\n", 403 | " z= np.dot(x, theta)\n", 404 | " return 1/(1+np.exp(-z))" 405 | ] 406 | }, 407 | { 408 | "cell_type": "code", 409 | "execution_count": 20, 410 | "metadata": {}, 411 | "outputs": [], 412 | "source": [ 413 | "def hypothesis(theta, x):\n", 414 | " return sigmoid(x, theta)" 415 | ] 416 | }, 417 | { 418 | "cell_type": "code", 419 | "execution_count": 21, 420 | "metadata": {}, 421 | "outputs": [], 422 | "source": [ 423 | "def cost_function(theta, x, y):\n", 424 | " m = X.shape[0]\n", 425 | " h = hypothesis(theta, x)\n", 426 | " return -(1/m)*np.sum(y*np.log(h) + (1-y)*np.log(1-h))" 427 | ] 428 | }, 429 | { 430 | "cell_type": "code", 431 | "execution_count": 22, 432 | "metadata": {}, 433 | "outputs": [], 434 | "source": [ 435 | "def gradient(theta, x, y):\n", 436 | " m = X.shape[0]\n", 437 | " h = hypothesis(theta, x)\n", 438 | " return (1/m) * np.dot(X.T, (h-y)) " 439 | ] 440 | }, 441 | { 442 | "cell_type": "code", 443 | "execution_count": 23, 444 | "metadata": {}, 445 | "outputs": [], 446 | "source": [ 447 | "from scipy.optimize import minimize,fmin_tnc\n", 448 | "def fit(x, y, theta):\n", 449 | " opt_weights = fmin_tnc(func=cost_function, x0=theta, fprime=gradient, args=(x, y.flatten()))\n", 450 | " return opt_weights[0]\n", 451 | "parameters = fit(X, y, theta)" 452 | ] 453 | }, 454 | { 455 | "cell_type": "code", 456 | "execution_count": 27, 457 | "metadata": {}, 458 | "outputs": [ 459 | { 460 | "data": { 461 | "text/plain": [ 462 | "array([-25.16131854, 0.20623159, 0.20147149])" 463 | ] 464 | }, 465 | "execution_count": 27, 466 | "metadata": {}, 467 | "output_type": "execute_result" 468 | } 469 | ], 470 | "source": [ 471 | "parameters" 472 | ] 473 | }, 474 | { 475 | "cell_type": "code", 476 | "execution_count": 28, 477 | "metadata": {}, 478 | "outputs": [], 479 | "source": [ 480 | "h = hypothesis(parameters, X)" 481 | ] 482 | }, 483 | { 484 | "cell_type": "code", 485 | "execution_count": 36, 486 | "metadata": {}, 487 | "outputs": [ 488 | { 489 | "data": { 490 | "text/plain": [ 491 | "array([9.10339294e-02, 4.22589668e-05, 4.39088910e-02, 9.90424697e-01,\n", 492 | " 9.98198750e-01, 1.07975521e-02, 9.98978138e-01, 4.23227057e-01,\n", 493 | " 9.99710020e-01, 7.35387955e-01, 9.09674394e-01, 2.85967738e-02,\n", 494 | " 9.99270142e-01, 9.99853945e-01, 1.56037085e-01, 9.80959345e-01,\n", 495 | " 4.27716900e-01, 1.48789237e-01, 9.99706543e-01, 5.74280760e-01,\n", 496 | " 6.68350391e-02, 9.98627244e-01, 7.41803067e-03, 1.01155397e-04,\n", 497 | " 9.91878247e-01, 8.55048631e-01, 6.00298722e-01, 8.65184829e-01,\n", 498 | " 9.23893094e-02, 1.68289210e-02, 8.97130763e-01, 9.81037346e-01,\n", 499 | " 1.54911024e-01, 3.91938615e-01, 7.41289966e-02, 3.31107865e-02,\n", 500 | " 8.52267971e-01, 9.87564309e-01, 2.03987785e-01, 4.95799793e-02,\n", 501 | " 9.70300369e-01, 6.11823902e-03, 9.99461484e-01, 5.02285122e-01,\n", 502 | " 4.48870646e-03, 1.37023865e-01, 9.92991802e-01, 9.99996181e-01,\n", 503 | " 9.99204915e-01, 9.99990761e-01, 9.98106782e-01, 9.99500487e-01,\n", 504 | " 9.05015908e-01, 2.80614817e-03, 8.52272267e-03, 5.28909917e-02,\n", 505 | " 9.99856630e-01, 6.93707647e-01, 9.85496664e-01, 9.95728611e-01,\n", 506 | " 9.99531647e-01, 2.22376854e-04, 3.50540644e-03, 1.27066902e-04,\n", 507 | " 7.16567336e-02, 4.08761466e-02, 9.44426172e-01, 1.00705520e-02,\n", 508 | " 9.99952447e-01, 7.09300663e-01, 6.20395621e-05, 9.77396161e-01,\n", 509 | " 9.99893358e-01, 8.84276399e-01, 9.05240586e-01, 9.99954904e-01,\n", 510 | " 9.17694807e-01, 6.26743821e-01, 1.58401454e-02, 5.99469179e-01,\n", 511 | " 9.99282492e-01, 9.73471586e-01, 8.94532155e-01, 2.03192640e-01,\n", 512 | " 9.99941048e-01, 9.97982478e-01, 3.54560019e-01, 9.99820029e-01,\n", 513 | " 9.99973211e-01, 1.06959272e-01, 9.99943953e-01, 9.99985225e-01,\n", 514 | " 1.42428239e-03, 9.99321741e-01, 9.24570135e-01, 8.58639054e-01,\n", 515 | " 7.50881910e-01, 9.99896606e-01, 3.39275423e-01, 9.99750932e-01])" 516 | ] 517 | }, 518 | "execution_count": 36, 519 | "metadata": {}, 520 | "output_type": "execute_result" 521 | } 522 | ], 523 | "source": [ 524 | "h" 525 | ] 526 | }, 527 | { 528 | "cell_type": "code", 529 | "execution_count": 42, 530 | "metadata": {}, 531 | "outputs": [], 532 | "source": [ 533 | "def predict(h):\n", 534 | " h1 = []\n", 535 | " for i in h:\n", 536 | " if i>=0.5:\n", 537 | " h1.append(1)\n", 538 | " else:\n", 539 | " h1.append(0)\n", 540 | " return h1\n", 541 | "y_pred = predict(h)" 542 | ] 543 | }, 544 | { 545 | "cell_type": "code", 546 | "execution_count": 45, 547 | "metadata": {}, 548 | "outputs": [ 549 | { 550 | "data": { 551 | "text/plain": [ 552 | "0.89" 553 | ] 554 | }, 555 | "execution_count": 45, 556 | "metadata": {}, 557 | "output_type": "execute_result" 558 | } 559 | ], 560 | "source": [ 561 | "accuracy = 0\n", 562 | "for i in range(0, len(y_pred)):\n", 563 | " if y_pred[i] == y[i]:\n", 564 | " accuracy += 1\n", 565 | "accuracy/len(y)" 566 | ] 567 | } 568 | ], 569 | "metadata": { 570 | "kernelspec": { 571 | "display_name": "Python 3", 572 | "language": "python", 573 | "name": "python3" 574 | }, 575 | "language_info": { 576 | "codemirror_mode": { 577 | "name": "ipython", 578 | "version": 3 579 | }, 580 | "file_extension": ".py", 581 | "mimetype": "text/x-python", 582 | "name": "python", 583 | "nbconvert_exporter": "python", 584 | "pygments_lexer": "ipython3", 585 | "version": "3.7.1" 586 | } 587 | }, 588 | "nbformat": 4, 589 | "nbformat_minor": 2 590 | } 591 | -------------------------------------------------------------------------------- /polynomial regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 171, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "data": { 10 | "text/html": [ 11 | "
\n", 12 | "\n", 25 | "\n", 26 | " \n", 27 | " \n", 28 | " \n", 29 | " \n", 30 | " \n", 31 | " \n", 32 | " \n", 33 | " \n", 34 | " \n", 35 | " \n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | "
PositionLevelSalary
0Business Analyst145000
1Junior Consultant250000
2Senior Consultant360000
3Manager480000
4Country Manager5110000
\n", 67 | "
" 68 | ], 69 | "text/plain": [ 70 | " Position Level Salary\n", 71 | "0 Business Analyst 1 45000\n", 72 | "1 Junior Consultant 2 50000\n", 73 | "2 Senior Consultant 3 60000\n", 74 | "3 Manager 4 80000\n", 75 | "4 Country Manager 5 110000" 76 | ] 77 | }, 78 | "execution_count": 171, 79 | "metadata": {}, 80 | "output_type": "execute_result" 81 | } 82 | ], 83 | "source": [ 84 | "import pandas as pd\n", 85 | "df = pd.read_csv('position_salaries.csv')\n", 86 | "df.head()" 87 | ] 88 | }, 89 | { 90 | "cell_type": "code", 91 | "execution_count": 172, 92 | "metadata": {}, 93 | "outputs": [ 94 | { 95 | "data": { 96 | "text/plain": [ 97 | "10" 98 | ] 99 | }, 100 | "execution_count": 172, 101 | "metadata": {}, 102 | "output_type": "execute_result" 103 | } 104 | ], 105 | "source": [ 106 | "m=len(df)\n", 107 | "m" 108 | ] 109 | }, 110 | { 111 | "cell_type": "code", 112 | "execution_count": 173, 113 | "metadata": {}, 114 | "outputs": [ 115 | { 116 | "data": { 117 | "image/png": "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\n", 118 | "text/plain": [ 119 | "
" 120 | ] 121 | }, 122 | "metadata": { 123 | "needs_background": "light" 124 | }, 125 | "output_type": "display_data" 126 | } 127 | ], 128 | "source": [ 129 | "%matplotlib inline\n", 130 | "import matplotlib.pyplot as plt\n", 131 | "plt.figure()\n", 132 | "plt.scatter(df['Level'], df['Salary'])\n", 133 | "plt.show()" 134 | ] 135 | }, 136 | { 137 | "cell_type": "code", 138 | "execution_count": 174, 139 | "metadata": {}, 140 | "outputs": [ 141 | { 142 | "data": { 143 | "text/html": [ 144 | "
\n", 145 | "\n", 158 | "\n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | "
00PositionLevelSalary
01Business Analyst145000
11Junior Consultant250000
21Senior Consultant360000
31Manager480000
41Country Manager5110000
\n", 206 | "
" 207 | ], 208 | "text/plain": [ 209 | " 00 Position Level Salary\n", 210 | "0 1 Business Analyst 1 45000\n", 211 | "1 1 Junior Consultant 2 50000\n", 212 | "2 1 Senior Consultant 3 60000\n", 213 | "3 1 Manager 4 80000\n", 214 | "4 1 Country Manager 5 110000" 215 | ] 216 | }, 217 | "execution_count": 174, 218 | "metadata": {}, 219 | "output_type": "execute_result" 220 | } 221 | ], 222 | "source": [ 223 | "df = pd.concat([pd.Series(1, index=df.index, name='00'), df], axis=1)\n", 224 | "df.head()" 225 | ] 226 | }, 227 | { 228 | "cell_type": "code", 229 | "execution_count": 175, 230 | "metadata": {}, 231 | "outputs": [], 232 | "source": [ 233 | "df = df.drop(columns='Position')" 234 | ] 235 | }, 236 | { 237 | "cell_type": "code", 238 | "execution_count": 176, 239 | "metadata": {}, 240 | "outputs": [ 241 | { 242 | "data": { 243 | "text/plain": [ 244 | "0 45000\n", 245 | "1 50000\n", 246 | "2 60000\n", 247 | "3 80000\n", 248 | "4 110000\n", 249 | "Name: Salary, dtype: int64" 250 | ] 251 | }, 252 | "execution_count": 176, 253 | "metadata": {}, 254 | "output_type": "execute_result" 255 | } 256 | ], 257 | "source": [ 258 | "y = df['Salary']\n", 259 | "y[:5]" 260 | ] 261 | }, 262 | { 263 | "cell_type": "code", 264 | "execution_count": 177, 265 | "metadata": {}, 266 | "outputs": [], 267 | "source": [ 268 | "X = df.drop(columns = 'Salary')" 269 | ] 270 | }, 271 | { 272 | "cell_type": "code", 273 | "execution_count": 178, 274 | "metadata": {}, 275 | "outputs": [ 276 | { 277 | "data": { 278 | "text/html": [ 279 | "
\n", 280 | "\n", 293 | "\n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | "
00Level
011
112
213
314
415
\n", 329 | "
" 330 | ], 331 | "text/plain": [ 332 | " 00 Level\n", 333 | "0 1 1\n", 334 | "1 1 2\n", 335 | "2 1 3\n", 336 | "3 1 4\n", 337 | "4 1 5" 338 | ] 339 | }, 340 | "execution_count": 178, 341 | "metadata": {}, 342 | "output_type": "execute_result" 343 | } 344 | ], 345 | "source": [ 346 | "X.head()" 347 | ] 348 | }, 349 | { 350 | "cell_type": "code", 351 | "execution_count": 179, 352 | "metadata": {}, 353 | "outputs": [], 354 | "source": [ 355 | "X['Level1'] = X['Level']**2" 356 | ] 357 | }, 358 | { 359 | "cell_type": "code", 360 | "execution_count": 180, 361 | "metadata": {}, 362 | "outputs": [], 363 | "source": [ 364 | "X['Level2'] = X['Level']**3" 365 | ] 366 | }, 367 | { 368 | "cell_type": "code", 369 | "execution_count": 181, 370 | "metadata": {}, 371 | "outputs": [ 372 | { 373 | "data": { 374 | "text/html": [ 375 | "
\n", 376 | "\n", 389 | "\n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | "
00LevelLevel1Level2
01111
11248
213927
3141664
41525125
\n", 437 | "
" 438 | ], 439 | "text/plain": [ 440 | " 00 Level Level1 Level2\n", 441 | "0 1 1 1 1\n", 442 | "1 1 2 4 8\n", 443 | "2 1 3 9 27\n", 444 | "3 1 4 16 64\n", 445 | "4 1 5 25 125" 446 | ] 447 | }, 448 | "execution_count": 181, 449 | "metadata": {}, 450 | "output_type": "execute_result" 451 | } 452 | ], 453 | "source": [ 454 | "X.head()" 455 | ] 456 | }, 457 | { 458 | "cell_type": "code", 459 | "execution_count": 182, 460 | "metadata": {}, 461 | "outputs": [], 462 | "source": [ 463 | "X = X/X.max()" 464 | ] 465 | }, 466 | { 467 | "cell_type": "code", 468 | "execution_count": 183, 469 | "metadata": {}, 470 | "outputs": [ 471 | { 472 | "data": { 473 | "text/plain": [ 474 | "array([0, 0, 0, 0])" 475 | ] 476 | }, 477 | "execution_count": 183, 478 | "metadata": {}, 479 | "output_type": "execute_result" 480 | } 481 | ], 482 | "source": [ 483 | "import numpy as np\n", 484 | "theta = np.array([0]*len(X.columns))\n", 485 | "theta" 486 | ] 487 | }, 488 | { 489 | "cell_type": "code", 490 | "execution_count": null, 491 | "metadata": {}, 492 | "outputs": [], 493 | "source": [ 494 | "def hypothesis(X, theta):\n", 495 | " y1 = theta*X\n", 496 | " return np.sum(y1, axis=1)" 497 | ] 498 | }, 499 | { 500 | "cell_type": "code", 501 | "execution_count": 184, 502 | "metadata": {}, 503 | "outputs": [], 504 | "source": [ 505 | "def cost(X, y, theta):\n", 506 | " y1 = hypothesis(X, theta)\n", 507 | " return sum(np.sqrt((y1-y)**2))/(2*m) " 508 | ] 509 | }, 510 | { 511 | "cell_type": "code", 512 | "execution_count": 185, 513 | "metadata": {}, 514 | "outputs": [], 515 | "source": [ 516 | "def gradientDescent(X, y, theta, alpha, epoch):\n", 517 | " J=[]\n", 518 | " k=0\n", 519 | " while k < epoch:\n", 520 | " y1 = hypothesis(X, theta)\n", 521 | " for c in range(0, len(X.columns)):\n", 522 | " theta[c] = theta[c] - alpha*sum((y1-y)* X.iloc[:, c])/m\n", 523 | " j = cost(X, y, theta)\n", 524 | " J.append(j)\n", 525 | " k += 1\n", 526 | " return J, j, theta" 527 | ] 528 | }, 529 | { 530 | "cell_type": "code", 531 | "execution_count": 186, 532 | "metadata": {}, 533 | "outputs": [], 534 | "source": [ 535 | "theta = np.array([0.0]*len(X.columns))\n", 536 | "J, j, theta = gradientDescent(X, y, theta, 0.05, 700)" 537 | ] 538 | }, 539 | { 540 | "cell_type": "code", 541 | "execution_count": 187, 542 | "metadata": {}, 543 | "outputs": [ 544 | { 545 | "data": { 546 | "text/plain": [ 547 | "array([-38494.26294331, 66878.12378747, 287369.29171661, 460744.26580885])" 548 | ] 549 | }, 550 | "execution_count": 187, 551 | "metadata": {}, 552 | "output_type": "execute_result" 553 | } 554 | ], 555 | "source": [ 556 | "theta" 557 | ] 558 | }, 559 | { 560 | "cell_type": "code", 561 | "execution_count": 188, 562 | "metadata": {}, 563 | "outputs": [], 564 | "source": [ 565 | "y_hat = theta*X\n", 566 | "y_hat = np.sum(y_hat, axis=1)" 567 | ] 568 | }, 569 | { 570 | "cell_type": "code", 571 | "execution_count": 190, 572 | "metadata": {}, 573 | "outputs": [ 574 | { 575 | "data": { 576 | "image/png": "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\n", 577 | "text/plain": [ 578 | "
" 579 | ] 580 | }, 581 | "metadata": { 582 | "needs_background": "light" 583 | }, 584 | "output_type": "display_data" 585 | } 586 | ], 587 | "source": [ 588 | "%matplotlib inline\n", 589 | "import matplotlib.pyplot as plt\n", 590 | "plt.figure()\n", 591 | "plt.scatter(x=X['Level'],y= y) \n", 592 | "plt.scatter(x=X['Level'], y=y_hat)\n", 593 | "plt.show()" 594 | ] 595 | }, 596 | { 597 | "cell_type": "code", 598 | "execution_count": null, 599 | "metadata": {}, 600 | "outputs": [], 601 | "source": [] 602 | } 603 | ], 604 | "metadata": { 605 | "kernelspec": { 606 | "display_name": "Python 3", 607 | "language": "python", 608 | "name": "python3" 609 | }, 610 | "language_info": { 611 | "codemirror_mode": { 612 | "name": "ipython", 613 | "version": 3 614 | }, 615 | "file_extension": ".py", 616 | "mimetype": "text/x-python", 617 | "name": "python", 618 | "nbconvert_exporter": "python", 619 | "pygments_lexer": "ipython3", 620 | "version": "3.7.1" 621 | } 622 | }, 623 | "nbformat": 4, 624 | "nbformat_minor": 2 625 | } 626 | -------------------------------------------------------------------------------- /position_salaries.csv: -------------------------------------------------------------------------------- 1 | Position,Level,Salary 2 | Business Analyst,1,45000 3 | Junior Consultant,2,50000 4 | Senior Consultant,3,60000 5 | Manager,4,80000 6 | Country Manager,5,110000 7 | Region Manager,6,150000 8 | Partner,7,200000 9 | Senior Partner,8,300000 10 | C-level,9,500000 11 | CEO,10,1000000 12 | --------------------------------------------------------------------------------