├── .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 | " 0 | \n",
30 | " 1 | \n",
31 | " 2 | \n",
32 | "
\n",
33 | " \n",
34 | " \n",
35 | " \n",
36 | " 0 | \n",
37 | " 2104 | \n",
38 | " 3 | \n",
39 | " 399900 | \n",
40 | "
\n",
41 | " \n",
42 | " 1 | \n",
43 | " 1600 | \n",
44 | " 3 | \n",
45 | " 329900 | \n",
46 | "
\n",
47 | " \n",
48 | " 2 | \n",
49 | " 2400 | \n",
50 | " 3 | \n",
51 | " 369000 | \n",
52 | "
\n",
53 | " \n",
54 | " 3 | \n",
55 | " 1416 | \n",
56 | " 2 | \n",
57 | " 232000 | \n",
58 | "
\n",
59 | " \n",
60 | " 4 | \n",
61 | " 3000 | \n",
62 | " 4 | \n",
63 | " 539900 | \n",
64 | "
\n",
65 | " \n",
66 | "
\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 | " 00 | \n",
145 | " 0 | \n",
146 | " 1 | \n",
147 | " 2 | \n",
148 | "
\n",
149 | " \n",
150 | " \n",
151 | " \n",
152 | " 0 | \n",
153 | " 1 | \n",
154 | " 2104 | \n",
155 | " 3 | \n",
156 | " 399900 | \n",
157 | "
\n",
158 | " \n",
159 | " 1 | \n",
160 | " 1 | \n",
161 | " 1600 | \n",
162 | " 3 | \n",
163 | " 329900 | \n",
164 | "
\n",
165 | " \n",
166 | " 2 | \n",
167 | " 1 | \n",
168 | " 2400 | \n",
169 | " 3 | \n",
170 | " 369000 | \n",
171 | "
\n",
172 | " \n",
173 | " 3 | \n",
174 | " 1 | \n",
175 | " 1416 | \n",
176 | " 2 | \n",
177 | " 232000 | \n",
178 | "
\n",
179 | " \n",
180 | " 4 | \n",
181 | " 1 | \n",
182 | " 3000 | \n",
183 | " 4 | \n",
184 | " 539900 | \n",
185 | "
\n",
186 | " \n",
187 | "
\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 | " 00 | \n",
271 | " 0 | \n",
272 | " 1 | \n",
273 | "
\n",
274 | " \n",
275 | " \n",
276 | " \n",
277 | " 0 | \n",
278 | " 1 | \n",
279 | " 2104 | \n",
280 | " 3 | \n",
281 | "
\n",
282 | " \n",
283 | " 1 | \n",
284 | " 1 | \n",
285 | " 1600 | \n",
286 | " 3 | \n",
287 | "
\n",
288 | " \n",
289 | " 2 | \n",
290 | " 1 | \n",
291 | " 2400 | \n",
292 | " 3 | \n",
293 | "
\n",
294 | " \n",
295 | " 3 | \n",
296 | " 1 | \n",
297 | " 1416 | \n",
298 | " 2 | \n",
299 | "
\n",
300 | " \n",
301 | " 4 | \n",
302 | " 1 | \n",
303 | " 3000 | \n",
304 | " 4 | \n",
305 | "
\n",
306 | " \n",
307 | "
\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 | " 00 | \n",
366 | " 0 | \n",
367 | " 1 | \n",
368 | "
\n",
369 | " \n",
370 | " \n",
371 | " \n",
372 | " 0 | \n",
373 | " 1 | \n",
374 | " 0.469853 | \n",
375 | " 0.6 | \n",
376 | "
\n",
377 | " \n",
378 | " 1 | \n",
379 | " 1 | \n",
380 | " 0.357302 | \n",
381 | " 0.6 | \n",
382 | "
\n",
383 | " \n",
384 | " 2 | \n",
385 | " 1 | \n",
386 | " 0.535954 | \n",
387 | " 0.6 | \n",
388 | "
\n",
389 | " \n",
390 | " 3 | \n",
391 | " 1 | \n",
392 | " 0.316213 | \n",
393 | " 0.4 | \n",
394 | "
\n",
395 | " \n",
396 | " 4 | \n",
397 | " 1 | \n",
398 | " 0.669942 | \n",
399 | " 0.8 | \n",
400 | "
\n",
401 | " \n",
402 | "
\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": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEDCAYAAAAlRP8qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAZ/klEQVR4nO3df7RV5X3n8fcnXNBEMEq8OoowF38lkvoDc1MhTFKqQQ1kJXSWGU2NUZuRxdTpktG1qozOuJzoiplMqJNxUovRJmmosVVKrCZaVqpxaZXMRREkFwMoJUQmXGsrlk5s0e/8cfY1h8P5sc85+/za5/Na6yzO3fs5+3733fDhuc9+9t6KCMzMrPe9q9MFmJlZNhzoZmY54UA3M8sJB7qZWU440M3McsKBbmaWE10b6JK+ImmLpI2S/kLSERXa7ZC0SdIGSSNFy+9Llm1I2mxIlg9J+n9F6+6so6b/Jekfm987M7PsDXS6AABJ84HLI+LyosVrgeURsV/Sl4HlwHUVNvGbEfFq8YKIuKho+18FXi9avT0izqyzxmGg7H8qZmbdoGt76BHxVxGxP/nyGeD4RrYjScC/A+5N0fY8SU9LelbSn0uanCyfAHwF+P1GajAza4euDfQSvwP8oMK6AP5K0npJS8qs/yjwi4jYWrRspqTnJP1I0kcBJB0F3Ah8PCLOAkaAa5L2/xF4MCJ2Z7EzZmat0NEhF0nrgEOAycDU8XFu4LqIeDRpcwOwH1hVYTPzIuIVSUcDayVtiYgnitZ/lgN757uBGRHxd5I+BKyR9EFgDjALeKrQqWcS8LSk44DPAPOb32Mzs9bpaKBHxNlQcQwdSZcBnwTOjQo3nYmIV5I/90j6C+DXgSeSzw8A/xb4UFH7N4E3k/frJW0HTgEErI2Iz5bUsAg4CdiWBP17JG2LiJOa2nkzs4x17ZCLpAsonAT9VET8U4U2h0maMv4eOA94oajJx4EtEbGr6DODyZg4kk4ATgZeojBOP0/SScm690g6JSIejoh/FRFDETEE/JPD3My6UdcGOnAHMIXCMMo70wslHSfp+0mbY4AnJT0P/Bh4OCIeKdrGxRx8MvRjwMbkM/cDSyPitYgYAy4H7pW0kULAf6BF+2Zmljn59rlmZvnQzT10MzOrQ8dOih511FExNDTUqW9vZtaT1q9f/2pEDJZb17FAHxoaYmRkpHZDMzN7h6S/rbSu5pCLpEMl/VjS85I2S7q5TJtDknunbJO0TtJQcyWbmVm90oyhvwmcExFnAGcCF0iaU9LmC8DfJ9P5/gD4crZlmplZLTUDPQrG7zA4MXmVTo35NPCt5P39wLnJPVTMzKxNUs1ykTQhuSx/D4WrKdeVNJkG/AwguaHW68D7ymxniaQRSSNjY2PNVW5mZgdIFegR8VZyu9njgV+X9GslTcr1xg+a4B4RKyNiOCKGBwfLnqQ1M7MG1TUPPSL+AXgcuKBk1S5gOrxz/5T3Aq9lUJ+ZmaWUZpbL4PjTgiS9m+T+KCXNHgQuS95fCPx1pZtpmZlZa6SZh34s8K3khlbvAv4sIh6S9N+AkYh4ELgb+BNJ2yj0zC9uRbGX3PU0T20/sOM/78SprLpybiu+nZlZT+nYvVyGh4ejnguLyoX5OIe6mfULSesjYrjcup65l0ulMK+1zsysX/RMoJuZWXUOdDOznOiZQJ934tSq62de/3CbKjEz6049E+i1Tnp6jqSZ9bueCXQzM6suV4F+9q1rO12CmVnH9FSg337RmVXX/+KNf25TJWZm3aenAn3x7GmdLsHMrGv1VKCnceOaTZ0uwcysI3ou0I+ZMqnq+u88s7NNlZiZdZeeC/R1NyzodAlmZl2p5wLdzMzK68lAH6jxtNIhXzVqZn2oJwN925cWdboEM7Ou05OBbmZmB0vzCLrpkh6TNCpps6Sry7R5r6S/lPR80uaK1pSbnoddzKzfpOmh7weujYhTgTnAVZJmlbS5CvhJRJwBzAe+Kqn6/MIm7bjNwy5mZsVqBnpE7I6IZ5P3bwCjQOklmwFMkSRgMoXniu7PuFYzM6uirjF0SUPAbGBdyao7gFOBV4BNwNUR8XaZzy+RNCJpZGxsrKGC6+F7pJtZP0kd6JImAw8AyyJib8nq84ENwHHAmcAdkg4v3UZErIyI4YgYHhwcbKLsglo36/I90s2sn6QKdEkTKYT5qohYXabJFcDqKNgGvAx8ILsyy/PNuszMfiXNLBcBdwOjEbGiQrOdwLlJ+2OA9wMvZVVkM05a7mEXM+sPaXro84BLgXMkbUheCyUtlbQ0afNF4COSNgE/BK6LiFdbVPMBPjdnRtX1+z3uYmZ9YqBWg4h4Eqh6sX1EvAKcl1VR9bhl8Wm+w6KZGX1ypaiHXcysH+Qi0OedOLXqeg+7mFk/yEWgr7pybqdLMDPruFwEehq+yMjM8i43gV5r2MWjLmaWd7kJdA+7mFm/y02gp+Fb6ppZnuUq0GtdZGRmlme5CvRbFp/W6RLMzDomV4GehoddzCyvchfotW6pa2aWV7kL9DS31F2w4vHWF2Jm1ma5C/Q0tu7Z1+kSzMwyl8tA9wOkzawf5TLQ0/jADd/vdAlmZpnKbaAPVL2DO/zyLd8MwMzyJc0j6KZLekzSqKTNkq6u0G5+8jSjzZJ+lH2p9dn2JQ+7mFl/SdND3w9cGxGnAnOAqyTNKm4g6Qjg68CnIuKDwGcyr7QFPCfdzPKkZqBHxO6IeDZ5/wYwCpTODfxtYHVE7Eza7cm60EYcM2VSp0swM2ubusbQJQ0Bs4F1JatOAY6U9Lik9ZI+X+HzSySNSBoZGxtrpN66rLthQc02N67Z1PI6zMzaIXWgS5oMPAAsi4i9JasHgA8Bi4Dzgf8i6ZTSbUTEyogYjojhwcHBJsrOjh8wbWZ5kSrQJU2kEOarImJ1mSa7gEciYl9EvAo8AZyRXZmN8x0YzaxfpJnlIuBuYDQiVlRo9j3go5IGJL0HOJvCWHvHpbkDo+ekm1keDKRoMw+4FNgkaUOy7D8DMwAi4s6IGJX0CLAReBv4RkS80IqCW8Fz0s0sD2oGekQ8CdS4TAci4ivAV7IoKms7blvkKYpmlnu5vVK0Xg58M+t1fRPonpNuZnnXN4GeZk766Tc90oZKzMxao28CPY29b77V6RLMzBrWV4Ge5j7pa577eRsqMTPLXl8FehrL7ttQu5GZWRfqu0A/dELNGZhmZj2p7wJ9y60La7aZ6SmMZtaD+i7Q0/B1o2bWi/oy0NOcHL3krqfbUImZWXb6MtDTeGr7a50uwcysLn0b6L5y1Mzypm8DPc2Vo76/i5n1kr4NdDOzvOnrQE9zcvSk5e6lm1lv6OtAT2O/5zCaWY9I8wi66ZIekzQqabOkq6u0/bCktyRdmG2ZrZPmmaMLVjze+kLMzJqUpoe+H7g2Ik4F5gBXSZpV2kjSBODLwKPZlthaaZ45unXPvjZUYmbWnJqBHhG7I+LZ5P0bFB7+PK1M098DHgD2ZFphGxx+yISabW5cs6kNlZiZNa6uMXRJQ8BsYF3J8mnAbwF31vj8EkkjkkbGxsbqq7SFNt58Qc0233lmZxsqMTNrXOpAlzSZQg98WUTsLVl9O3BdRFR9QkRErIyI4YgYHhwcrL9aMzOrKFWgS5pIIcxXRcTqMk2Gge9K2gFcCHxd0uLMqmyDNFMYfaGRmXWzgVoNJAm4GxiNiBXl2kTEzKL23wQeiog1WRVpZma1pemhzwMuBc6RtCF5LZS0VNLSFtfXVu6lm1kvq9lDj4gngdSP+YmIy5spyMzMGuMrRUvcftGZNdu4l25m3ciBXmLx7HJT7M3Mup8DvYx5J06t2cbPHTWzbuNAL2PVlXNrtvE9u8ys2zjQK0jzRCP30s2smzjQK0jzRCP30s2smzjQqzh0Qu3Zmu6lm1m3cKBXseXWhTXbuJduZt3CgV7DQIpLqjwv3cy6gQO9hm1fqn07ADOzbuBAT8G9dDPrBQ70FNxLN7Ne4EBPKc2MF/fSzayTHOgppZnxYmbWSQ70OqR5mLR76WbWKQ70OqR5mDTAmud+3uJKzMwOVjPQJU2X9JikUUmbJV1dps0lkjYmr7+RdEZryu28k48+rGabZfdtaEMlZmYHStND3w9cGxGnAnOAqyTNKmnzMvAbEXE68EVgZbZldo+118xP1W7BisdbWoeZWamagR4RuyPi2eT9G8AoMK2kzd9ExN8nXz4DHJ91od3kc3Nm1Gyzdc++NlRiZvYrdY2hSxoCZgPrqjT7AvCDCp9fImlE0sjY2Fg937qr3LL4tFTtfOMuM2un1IEuaTLwALAsIvZWaPObFAL9unLrI2JlRAxHxPDg4GAj9XaNHbfVvtjIN+4ys3ZKFeiSJlII81URsbpCm9OBbwCfjoi/y67E3uZpjGbWLmlmuQi4GxiNiBUV2swAVgOXRsRPsy2xe6XppYOnMZpZe6Tpoc8DLgXOkbQheS2UtFTS0qTNfwXeB3w9WT/SqoJ7kacxmlk7KKIzI73Dw8MxMpKP3E8zrHLoBPn2AWbWNEnrI2K43DpfKZqBNA+U/uVbPkVqZq3lQM9AmgdKg0+QmllrOdAz4hOkZtZpDvQ28wlSM2sVB3qG0vbSPfRiZq3gQM9Ymnumm5m1ggM9Y2nvme5eupllzYHeAmmHXnzzLjPLkgO9gzwz3cyy5EBvEZ8gNbN2c6C3UJoHYYCHXswsGw70Fkr7IAwPvZhZFhzoLeahFzNrFwd6G8w7cWqqdg51M2uGA70NVl05N3Vb3+vFzBrlQG+TtEMvvteLmTUqzSPopkt6TNKopM2Sri7TRpK+JmmbpI2SzmpNub0t7awXD72YWSPS9ND3A9dGxKnAHOAqSbNK2nwCODl5LQH+MNMqcyLtrBeAk5Y71M2sPjUDPSJ2R8Szyfs3gFFgWkmzTwPfjoJngCMkHZt5tTmQduhlv+cymlmd6hpDlzQEzAbWlayaBvys6OtdHBz6SFoiaUTSyNjYWH2V5oinMppZK6QOdEmTgQeAZRGxt3R1mY8c1MeMiJURMRwRw4ODg/VVmjOHTij3IzuYQ93M0koV6JImUgjzVRGxukyTXcD0oq+PB15pvrz82nLrwtRtHepmlkaaWS4C7gZGI2JFhWYPAp9PZrvMAV6PiN0Z1plLaYdeAC656+kWVmJmeZCmhz4PuBQ4R9KG5LVQ0lJJS5M23wdeArYBdwG/25py8ydtqD+1/bUWV2JmvW6gVoOIeJLyY+TFbQK4Kqui+s2A0s1qGbr+4bp69WbWX3ylaBfY9qX0Ie3xdDOrxIHeJerpeTvUzawcB3oXcaibWTMc6F3m5KMPS93WM1/MrJgDvcusvWZ+6rae+WJmxRzoXchDL2bWCAd6l3Kom1m9HOhdzKFuZvVwoHc5h7qZpeVA7wG3X3Rm6rYOdbP+5UDvAYtnT+PwQyakbu9QN+tPDvQesfHmC+pq71A36z8O9B5S7425HOpm/cWB3mMc6mZWiQO9BznUzawcB3qPcqibWak0j6C7R9IeSS9UWP9eSX8p6XlJmyVdkX2ZVo5D3cyKpemhfxOoNsXiKuAnEXEGMB/4qqRJzZdmaTjUzWxczUCPiCeAarf1C2BK8jDpyUnb/dmUZ2k41M0MshlDvwM4FXgF2ARcHRFvl2soaYmkEUkjY2NjGXxrG9dIqJ9+0yMtqsbMOiGLQD8f2AAcB5wJ3CHp8HINI2JlRAxHxPDg4GAG39qK1Rvqe998y711sxzJItCvAFZHwTbgZeADGWzXGlBvqIOHYMzyIotA3wmcCyDpGOD9wEsZbNca5FA3609ppi3eCzwNvF/SLklfkLRU0tKkyReBj0jaBPwQuC4iXm1dyZZGo6F+45pNLajGzNpBEdGRbzw8PBwjIyMd+d79ZMGKx9m6Z1/dn2vkPwQzaz1J6yNiuNw6Xymac2uvme8hGLM+4UDvEx6CMcs/B3ofaSTUv/PMTvfWzXqEA73PNDo27lA3634O9D6047ZFdT3SbtzQ9Q872M26mAO9T228+QL31s1yxoHe55oJdQe7WXdxoFtTc84d6mbdwxcW2QGaCWhfjGTWer6wyFJrtrd+0nL32M06xYFuB9lx2yKOmdLYQ6f2h4dhzDrFQy5WVbPh7GEYs2x5yMUa1uic9XGeDWPWPu6hW2pZBLN77GbNcQ/dMrHjtkV8bs6MprbhHrtZ67iHbg3JKpTdYzerT1M9dEn3SNoj6YUqbeZL2iBps6QfNVOs9YYdty3KJIzdYzfLTpohl28CF1RaKekI4OvApyLig8BnsinNekEWwzDgYDfLQs1Aj4gngNeqNPltYHVE7Eza78moNusRtyw+jR23LUIZbMvBbta4gQy2cQowUdLjwBTgf0bEt8s1lLQEWAIwY0bzvTrrLi8nQzBZBHLxNjzObpZOqpOikoaAhyLi18qsuwMYBs4F3g08DSyKiJ9W26ZPiuZf1j1tB7tZ9ZOiWfTQdwGvRsQ+YJ+kJ4AzgKqBbvm3I8Mee+l2HO5mB8si0L8H3CFpAJgEnA38QQbbtZzIOtiLt3Xy0Yex9pr5mW3XrJfVDHRJ9wLzgaMk7QJuAiYCRMSdETEq6RFgI/A28I2IqDjF0fpXK4J9655972zPvXbrd76wyDpm5vUP06q/fQ53y6tqY+gOdOu4Nc/9nGX3bWjZ9j83Zwa3LD6tZds3aycHuvWMdsxBd+/depkD3XrO6Tc9wt4332r593G4W69xoFtPa+eVow5463YOdMuNdt8WwAFv3caBbrlz45pNfOeZnW3/vvNOnMqqK+e2/fuajXOgW651KtzHuRdv7eRAt77SDXdrdMhbqzjQrW91Q7gXc9BbsxzoZnR+aKYaB72l5UA3K6OVtx7IksPeijnQzVLolYAv5cDvLw50swZ12xh8ow4/ZAIbb674aGDrIQ50s4y065YEneZef/dyoJu10CV3Pc1T26s9R70/HDpBbLl1YafLyD0HulkH5GW4phP8G0JlTQW6pHuATwJ7yj0kuqjdh4FngIsi4v5aRTnQrV/1y7BNr+i1/zyaDfSPAf8IfLtSoEuaAKwFfgnc40A3a8zZt67lF2/8c6fLsDaq9z+UaoFe85miEfGEpKEazX4PeAD4cF2VmdkB1t2woOp6B37+DF3/cGa/JdQM9FokTQN+CziHGoEuaQmwBGDGjBnNfmuzvlMr8Md5/L4/NR3owO3AdRHxlqSqDSNiJbASCkMuGXxvMyujnh6fwz8/sgj0YeC7SZgfBSyUtD8i1mSwbTNrsUZ/3fd/BN2n6UCPiJnj7yV9E3jIYW6Wf1mN+/o/huzUDHRJ9wLzgaMk7QJuAiYCRMSdLa3OzHKvndMGF6x4nK179rXt+6WR5f77wiIzsx5Sbdriu9pdjJmZtYYD3cwsJxzoZmY54UA3M8sJB7qZWU440M3McsKBbmaWEx2bhy5pDPjbBj9+FPBqhuX0Au9zf/A+94dm9vlfR8RguRUdC/RmSBqpNLE+r7zP/cH73B9atc8ecjEzywkHuplZTvRqoK/sdAEd4H3uD97n/tCSfe7JMXQzMztYr/bQzcyshAPdzCwnei7QJV0g6UVJ2yRd3+l6GiVpuqTHJI1K2izp6mT5VElrJW1N/jwyWS5JX0v2e6Oks4q2dVnSfqukyzq1T2lJmiDpOUkPJV/PlLQuqf8+SZOS5YckX29L1g8VbWN5svxFSed3Zk/SkXSEpPslbUmO99y8H2dJ/yn5e/2CpHslHZq34yzpHkl7JL1QtCyz4yrpQ5I2JZ/5mmo9tBkgInrmBUwAtgMnAJOA54FZna6rwX05FjgreT8F+CkwC/jvwPXJ8uuBLyfvFwI/AATMAdYly6cCLyV/Hpm8P7LT+1dj368B/pTC4woB/gy4OHl/J/Afkve/C9yZvL8YuC95Pys59ocAM5O/ExM6vV9V9vdbwL9P3k8CjsjzcQamAS8D7y46vpfn7TgDHwPOAl4oWpbZcQV+DMxNPvMD4BM1a+r0D6XOH+Bc4NGir5cDyztdV0b79j1gAfAicGyy7FjgxeT9HwGfLWr/YrL+s8AfFS0/oF23vYDjgR8C5wAPJX9ZXwUGSo8x8CgwN3k/kLRT6XEvbtdtL+DwJNxUsjy3xzkJ9J8lITWQHOfz83icgaGSQM/kuCbrthQtP6BdpVevDbmM/0UZtytZ1tOSXzFnA+uAYyJiN0Dy59FJs0r73ms/k9uB3wfeTr5+H/APEbE/+bq4/nf2LVn/etK+l/b5BGAM+ONkmOkbkg4jx8c5In4O/A9gJ7CbwnFbT76P87isjuu05H3p8qp6LdDLjSH19LxLSZOBB4BlEbG3WtMyy6LK8q4j6ZPAnohYX7y4TNOosa5n9plCj/Ms4A8jYjawj8Kv4pX0/D4n48afpjBMchxwGPCJMk3zdJxrqXcfG9r3Xgv0XcD0oq+PB17pUC1NkzSRQpiviojVyeJfSDo2WX8ssCdZXmnfe+lnMg/4lKQdwHcpDLvcDhwhaSBpU1z/O/uWrH8v8Bq9tc+7gF0RsS75+n4KAZ/n4/xx4OWIGIuIfwFWAx8h38d5XFbHdVfyvnR5Vb0W6P8HODk5Wz6JwgmUBztcU0OSM9Z3A6MRsaJo1YPA+JnuyyiMrY8v/3xytnwO8HryK92jwHmSjkx6Rucly7pORCyPiOMjYojCsfvriLgEeAy4MGlWus/jP4sLk/aRLL84mR0xEziZwgmkrhMR/xf4maT3J4vOBX5Cjo8zhaGWOZLek/w9H9/n3B7nIpkc12TdG5LmJD/Dzxdtq7JOn1Ro4CTEQgozQrYDN3S6nib2499Q+BVqI7AheS2kMHb4Q2Br8ufUpL2A/53s9yZguGhbvwNsS15XdHrfUu7/fH41y+UECv9QtwF/DhySLD80+Xpbsv6Eos/fkPwsXiTF2f8O7+uZwEhyrNdQmM2Q6+MM3AxsAV4A/oTCTJVcHWfgXgrnCP6FQo/6C1keV2A4+fltB+6g5MR6uZcv/Tczy4leG3IxM7MKHOhmZjnhQDczywkHuplZTjjQzcxywoFuZpYTDnQzs5z4/0Jw0IYUckpQAAAAAElFTkSuQmCC\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 | " 0 | \n",
40 | " 1 | \n",
41 | "
\n",
42 | " \n",
43 | " \n",
44 | " \n",
45 | " 0 | \n",
46 | " 6.1101 | \n",
47 | " 17.5920 | \n",
48 | "
\n",
49 | " \n",
50 | " 1 | \n",
51 | " 5.5277 | \n",
52 | " 9.1302 | \n",
53 | "
\n",
54 | " \n",
55 | " 2 | \n",
56 | " 8.5186 | \n",
57 | " 13.6620 | \n",
58 | "
\n",
59 | " \n",
60 | " 3 | \n",
61 | " 7.0032 | \n",
62 | " 11.8540 | \n",
63 | "
\n",
64 | " \n",
65 | " 4 | \n",
66 | " 5.8598 | \n",
67 | " 6.8233 | \n",
68 | "
\n",
69 | " \n",
70 | "
\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": "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\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 | " X | \n",
308 | " Y | \n",
309 | "
\n",
310 | " \n",
311 | " \n",
312 | " \n",
313 | " 0 | \n",
314 | " 7.6 | \n",
315 | " 157 | \n",
316 | "
\n",
317 | " \n",
318 | " 1 | \n",
319 | " 7.1 | \n",
320 | " 174 | \n",
321 | "
\n",
322 | " \n",
323 | " 2 | \n",
324 | " 8.2 | \n",
325 | " 175 | \n",
326 | "
\n",
327 | " \n",
328 | " 3 | \n",
329 | " 7.5 | \n",
330 | " 188 | \n",
331 | "
\n",
332 | " \n",
333 | " 4 | \n",
334 | " 7.4 | \n",
335 | " 171 | \n",
336 | "
\n",
337 | " \n",
338 | " 5 | \n",
339 | " 7.8 | \n",
340 | " 143 | \n",
341 | "
\n",
342 | " \n",
343 | " 6 | \n",
344 | " 7.3 | \n",
345 | " 217 | \n",
346 | "
\n",
347 | " \n",
348 | " 7 | \n",
349 | " 8.0 | \n",
350 | " 190 | \n",
351 | "
\n",
352 | " \n",
353 | " 8 | \n",
354 | " 7.1 | \n",
355 | " 142 | \n",
356 | "
\n",
357 | " \n",
358 | " 9 | \n",
359 | " 7.5 | \n",
360 | " 190 | \n",
361 | "
\n",
362 | " \n",
363 | " 10 | \n",
364 | " 8.1 | \n",
365 | " 215 | \n",
366 | "
\n",
367 | " \n",
368 | " 11 | \n",
369 | " 7.0 | \n",
370 | " 199 | \n",
371 | "
\n",
372 | " \n",
373 | " 12 | \n",
374 | " 7.3 | \n",
375 | " 262 | \n",
376 | "
\n",
377 | " \n",
378 | " 13 | \n",
379 | " 7.8 | \n",
380 | " 105 | \n",
381 | "
\n",
382 | " \n",
383 | " 14 | \n",
384 | " 7.3 | \n",
385 | " 121 | \n",
386 | "
\n",
387 | " \n",
388 | " 15 | \n",
389 | " 8.0 | \n",
390 | " 81 | \n",
391 | "
\n",
392 | " \n",
393 | " 16 | \n",
394 | " 8.5 | \n",
395 | " 82 | \n",
396 | "
\n",
397 | " \n",
398 | " 17 | \n",
399 | " 7.1 | \n",
400 | " 210 | \n",
401 | "
\n",
402 | " \n",
403 | " 18 | \n",
404 | " 8.2 | \n",
405 | " 202 | \n",
406 | "
\n",
407 | " \n",
408 | " 19 | \n",
409 | " 7.9 | \n",
410 | " 155 | \n",
411 | "
\n",
412 | " \n",
413 | " 20 | \n",
414 | " 7.6 | \n",
415 | " 157 | \n",
416 | "
\n",
417 | " \n",
418 | " 21 | \n",
419 | " 8.8 | \n",
420 | " 147 | \n",
421 | "
\n",
422 | " \n",
423 | " 22 | \n",
424 | " 7.2 | \n",
425 | " 133 | \n",
426 | "
\n",
427 | " \n",
428 | " 23 | \n",
429 | " 7.9 | \n",
430 | " 53 | \n",
431 | "
\n",
432 | " \n",
433 | " 24 | \n",
434 | " 8.1 | \n",
435 | " 56 | \n",
436 | "
\n",
437 | " \n",
438 | " 25 | \n",
439 | " 7.7 | \n",
440 | " 113 | \n",
441 | "
\n",
442 | " \n",
443 | " 26 | \n",
444 | " 8.4 | \n",
445 | " 35 | \n",
446 | "
\n",
447 | " \n",
448 | " 27 | \n",
449 | " 7.4 | \n",
450 | " 125 | \n",
451 | "
\n",
452 | " \n",
453 | " 28 | \n",
454 | " 7.3 | \n",
455 | " 76 | \n",
456 | "
\n",
457 | " \n",
458 | " 29 | \n",
459 | " 8.5 | \n",
460 | " 48 | \n",
461 | "
\n",
462 | " \n",
463 | " 30 | \n",
464 | " 7.8 | \n",
465 | " 147 | \n",
466 | "
\n",
467 | " \n",
468 | " 31 | \n",
469 | " 6.7 | \n",
470 | " 117 | \n",
471 | "
\n",
472 | " \n",
473 | " 32 | \n",
474 | " 7.1 | \n",
475 | " 182 | \n",
476 | "
\n",
477 | " \n",
478 | " 33 | \n",
479 | " 7.3 | \n",
480 | " 87 | \n",
481 | "
\n",
482 | " \n",
483 | "
\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 | " 0 | \n",
40 | " 1 | \n",
41 | "
\n",
42 | " \n",
43 | " \n",
44 | " \n",
45 | " 0 | \n",
46 | " 6.1101 | \n",
47 | " 17.5920 | \n",
48 | "
\n",
49 | " \n",
50 | " 1 | \n",
51 | " 5.5277 | \n",
52 | " 9.1302 | \n",
53 | "
\n",
54 | " \n",
55 | " 2 | \n",
56 | " 8.5186 | \n",
57 | " 13.6620 | \n",
58 | "
\n",
59 | " \n",
60 | " 3 | \n",
61 | " 7.0032 | \n",
62 | " 11.8540 | \n",
63 | "
\n",
64 | " \n",
65 | " 4 | \n",
66 | " 5.8598 | \n",
67 | " 6.8233 | \n",
68 | "
\n",
69 | " \n",
70 | "
\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": 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 | " 0 | \n",
41 | " 1 | \n",
42 | " 2 | \n",
43 | "
\n",
44 | " \n",
45 | " \n",
46 | " \n",
47 | " 0 | \n",
48 | " 34.623660 | \n",
49 | " 78.024693 | \n",
50 | " 0 | \n",
51 | "
\n",
52 | " \n",
53 | " 1 | \n",
54 | " 30.286711 | \n",
55 | " 43.894998 | \n",
56 | " 0 | \n",
57 | "
\n",
58 | " \n",
59 | " 2 | \n",
60 | " 35.847409 | \n",
61 | " 72.902198 | \n",
62 | " 0 | \n",
63 | "
\n",
64 | " \n",
65 | " 3 | \n",
66 | " 60.182599 | \n",
67 | " 86.308552 | \n",
68 | " 1 | \n",
69 | "
\n",
70 | " \n",
71 | " 4 | \n",
72 | " 79.032736 | \n",
73 | " 75.344376 | \n",
74 | " 1 | \n",
75 | "
\n",
76 | " \n",
77 | "
\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 | " 0 | \n",
126 | " 1 | \n",
127 | "
\n",
128 | " \n",
129 | " \n",
130 | " \n",
131 | " 0 | \n",
132 | " 34.623660 | \n",
133 | " 78.024693 | \n",
134 | "
\n",
135 | " \n",
136 | " 1 | \n",
137 | " 30.286711 | \n",
138 | " 43.894998 | \n",
139 | "
\n",
140 | " \n",
141 | " 2 | \n",
142 | " 35.847409 | \n",
143 | " 72.902198 | \n",
144 | "
\n",
145 | " \n",
146 | "
\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 | " Position | \n",
30 | " Level | \n",
31 | " Salary | \n",
32 | "
\n",
33 | " \n",
34 | " \n",
35 | " \n",
36 | " 0 | \n",
37 | " Business Analyst | \n",
38 | " 1 | \n",
39 | " 45000 | \n",
40 | "
\n",
41 | " \n",
42 | " 1 | \n",
43 | " Junior Consultant | \n",
44 | " 2 | \n",
45 | " 50000 | \n",
46 | "
\n",
47 | " \n",
48 | " 2 | \n",
49 | " Senior Consultant | \n",
50 | " 3 | \n",
51 | " 60000 | \n",
52 | "
\n",
53 | " \n",
54 | " 3 | \n",
55 | " Manager | \n",
56 | " 4 | \n",
57 | " 80000 | \n",
58 | "
\n",
59 | " \n",
60 | " 4 | \n",
61 | " Country Manager | \n",
62 | " 5 | \n",
63 | " 110000 | \n",
64 | "
\n",
65 | " \n",
66 | "
\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 | " 00 | \n",
163 | " Position | \n",
164 | " Level | \n",
165 | " Salary | \n",
166 | "
\n",
167 | " \n",
168 | " \n",
169 | " \n",
170 | " 0 | \n",
171 | " 1 | \n",
172 | " Business Analyst | \n",
173 | " 1 | \n",
174 | " 45000 | \n",
175 | "
\n",
176 | " \n",
177 | " 1 | \n",
178 | " 1 | \n",
179 | " Junior Consultant | \n",
180 | " 2 | \n",
181 | " 50000 | \n",
182 | "
\n",
183 | " \n",
184 | " 2 | \n",
185 | " 1 | \n",
186 | " Senior Consultant | \n",
187 | " 3 | \n",
188 | " 60000 | \n",
189 | "
\n",
190 | " \n",
191 | " 3 | \n",
192 | " 1 | \n",
193 | " Manager | \n",
194 | " 4 | \n",
195 | " 80000 | \n",
196 | "
\n",
197 | " \n",
198 | " 4 | \n",
199 | " 1 | \n",
200 | " Country Manager | \n",
201 | " 5 | \n",
202 | " 110000 | \n",
203 | "
\n",
204 | " \n",
205 | "
\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 | " 00 | \n",
298 | " Level | \n",
299 | "
\n",
300 | " \n",
301 | " \n",
302 | " \n",
303 | " 0 | \n",
304 | " 1 | \n",
305 | " 1 | \n",
306 | "
\n",
307 | " \n",
308 | " 1 | \n",
309 | " 1 | \n",
310 | " 2 | \n",
311 | "
\n",
312 | " \n",
313 | " 2 | \n",
314 | " 1 | \n",
315 | " 3 | \n",
316 | "
\n",
317 | " \n",
318 | " 3 | \n",
319 | " 1 | \n",
320 | " 4 | \n",
321 | "
\n",
322 | " \n",
323 | " 4 | \n",
324 | " 1 | \n",
325 | " 5 | \n",
326 | "
\n",
327 | " \n",
328 | "
\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 | " 00 | \n",
394 | " Level | \n",
395 | " Level1 | \n",
396 | " Level2 | \n",
397 | "
\n",
398 | " \n",
399 | " \n",
400 | " \n",
401 | " 0 | \n",
402 | " 1 | \n",
403 | " 1 | \n",
404 | " 1 | \n",
405 | " 1 | \n",
406 | "
\n",
407 | " \n",
408 | " 1 | \n",
409 | " 1 | \n",
410 | " 2 | \n",
411 | " 4 | \n",
412 | " 8 | \n",
413 | "
\n",
414 | " \n",
415 | " 2 | \n",
416 | " 1 | \n",
417 | " 3 | \n",
418 | " 9 | \n",
419 | " 27 | \n",
420 | "
\n",
421 | " \n",
422 | " 3 | \n",
423 | " 1 | \n",
424 | " 4 | \n",
425 | " 16 | \n",
426 | " 64 | \n",
427 | "
\n",
428 | " \n",
429 | " 4 | \n",
430 | " 1 | \n",
431 | " 5 | \n",
432 | " 25 | \n",
433 | " 125 | \n",
434 | "
\n",
435 | " \n",
436 | "
\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 |
--------------------------------------------------------------------------------