diff --git a/2-Regression/3-Linear/solution/notebook.ipynb b/2-Regression/3-Linear/solution/notebook.ipynb index 23943df4..a390d90f 100644 --- a/2-Regression/3-Linear/solution/notebook.ipynb +++ b/2-Regression/3-Linear/solution/notebook.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 167, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -214,7 +214,7 @@ "[5 rows x 26 columns]" ] }, - "execution_count": 167, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -231,7 +231,7 @@ }, { "cell_type": "code", - "execution_count": 168, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -341,7 +341,7 @@ "74 15.0 13.636364 " ] }, - "execution_count": 168, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -414,29 +414,27 @@ }, { "cell_type": "code", - "execution_count": 170, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 170, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAshElEQVR4nO3dfZyU5Xno8d+1y7IgiwLLunJkV2xWSangRreKIVoVQ03qEdKon74YTKMlzan9pCatmLTHGtvaiE3M6UlOq4k59SVNJJiA9ZgIEqxRwThQXhQ0bAOyGFhwBd01sO7Ldf6YZ5aZ3ZndmWfuZ+aemev7+Sw7c+8z19zP7HDtM/erqCrGGGMqR1WxK2CMMaawLPEbY0yFscRvjDEVxhK/McZUGEv8xhhTYcYVuwLZmD59us6aNavY1TDGmJKyefPmN1W1YXh5SST+WbNmEYvFil0NY4wpKSLyerpya+oxxpgKY4nfGGMqjCV+Y4ypMJb4jTGmwljiN8aYCmOJ32TU1dPLto6jdPX0FrsqxhiHSmI4pym8NVvfYPlj26mpqqJvcJAVH5/H1a2nF7taxhgH7IrfjNDV08vyx7ZzvG+Q7t5+jvcNcutj2+3K35gyYYnfjLD/yDFqqlLfGjVVVew/cqxINTLGuGSJ34wwc+pE+gYHU8r6BgeZOXVikWpkjHHJEr8Zob6ulhUfn8eEmiom145jQk0VKz4+j/q62rziWmexMX6wzl2T1tWtp7OgZTr7jxxj5tSJeSd96yw2xh+RJn4R2Qt0AwNAv6q2icg04FFgFrAXuE5Vj0RZDxNOfV1t3gkfUjuLjxNvQrr1se0saJnuJL4xJjeFaOq5TFVbVbUtuH8bsF5VzwLWB/dNGbPOYmP8Uow2/sXAg8HtB4ElRaiDKSDrLDbGL1EnfgXWishmEVkWlDWq6gGA4PupEdfBFFlUncXGmHCi7txdoKq/FJFTgXUi8mq2Dwz+UCwDaG5ujqp+pkBcdxYbY8KL9IpfVX8ZfD8E/BC4AOgUkRkAwfdDGR57v6q2qWpbQ8OIncNMCaqvq+XcpimW9I0pssgSv4hMEpHJidvAIuBl4HHghuCwG4A1UdXBGGPMSFE29TQCPxSRxPP8m6r+WEReAlaKyI3APuDaCOtgjDFmmMgSv6r+Ajg3TXkXsDCq5zXGGDM6W7LBGGMqjCX+InK9do3v8YwxfrC1eorE9do1vsczxvjDrviLwPVGJ77HM8b4xRJ/Ebheu8b3eMYYv1jiLwLXa9f4Hs8Y4xdL/EXgeu0a3+MlWGexMX4QVS12HcbU1tamsVis2NVwrqun1+naNT7Hs85iYwpPRDYnLYk/xEb1FJGrjU58j2cbsRjjF2vqMZEr5c5i181T7Z3drIp10N7Z7SSeNZ+ZMOyK30SuVDuLXTdP3b56Bw9t2jd0f+lFzdy5eK439TOVw674Tc5yvWotxY1YXM9laO/sTkn6AA9t3Bf6yt/mWph82BW/yUnYq9ZS24gl0TyV6JOAE81TYeq+teNoxvKWxslFr5+pLHbFb7KW71VrKW3E4rp5qrVpSk7lYynV5jPjB0v8JmujXbWWG9fNUy2Nk1l6UeoWoksvag51tR9F/UxlsaYekzXXV62+c908defiuSydP4utHUdpbZoSOulHVT9TOSJP/CJSDcSAN1T1KhG5A/hj4HBwyBdV9cmo62Hyl7hqfWhjaht/vgnMZ67nRrQ0Tnb6ermun+tJgMZPhbji/yywCzg5qexeVf3HAjy3ccz1Vavxhw0PrRyRtvGLyEzgd4BvRfk8prBaGidzTVuTJf0yYsNDK0vUnbtfA24FBoeV3ywi20Xk2yIyNd0DRWSZiMREJHb48OF0hxhjHCnl2dUmd5ElfhG5CjikqpuH/eifgfcBrcAB4CvpHq+q96tqm6q2NTQ0RFVNYww2PLTSRHnFvwC4WkT2At8DLheRR1S1U1UHVHUQ+CZwQYR1MMZkwYaHVpbIOndV9QvAFwBE5FLgL1T1ehGZoaoHgsM+BrwcVR2MMdmz4aGVoxjj+FeISCugwF7g00WogzEmDdfDQ42fCpL4VfUZ4Jng9icK8ZzGGGPSsyUbjDGmwljiN8aYCmOJ3xhjKowlfmOMqTCW+I0xpsJY4jfGmApjid8UTFdPL9s6jka68Nf6nQdZvmob63cerIh4rl9T3+MZN0RVi12HMbW1tWksFit2NUweCrHk76J7n+Hnne8O3Z/dOImnbrm0bOO5fk19j2dyJyKbVbVteLld8ZvIFWLJ3/U7D6YkVYDXOt8NfWXtezzXr6nv8YxblvhN5Aqx5O/anZ05lZd6PNevqe/xjFuW+E3kCrHk76I5jTmVl3o816+p7/GMW5b4TeQKseTvwjmnMbtxUkrZ7MZJLJxzWlnGc/2a+h7PuGWdu6ZgCrGR9/qdB1m7s5NFcxpDJ9VSiuf6NfU9nslNps5dS/zGGFOmbFSPMcYYoACJX0SqReQ/ReSJ4P40EVknIruD72k3Wzf+cjkpZ/WWDm568CVWb+lwULPKmzAU29PFV9e+RmxPl5fx2ju7WRXroL2z20k840bkTT0i8jmgDThZVa8SkRXAW6r6ZRG5DZiqqstHi2FNPf5wOSln/l3rOPjOe0P3Z5w8no1f/LAXdSsF139rE8+1n0jQF7fU8/BN872Jd/vqHTy0ad/Q/aUXNXPn4rmh45ncFaWpR0RmAr8DfCupeDHwYHD7QWBJlHUw7riclLN6S0dK0gc48M57oa/8K23CUGxPV0qSBvhpe1foK3XX8do7u1OSPsBDG/fZlb8nom7q+RpwK5A8oLcxsdl68P3UdA8UkWUiEhOR2OHDhyOupsmGy0k5T+xIP2M1U3kh61YKnt39Zk7lhY63teNoTuWmsCJL/CJyFXBIVTeHebyq3q+qbara1tDQ4Lh2JgyXk3Kumpt+KGOm8kLWrRRcctb0nMoLHa+1aUpO5aaworziXwBcLSJ7ge8Bl4vII0CniMwACL4firAOxiGXk3KWnNfEjJPHp5TNOHk8S85rKnrdSkHbmfVc3FKfUnZxSz1tZ9ZneERh47U0TmbpRc0pZUsvaqalcXKoeMatgozjF5FLgb8IOnfvAbqSOnenqeqtoz3eOnf94nJSzuotHTyx4yBXzT0tdNKPqm6lILani2d3v8klZ00PnaSjjNfe2c3WjqO0Nk2xpF8ERZ3ANSzx1wMrgWZgH3Ctqr412uMt8RtjTO4yJf5xhXhyVX0GeCa43QUsLMTzGmOMGclm7hpjTIUp68Tv+yxO1/VzPUvS93iFYFsRmnJUkKaeYvB9Fqfr+rmeJel7vEKwrQhNuSrLK37fZ3G6rp/rWZK+xysE24rQlLOyTPy+z+J0XT/XsyR9j1cIthWhKWdlmfh9n8Xpun6uZ0n6Hq8QbCtCU87KMvH7PovTdf1cz5L0PV4h2FaEppyV9Q5cvs/idF0/17MkfY9XCLYVoSlltvWiqQiWWI05oagzd40pBBsuaUx2yrKN31QeGy5pTPYs8ReR61mc63ceZPmqbazfGW4zk2zjhX2edI9zteduVMMlfd/T1vXv3GYWVwZr4y8S180Si+59hp93vjt0f3bjJJ665VLn8cI+T7rHvX2sz9meu109vbT93dMkv5sFiP31FaHb+n3f09b179yayspPUfbcNem5bpZYv/NgSgIAeK3z3dBXgZni3fvUrlDPkymeyz13t+47wvBLGA3Kw/B9T1vXv3NrKqsslviLwHWzxNqdnTmVh423Znv6pDLW8+RSj7B77rp+DXzf09b1+drM4soS5Z67E0TkZyKyTUReEZEvBeV3iMgbIrI1+PpoVHXwletZnIvmNOZUHjbe4nnp98Md63lyqUfYPXddvwa+72nr+nxtZnFlifKKvxe4XFXPBVqBK0Uk0aB5r6q2Bl9PRlgHL7mexblwzmnMbpyUUja7cRIL54RLopni3fLbvx7qeTLFc7nnruvXwPc9bV2fb1Qzi21Zaz9FNo5f473GPcHdmuDL/57kArm69XQWtEx3NtnoqVsuZf3Og6zd2cmiOY2hE8BY8RomT+C1pLblUydPCB1v/l3r8qrjcK7fXJ3dx1PuHxp2P1cP3zTf6Z62rn/nrt+Ttqy1vyId1SMi1cBmoAX4hqouF5E7gE8C7wAx4POqOmoPXDmO6ilFsT1dXHPfphHlqz49P+cktnpLB3++cvuI8q9dNy/UVf/6nQe58aHNI8ofWHp+qIToOl6l6erpZcHdP+F434nmowk1VTy//PJQf1Bcx6sURRnVo6oDqtoKzAQuEJFzgH8G3ke8+ecA8JV0jxWRZSISE5HY4cOHo6ymyZLLDspMnbi+dO66jldpbFlrvxVkVI+qHiW+2fqVqtoZ/EEYBL4JXJDhMferapuqtjU0NBSimmPyfTKPa8PbU/PtoEyOl6kT15fOXdfxEh55YQ/X/ssLPPLCnrziRBXP1YQ6W9bab5G18YtIA9CnqkdFZCJwBXC3iMxQ1QPBYR8DXo6qDi4lT775p5+0O53M4yKea5naU0+ZUM3bxweGjjtlQnVWzTzp4qWLlU/n7oyTx3Ng2ISwfDq4XcYDOPeOHw+d70t7j3DP2tfYdseV3sSbf9e6obkVT+86xN0/fjX0hLr6ulrOmDYxpT/ojGnh+w3q62ppnjYxZe5CPvEqXZRX/DOADSKyHXgJWKeqTwArRGRHUH4ZcEuEdXDC98k8rmWazLN+58GURA3w9vGBMeudLt5frtrO8f7UK7jeAc1ra8Mjx/pTyo4c6/cm3iMv7En72oW9Uncdb/WWDqcT6mJ7ulKSPsQnmOXzfybdhDVf/s+UmsgSv6puV9UPqOo8VT1HVe8Myj+hqnOD8quTrv695ftkHtcytadmat8eq97p4lVXCdXibxuw63hrtqd/m2cqL3Q8130ulfZ/ptTYzN0s+D6Zx7VM7amZ2rfHqne6eAODyoD62wbsOt7ieTNyKi90PNd9LpX2f6bUWOLPgu+TeVzLNJln4ZzTQtU7Ea92nHBSTTW144R7rpnHPdecSzXxN2E1ONnasJr44myu4klwX/KMd/0Hz+SUCdUpZadMqOb6D57pRbwl5zU5nVBXaf9nSo1txJIl15NvXMdzLdNknt2HulOOax92P5P4bBGJZ1CNp9O7ntxJciv1Pzy5M68JOf9z9Y6heAPB/XziLV+1bWhSmAb3fZowNHF8auf4SeOrRzl6bK5n9FTa/5lSYlf8OWg7s57PLZrt7A3nOp5r9XW1nNs0ZSjph+0ATHTu9vYP8qv3BujtH+Tz39/mtDPRdWfnfRt2c6w/NRUe61fu27Dbi/q57ox1HS+h0v7PlIqsEr+InC0i60Xk5eD+PBH562irZnwTtgMwXUfpYIbLy7Cdia47O1dneFym8rH43hnrOp7xW7ZX/N8EvgD0QXzEDvB7UVXK+ClsB2C6jtIqSX9s2M5E152dSzI8LlP5WHzvjHUdz/gt28R/kqr+bFhZf9ojTdZKbeXCsB2A6TqLv3LtuU47E113dn76srOYOC71r9PEccKnLzvLi/q57ox1Hc/4LatF2kTkR8DNwPdV9TwRuQa4UVU/EnUFoTwXaSvllQtXb+ngiR0HuWruaTklhq6e3hGdxWFjZfLIC3tYs/0Ai+fNCJ1Uk923YTertx9gybwZoZN+VPVbs/UNPve9rSjxPvN7f68179+569+HKa5Mi7Rlm/h/Dbgf+CBwBNgDXK+qex3XM61yS/y2cqHJl/3OTTbyWp1TVX+hqlcADcD7VfVDhUr65cj3WaZh2AYZheXD79yUrqzG8YvIXcCKYJVNRGQq8XX0bWRPCL7PMs2VbZBReMX+nZvSlm3n7kcSSR8g2Dil4vbKdcX1NneF3jYvuTzTgm7ZXvn73sHta7zE73x8NdRWVzG+Or+ZxQntnd2sinXQ3pndxDxTmrKduVstIrWq2gsQLLNsDYl5cL3NXaG2zRte/qeXtlBTVcVxTlx9Vouw4dVDXPb+UwEy1sn3Dm7f48X2vsV7A0Dw2sdefyuveLev3sFDm/YN3V96UTN3Lp4bOp7xV7adu7cCVwP/l/jM7k8Bj6vqimirF1dunbu+y9Rx+MTNH+Kqrz+XUl47TgChd9gSy3W11RzvG0BEmDCuekSi872D2/d47Z3dXHHvsyPKn77lEloaJxc9nvFDvp27K4C/B34d+A3gbwuV9E3hZeo43NpxdET5+Opqbr6shQk1VUxKWiump3eA/kHoG9C0TUC+d3D7Hm9rx9Gcygsdz/gt60XaVPVHwI8irIvxRKaOw9amKWnL/+DCZv7gwmY2vHqIO/79FXp6U9ekSUgkuvq6Wu87uH2P19o0JafyQsczfhv1il9Engu+d4vIO0lf3SLyzhiPnSAiPxORbSLyioh8KSifJiLrRGR38H2qu9OpbK728D3RcVjF+GphfHW8s7ilcXKwvHLV0FeiQ/HIu+/R09tP30DmpsNj7/XzlbWvsXpLB0fefY+Pf2Am4wRqqoXx1eKkg7umCqqroKbKzbLM46vFaf1cxWtpnMzSi5pTypZe1By6WcZ1POO3Ua/4VfVDwfcwv/1e4HJV7RGRGuC5YAbw7wLrVfXLInIbcBuwPER8k8T1Hr4rYx28N5C4QlW+H+vg6tbTie19K6U9P/b6W8T2vpXSKZhJv8Z3TBqxa1LwxyLxHGF9fcNuEk3oA8A3NuzOK178NTjxhyzf+rmO53od5TsXz2Xp/Fls7ThKa9MUS/plbMw2fhGpSqzKmQuN6wnu1gRfCiwGHgzKHwSW5BrbpCrUnsCrt3SMSPAPbdyXVdLPRj51Xr/zYNo9WdfvDLe6pO/7LLd3dqf9XeQ7DLOlcTLXtDVZ0i9zYyZ+VR0EtolI81jHDici1SKyFThEfLP1F4HGxD67wfdTMzx2mYjERCR2+PDhXJ+6ohRqf9NCLNEbts6Z9gPOVB62Hr7sGWudsSYf2U7gmgG8EqzJ/3jia6wHqeqAqrYCM4ELROScbCumqverapuqtjU0NGT7sIpUqP1NC7FEb9g6Z9oPOFN52Hr4smesdcaafGSb+L8EXAXcCXwl6SsrwazfZ4ArgU4RmQEQfD+UfXVNOoXa33TJeU1pOwCHl4WVT50XzjmN2Y2TUspmN05i4Zxwf6x83zPWOmNNPkadwCUiE4A/AVqAHcADqprVOvwi0gD0qerRYKbvWuBu4LeArqTO3WmqeutosWwCV3Zc70eaKV57Z/eIDsDkMiDt7U3/9ebQksTvn3Eyz+5+k1PrxnOo5z1ndV6/8yBrd3ayaE5j6KSfrFCvaVjpfhfGJIRalllEHiW+69ZPgY8Ar6vqZ7N8wnnEO2+riX+yWKmqd4pIPbASaAb2Adeq6lujxbLEX/qSlys41tefcUavMcadTIl/rAlcc1R1bhDgAWD4LlwZBdszfiBNeRewMNs4pvQlL+R2Yk0fpW8g/uHx1se2s6Bluq0jb0yBjNXG35e4kW0TjzHDpVuuIJmtI29MYY2V+M9Nnq0LzMt25q4pX7ku3ZtuuYJkx/sH6OtPv8xD1HWzeKYSjTVzt3q0n5vKE2bp3sRyBbcOa+OH+CJufQPKNfdtynsZYNfLCldaPFM5sh3OaUzWs0WHb9SyreMoC1qm8/zyy3nkpgt58YtX8N2bLhyxrk8+M09dz2SttHimsmS9Oqcxo80WTQwlzHb0zoZX00/fSI7lum4Wz5g4u+I3WRtrtujwbRhHW4/f92WFKy2eqSyW+E3WxpotmsvoHd+XFa60eKayZLX1YrHZBC6/ZJotmm57wWTpthp0PfPU4hlzQqiZu76wxF86Ht/6xojROzZD15jiCDtz15icXN16OgtaprP/yLGhbQUTt21mrjF+sMRvnKuvq01J8pbwjfGLde4aY0yFsSt+UzBdPb3WBGSMByzxm4KwZZmN8Yc19ZjI5TKxyxgTvcgSv4g0icgGEdklIq+IyGeD8jtE5A0R2Rp8fTSqOpjCSV6fZzhbltkYv0TZ1NMPfF5Vt4jIZGCziKwLfnavqv5jhM9tCii5GSdd081YyzL3DQ4OtfsbY6IX2RW/qh5Q1S3B7W5gF2ANuWVmeDNOuqabxLLME2qqmFw7jnFVUFMtTK4dx4SaKlZ8fJ518BpTQAXp3BWRWcS3YXwRWADcLCJLgRjxTwVH0jxmGbAMoLm5efiPjScSzTgntlQ80XSTnMxtYpcx/oi8c1dE6oDHgD9X1XeAfwbeB7QCB4CvpHucqt6vqm2q2tbQ0BB1NU1I6ZpxMjXd1NfVcm7TlKEJXonbxpjCijTxi0gN8aT/HVX9AYCqdqrqgKoOAt8ELoiyDiZaw5txRmu6Sd4m0LYMNKZ4Imvqkfjeeg8Au1T1q0nlM1T1QHD3Y8DLUdXBFMbwZpx0SX/4NoHJbMtAYworyjb+BcAngB0isjUo+yLw+yLSCiiwF/h0hHUwBTJ8fZ5k6bYJTPbQxn0snT/LlhU2pkAiS/yq+hwgaX70ZFTPafyUaZvA4cdY4jemMGzmrolcNtsB2paBxhSOJX4TuXTbBCazLQONKSxbpM0UxJ2L57J0/qyhbQIB2zLQmCKxxG8KpqVxckqSt4RvTHFYU48xxlQYS/zGGFNhLPGbjEZbatmHeMaYcKyN36Q11lLLxY5njAnPrvjNCNkstVzMeMaY/FjiNyOk2zErn12yXMczxuTHEr8ZIZellosRzxiTH0v8ZoRcllouRjxjTH5EVYtdhzG1tbVpLBYrdjUqTldPr9NdslzHM8aMTkQ2q2rb8HIb1WMyGm2pZR/ipeP7HyuLZ/F8YInflA3fh6BaPIvni8ja+EWkSUQ2iMguEXlFRD4blE8TkXUisjv4PjWqOpjK4fsQVItn8XwSZeduP/B5Vf11YD7wpyIyB7gNWK+qZwHrg/sVyfeZsaU009b3IagWz+L5JModuA4AB4Lb3SKyCzgdWAxcGhz2IPAMsDyqevjK94+ZpfSxFfwfgmrxLJ5PCjKcU0RmAR8AXgQaE5utB99PLUQdfOL7x8xS+9gK/g9BtXgWzyeRD+cUkTrgP4C/V9UfiMhRVZ2S9PMjqjqinV9ElgHLAJqbm89//fXXI61nIW3rOMr133qR7t7+obLJteN45KYLOTfEFoS+xysk30dpWDyLV0hFGc4pIjXAY8B3VPUHQXGniMxQ1QMiMgM4lO6xqno/cD/Ex/FHWc9C8/1jZql9bE3m+xBUi2fxfBDlqB4BHgB2qepXk370OHBDcPsGYE1UdfBV4mNh7bgqThpfTe04Nx8z3ccTTqqppnacpMQL2+mb7nG+d0hbPFOOorziXwB8AtghIluDsi8CXwZWisiNwD7g2gjr4C1N/KsydM+/eAJCEDMubKdvuscpeN0hbfH87tA34dmSDUXQ1dPLgrt/wvG+E80pE2qqeH755aGu0gsV74mbP8RVX38u5+dJF692XBWg9PafeP+Vwmtg8UwpydTGX9aLtPn6Mdj3McSZ4m3tOBrqedLFq64SqqX0XgOLZ8pB2S7Z4PPH4JlTJ3K8fyCl7Hj/QF6dsT1JI3AAenr7ncdrbZoSqtM33fn2DQxSJanH+dQhbfFKp0Pf5K4sr/hLYVz78Ca2fJrcjrz73ohWfQ3KXcYDQo9VTne+t//33/B2HLXF83scuslPWV7xJz62HufEFUziY2uYN3IU8SbWjEsZJz+xZlzoeFs7jmYsb2mc7DTeNW1NLGiZntNY5Uzne85/O4Xnl1/ubNzz1a2n51w3ixddPOOvskz8vn8Mdh2vNcOkqkzl+cbLdazyaOfr+zhqi2fKUVk29Yw1Dj1sPF8/Vrc0TmbpRc0pZUsvag51tR9FPNfzDIwx+SnLK37IPA49LN8/Vp9/xjS+97N9CFUog7SdMc2reK7nGRSK71P6Ky2ecaMsx/FX2phk38d0l+rvw+eRYZUYz+SuosbxV9qYZN/HdJfi78P3kWGVFs+4VZaJP6oxyb5OCCt053Ou9R4tnuvXdPWWDm568CVWb+nIK47vf/wqLZ5xqyzb+BOdibcO+5iZT7OCzx+D6+tqaZ42kZ93vjtUdsa08G2q9XW1tJ0xlefau4bKfvOMqdTX1Yaqd31dLdedP5OHNu0bKruubSbPtb/p9DWdf9c6Dr4Tn7vw9K5D3P3jV9n4xQ+HijVz6kR+1Zc66exXfflNsvN5ZJjv8YxbZXnFD/HO0+eXX84jN13I88svzyuh+P4xOLanKyXpA7zW+S6xPV0ZHjG69s7ulKQP8NP2LmJ7ukLVu6unl5Wb96eUPfrSfm5dtc3Za7B6S8dQ0k848M57oa/8j7z7HgODqf1fA4MaelJcfV0t17XNTCm7rm2mNyPDfI9n3CrLK/4EV2OSfZ8Q9uzuNzOWt51Zn3O8TBO4nt39Zqh6pzvf6ioJRvicuKrO5zX44dZfZixfcl5TzvGeaz+csTzMsNaunl5WxlL/+K2M7eezC88O/R71faSZTQjzV9le8bvk+8fgS86anlP5WDJN4LrkrOkc60tdw+dY39hrAqU734FBHdGU0p3H+kIfyFDnTOVjmV43IafysUTV5l1fV8u5TVOcJVXf4xk3LPFnwfePwW1n1nNxS+qV/cUt9aGu9gGmThofvyJPUl0lTDlpPPH9dU4Yfj+ddM0cl53dkPbYPYd7cqxt3NzTT8mpfCwTa9L/18hUPpao2rxddWYnrN95kOWrtrF+50En8WJ7uvjq2tdCNztGHa+9s5tVsQ7aO7srIl5CWTf1uOT7x+CHb5pPbE8Xz+5+k0vOmh466UP86vSkmuqUtXVOqqlma8fRtO3eYzXPpGvmWLerM+2xYZuntu1/O2P5wjmnFT1efV0ttdXC8b4TZbXVktfv3WVnNsCie58Z6it6NLaf2Y2TeOqWS0PHu/5bm4b6iv7pJ+1c3FLPwzfN9ybe7at3pAw4WHpRM3cunlu28ZJFufXit0XkkIi8nFR2h4i8ISJbg6+PRvX8UfD9Y3DbmfV8btHsvJI+ZL46HVcFw/I+gwpvdh8fNV66Zo5xGd55vzb9pJzrO9rjfIm3eksHbx9Pbdp6+/hA6Ct1153Z63ceTDtAIOyVf2xPV8YBAj7Ea+/sTkmqAA9t3Bf6ytr3eMNF2dTzr8CVacrvVdXW4OvJCJ/fhJSpKeoXb/4q7fGZro4T0rbxk76JqH8wbfGYMj3Ol3hP7EifQDOVFzre2p3pP4FlKh/LaAMOfIg32gq05RhvuMgSv6o+C7wVVXwTratbT+eRT13AHy2YxSOfuoCrW08P3YmcvEhb4uvW356d9tioVhQtdryr5qZvHspUPpZLM7zmmcrHsmhOY07lY3E94KBQAxh8eb+4jjdcMTp3bxaR7UFT0NRMB4nIMhGJiUjs8OH0Q+tMdG5fvYNr7tvEP/2knWvu28Tta3bk1Ykc2/sWvf2DQ1/7j/zK6xVFXcdbcl4TM04en1I24+TxoYaaAsxtSv9fJ1P5WBbOOY3ZjZNSymY3TgrVnwHuBxy4juf7+8V1vOEiXaRNRGYBT6jqOcH9RuBN4ssz/i0wQ1U/NVacctts3Xftnd1cce+zI8qfvuUSWhons3pLB0/sOMhVc0/LKnGNFu/1rndZu7OTRXMaQyeZZOt3HvQ63n0bdrN6+wGWzJvBpy87K3ScqBa+e+SFPazZfoDF82Zw/QfPDB0nIdf3SqHj+f5+yXfARqZF2go6qkdVhxoMReSbwBOFfH6TndHaFx/auHeo0+npXYfY0nF0zJEGmeLdvuZlXvhFvDXw0dh+p6MgfI+360A3b7xzPHS80ZbVcFG/l/Ye4eeHe5ydb7bvlWLF8/H9krw8yv0//YXT1U0L2tQjIjOS7n4MeDnTsaZ4MrUjTj2pJtRIg0zxEkk/l1iZ+D6qIop46Ua5+FQ/ixc+XtSrm0Y5nPO7wEZgtojsF5EbgRUiskNEtgOXAbdE9fwmvEzti0d+1Zf2+LFGGqSL98H3pd/YxZdREBbP4hUzXtSrm0bW1KOqv5+m+IGons+4defiuSydP4utHUdpbZpCS+PkjFcv2Yw0OP+MaTz60n4S+29devapvPBfIwd9+TIKwuJZvGLGi3p1U1uywWTU0jiZa9qahkYSTJ00fsToewnKR5P42NrbP8jxYFTPV5/+Ode1pbZX5jNqIWzdLF5cS+PktKNm8hmVUmnxotinOqrVTW3JBpO1/UeOUVc7LmUph7racaFW56ypquIPL5zFsovfl/KpotB1s3hxXT29vPT6kZSyl14/QldPr8XLUrpPyfmIcnVTS/wma2E/fo72uPq6Widjk31fQdX3eL4vPe57vISWxsnOxtqDu6Xlh7OmHpO1sB8/C7Eph+8rqPoez/c/TL7HKzWRTuByxSZw+aWrpzfUx8+wjytE3SwePL71jRHbleYzbrzS4vko0wQuS/zGmCE+/2EqhXi+8WLmrjGlptwTw3Cu25QrLV6psMRvTAbJU+bLtSnAVCbr3DUmjainzBtTTJb4jUkj6inzxhSTJX5j0qj04X6mvFniNyaNqOYetHd2syrW4WzvVNfxunp62dZx1Jq0ypx17hqTgesp88nrtQNO1393Ec86syuHXfEbM4r6ulrObZri5Eq/ktd/N36xxG9MAVT6+u/GL1FuxPJtETkkIi8nlU0TkXUisjv4Hm5naGNKTKWv/278EuUV/78CVw4ruw1Yr6pnAeuD+8aUPdfrtZfa+u/GL5Gu1SMis4AnVPWc4P5rwKWqeiDYf/cZVZ09Vhxbq8eUi/bObmfrtUcRr9KWqCh3vqzV06iqBwCC5H9qpgNFZBmwDKC5uTnTYcaUFNfrtZfK+u/GL9527qrq/arapqptDQ0Nxa6OMcaUjUIn/s6giYfg+6ECP78xxlS8Qif+x4Ebgts3AGsK/PzGGFPxohzO+V1gIzBbRPaLyI3Al4EPi8hu4MPBfWOMMQUUWeeuqv5+hh8tjOo5jTHGjK0ktl4UkcPA6xE+xXTgzQjj+6Dcz7Hczw/sHMtFIc/xDFUdMTqmJBJ/1EQklm6sazkp93Ms9/MDO8dy4cM5ejuc0xhjTDQs8RtjTIWxxB93f7ErUADlfo7lfn5g51guin6O1sZvjDEVxq74jTGmwljiN8aYClP2iV9EmkRkg4jsEpFXROSzw37+FyKiIjI9qewLItIuIq+JyG8Xvta5Ge0cReTPgvN4RURWJJWXxTmKSKuIbBKRrSISE5ELkh5Tauc4QUR+JiLbgnP8UlCecQOjUjrHUc7vHhF5VUS2i8gPRWRK0mNK5vwg8zkm/dyPfKOqZf0FzADOC25PBn4OzAnuNwFPEZ8cNj0omwNsA2qBM4H/AqqLfR5hzhG4DHgaqA1+dmoZnuNa4CNB+UeJ7/FQqucoQF1wuwZ4EZgPrABuC8pvA+4uxXMc5fwWAeOC8rtL9fxGO8fgvjf5puyv+FX1gKpuCW53A7uA04Mf3wvcCiT3cC8Gvqeqvaq6B2gHLsBjo5zjZ4Avq2pv8LPEaqjldI4KnBwcdgrwy+B2KZ6jqmpPcLcm+FLi5/JgUP4gsCS4XVLnmOn8VHWtqvYH5ZuAmcHtkjo/GPV3CB7lm7JP/MmCHcE+ALwoIlcDb6jqtmGHnQ50JN3fz4k/FN5LPkfgbOBiEXlRRP5DRH4zOKyczvHPgXtEpAP4R+ALwWEleY4iUi0iW4kvWb5OVV9k2AZGQGIDo5I7xwznl+xTwI+C2yV3fpD+HH3LNxWT+EWkDniMeKLoB/4KuD3doWnKSmLMa/I5quo7xBfhm0r84/RfAitFRCivc/wMcIuqNgG3AA8kDk3zcO/PUVUHVLWV+FXvBSJyziiHl9w5jnZ+IvJXxP9vfidRlC5E5JXMU5pznIdn+aYiEr+I1BBPFt9R1R8A7yPenrZNRPYS/wVtEZHTiP/FbUp6+ExONB94K805QvxcfhB8/PwZMEh8gahyOscbgMTt73PiY3JJnmOCqh4FngGuJPMGRiV7jsPODxG5AbgK+EMNGr8p4fODlHNcjG/5ppgdIYX4Iv4X9SHga6Mcs5cTnS2/QWpnyy8ojQ6lEecI/AlwZ3D7bOIfKaXMznEXcGlweyGwuYR/jw3AlOD2ROCnxJPhPaR27q4oxXMc5fyuBHYCDcOOL6nzG+0chx1T9HxT6M3Wi2EB8AlgR9DuBvBFVX0y3cGq+oqIrCT+RuwH/lRVBwpS0/DSniPwbeDbIvIy8B5wg8bfbeV0jn8M/C8RGQccB5ZByf4eZwAPikg18U/jK1X1CRHZSLyZ7kZgH3AtlOQ5Zjq/duKJb128JZJNqvonJXh+kOEcMx1crHO0JRuMMabCVEQbvzHGmBMs8RtjTIWxxG+MMRXGEr8xxlQYS/zGGFNhLPGbsiUiA8Gqna8EqyV+TkRCv+dF5EPByouvBl/Lkn7WECyN8Z8SX0X0M0k/uzBYebIShk+bEmBvRFPOjml86jwicirwb8QXcvubXAMFsyz/DViiqluCZXWfEpE3VPX/EZ889qqq3iAijcBGEVkFdAFfB/6HnliILNfnFuJDrwfDPN6Y4WwcvylbItKjqnVJ938NeIn4shVnAA8Dk4If36yqL4jIw8AqVV0TPOY7wKPAbxJffPH2pHgLgTuAPwMeJz5T8w3gIuCPgse8BJxPfGLZl4FLiU9W+oaq3hesPbSG+JpKNcBfq+qaYCG6HwEbgnhLVPV1l6+PqVyW+E3ZGp74g7IjwPuBbmBQVY+LyFnAd1W1TUR+i/iib0tE5BRgK3AWsBJ4MPEHIYh1CrBHVaeJyCeBNlW9OfhZFbCR+EqabcDHie+H8HciUgs8T3wGbgdwkqq+E3yK2BQ83xnEp+9/UFU3RfICmYplTT2m0iRWQ6wBvi4ircAA8bWMUNX/EJFvBE1Dvws8pqr9QXNLuquktFdOqjooIvcR/2PQJSKLgHkick1wyCnEE/x+4C4RuYT4InqnA43BMa9b0jdRsMRvKkbQ1DNAfHXLvwE6gXOJD3I4nnTow8AfAr9HfH14gFeIX7k/nnTc+cTXWMlkMPiC+B+cP1PVp4bV6ZPEF/Y6X1X7gtUbJwQ/fjf7szMmezaqx1QEEWkA/gX4erBQ3SnAgaDD9BNAddLh/0p83wZU9ZWg7BvAJ4NPCIhIPfFtAleQnaeAzwRLSyMiZ4vIpKAeh4KkfxnxJh5jImVX/KacTQxW8qwhvvLhw8BXg5/9H+AxEbmWeAfq0NW1qnaKyC5gdVLZARG5HvimiEwmfgX/NVX99yzr8i1gFvF12AU4THwLxe8A/y4iMeL9Ca+GOVFjcmGdu8YMIyInATuIb+7+drHrY4xr1tRjTBIRuYL4Vff/tqRvypVd8RtjTIWxK35jjKkwlviNMabCWOI3xpgKY4nfGGMqjCV+Y4ypMP8fFF03YlhPduQAAAAASUVORK5CYII=", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1072,11 +1070,8 @@ } ], "metadata": { - "interpreter": { - "hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5" - }, "kernelspec": { - "display_name": "Python 3.7.0 64-bit ('3.7')", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -1090,14 +1085,19 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.5" + "version": "3.11.1" }, "metadata": { "interpreter": { "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2 + "orig_nbformat": 2, + "vscode": { + "interpreter": { + "hash": "72b2382ece9768098284d92bbc69d35954e75b60d1e25897d1389c232f4796f0" + } + } }, "nbformat": 4, "nbformat_minor": 2 diff --git a/3-Web-App/1-Web-App/notebook.ipynb b/3-Web-App/1-Web-App/notebook.ipynb index e69de29b..44257c85 100644 --- a/3-Web-App/1-Web-App/notebook.ipynb +++ b/3-Web-App/1-Web-App/notebook.ipynb @@ -0,0 +1,443 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
datetimecitystatecountryshapeduration (seconds)duration (hours/min)commentsdate postedlatitudelongitude
010/10/1949 20:30san marcostxuscylinder2700.045 minutesThis event took place in early fall around 194...4/27/200429.883056-97.941111
110/10/1949 21:00lackland afbtxNaNlight7200.01-2 hrs1949 Lackland AFB&#44 TX. Lights racing acros...12/16/200529.384210-98.581082
210/10/1955 17:00chester (uk/england)NaNgbcircle20.020 secondsGreen/Orange circular disc over Chester&#44 En...1/21/200853.200000-2.916667
310/10/1956 21:00ednatxuscircle20.01/2 hourMy older brother and twin sister were leaving ...1/17/200428.978333-96.645833
410/10/1960 20:00kaneohehiuslight900.015 minutesAS a Marine 1st Lt. flying an FJ4B fighter/att...1/22/200421.418056-157.803611
\n", + "
" + ], + "text/plain": [ + " datetime city state country shape \\\n", + "0 10/10/1949 20:30 san marcos tx us cylinder \n", + "1 10/10/1949 21:00 lackland afb tx NaN light \n", + "2 10/10/1955 17:00 chester (uk/england) NaN gb circle \n", + "3 10/10/1956 21:00 edna tx us circle \n", + "4 10/10/1960 20:00 kaneohe hi us light \n", + "\n", + " duration (seconds) duration (hours/min) \\\n", + "0 2700.0 45 minutes \n", + "1 7200.0 1-2 hrs \n", + "2 20.0 20 seconds \n", + "3 20.0 1/2 hour \n", + "4 900.0 15 minutes \n", + "\n", + " comments date posted latitude \\\n", + "0 This event took place in early fall around 194... 4/27/2004 29.883056 \n", + "1 1949 Lackland AFB, TX. Lights racing acros... 12/16/2005 29.384210 \n", + "2 Green/Orange circular disc over Chester, En... 1/21/2008 53.200000 \n", + "3 My older brother and twin sister were leaving ... 1/17/2004 28.978333 \n", + "4 AS a Marine 1st Lt. flying an FJ4B fighter/att... 1/22/2004 21.418056 \n", + "\n", + " longitude \n", + "0 -97.941111 \n", + "1 -98.581082 \n", + "2 -2.916667 \n", + "3 -96.645833 \n", + "4 -157.803611 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ufos = pd.read_csv(\"C:\\\\Users\\\\Admin\\\\OneDrive\\\\Desktop\\\\AI\\\\ML google\\\\ML-For-Beginners\\\\3-Web-App\\\\1-Web-App\\\\data\\\\ufos.csv\")\n", + "ufos.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['us', nan, 'gb', 'ca', 'au', 'de'], dtype=object)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']})\n", + "\n", + "ufos.Country.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 25863 entries, 2 to 80330\n", + "Data columns (total 4 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Seconds 25863 non-null float64\n", + " 1 Country 25863 non-null object \n", + " 2 Latitude 25863 non-null float64\n", + " 3 Longitude 25863 non-null float64\n", + "dtypes: float64(3), object(1)\n", + "memory usage: 1010.3+ KB\n" + ] + } + ], + "source": [ + "ufos.dropna(inplace=True)\n", + "\n", + "ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)]\n", + "\n", + "ufos.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SecondsCountryLatitudeLongitude
220.0353.200000-2.916667
320.0428.978333-96.645833
1430.0435.823889-80.253611
2360.0445.582778-122.352222
243.0351.783333-0.783333
\n", + "
" + ], + "text/plain": [ + " Seconds Country Latitude Longitude\n", + "2 20.0 3 53.200000 -2.916667\n", + "3 20.0 4 28.978333 -96.645833\n", + "14 30.0 4 35.823889 -80.253611\n", + "23 60.0 4 45.582778 -122.352222\n", + "24 3.0 3 51.783333 -0.783333" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "\n", + "ufos['Country'] = LabelEncoder().fit_transform(ufos['Country'])\n", + "\n", + "ufos.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "Selected_features = ['Seconds','Latitude','Longitude']\n", + "\n", + "X = ufos[Selected_features]\n", + "y = ufos['Country']\n", + "\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 1.00 1.00 1.00 41\n", + " 1 0.83 0.21 0.34 250\n", + " 2 1.00 1.00 1.00 8\n", + " 3 1.00 1.00 1.00 131\n", + " 4 0.96 1.00 0.98 4743\n", + "\n", + " accuracy 0.96 5173\n", + " macro avg 0.96 0.84 0.86 5173\n", + "weighted avg 0.96 0.96 0.95 5173\n", + "\n", + "Predicted labels: [4 4 4 ... 3 4 4]\n", + "Accuracy: 0.9597912236613184\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:458: ConvergenceWarning: lbfgs failed to converge (status=1):\n", + "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", + "\n", + "Increase the number of iterations (max_iter) or scale the data as shown in:\n", + " https://scikit-learn.org/stable/modules/preprocessing.html\n", + "Please also refer to the documentation for alternative solver options:\n", + " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", + " n_iter_i = _check_optimize_result(\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score, classification_report \n", + "from sklearn.linear_model import LogisticRegression\n", + "model = LogisticRegression()\n", + "model.fit(X_train, y_train)\n", + "predictions = model.predict(X_test)\n", + "\n", + "print(classification_report(y_test, predictions))\n", + "print('Predicted labels: ', predictions)\n", + "print('Accuracy: ', accuracy_score(y_test, predictions))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\sklearn\\base.py:409: UserWarning: X does not have valid feature names, but LogisticRegression was fitted with feature names\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "import pickle\n", + "model_filename = 'ufo-model.pkl'\n", + "pickle.dump(model, open(model_filename,'wb'))\n", + "\n", + "model = pickle.load(open('ufo-model.pkl','rb'))\n", + "print(model.predict([[50,44,-12]]))\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "72b2382ece9768098284d92bbc69d35954e75b60d1e25897d1389c232f4796f0" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/3-Web-App/1-Web-App/solution/notebook.ipynb b/3-Web-App/1-Web-App/solution/notebook.ipynb index 430bfd9d..20027941 100644 --- a/3-Web-App/1-Web-App/solution/notebook.ipynb +++ b/3-Web-App/1-Web-App/solution/notebook.ipynb @@ -1,46 +1,126 @@ { - "metadata": { - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.0" - }, - "orig_nbformat": 2, - "kernelspec": { - "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", - "display_name": "Python 3.7.0 64-bit ('3.7')" - }, - "metadata": { - "interpreter": { - "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2, "cells": [ { + "cell_type": "markdown", + "metadata": {}, "source": [ "## Build a Web App using a Regression model to learn about UFO sighting" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 2, "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
datetimecitystatecountryshapeduration (seconds)duration (hours/min)commentsdate postedlatitudelongitude
010/10/1949 20:30san marcostxuscylinder2700.045 minutesThis event took place in early fall around 194...4/27/200429.883056-97.941111
110/10/1949 21:00lackland afbtxNaNlight7200.01-2 hrs1949 Lackland AFB&#44 TX. Lights racing acros...12/16/200529.384210-98.581082
210/10/1955 17:00chester (uk/england)NaNgbcircle20.020 secondsGreen/Orange circular disc over Chester&#44 En...1/21/200853.200000-2.916667
310/10/1956 21:00ednatxuscircle20.01/2 hourMy older brother and twin sister were leaving ...1/17/200428.978333-96.645833
410/10/1960 20:00kaneohehiuslight900.015 minutesAS a Marine 1st Lt. flying an FJ4B fighter/att...1/22/200421.418056-157.803611
\n", + "
" + ], "text/plain": [ " datetime city state country shape \\\n", "0 10/10/1949 20:30 san marcos tx us cylinder \n", @@ -69,11 +149,11 @@ "2 -2.916667 \n", "3 -96.645833 \n", "4 -157.803611 " - ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
datetimecitystatecountryshapeduration (seconds)duration (hours/min)commentsdate postedlatitudelongitude
010/10/1949 20:30san marcostxuscylinder2700.045 minutesThis event took place in early fall around 194...4/27/200429.883056-97.941111
110/10/1949 21:00lackland afbtxNaNlight7200.01-2 hrs1949 Lackland AFB&#44 TX. Lights racing acros...12/16/200529.384210-98.581082
210/10/1955 17:00chester (uk/england)NaNgbcircle20.020 secondsGreen/Orange circular disc over Chester&#44 En...1/21/200853.200000-2.916667
310/10/1956 21:00ednatxuscircle20.01/2 hourMy older brother and twin sister were leaving ...1/17/200428.978333-96.645833
410/10/1960 20:00kaneohehiuslight900.015 minutesAS a Marine 1st Lt. flying an FJ4B fighter/att...1/22/200421.418056-157.803611
\n
" + ] }, + "execution_count": 2, "metadata": {}, - "execution_count": 23 + "output_type": "execute_result" } ], "source": [ @@ -86,18 +166,18 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 3, "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ "array(['us', nan, 'gb', 'ca', 'au', 'de'], dtype=object)" ] }, + "execution_count": 3, "metadata": {}, - "execution_count": 24 + "output_type": "execute_result" } ], "source": [ @@ -111,14 +191,24 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 4, "metadata": {}, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "\nInt64Index: 25863 entries, 2 to 80330\nData columns (total 4 columns):\n # Column Non-Null Count Dtype \n--- ------ -------------- ----- \n 0 Seconds 25863 non-null float64\n 1 Country 25863 non-null object \n 2 Latitude 25863 non-null float64\n 3 Longitude 25863 non-null float64\ndtypes: float64(3), object(1)\nmemory usage: 1010.3+ KB\n" + "\n", + "Int64Index: 25863 entries, 2 to 80330\n", + "Data columns (total 4 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Seconds 25863 non-null float64\n", + " 1 Country 25863 non-null object \n", + " 2 Latitude 25863 non-null float64\n", + " 3 Longitude 25863 non-null float64\n", + "dtypes: float64(3), object(1)\n", + "memory usage: 1010.3+ KB\n" ] } ], @@ -132,12 +222,76 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 5, "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SecondsCountryLatitudeLongitude
220.0353.200000-2.916667
320.0428.978333-96.645833
1430.0435.823889-80.253611
2360.0445.582778-122.352222
243.0351.783333-0.783333
\n", + "
" + ], "text/plain": [ " Seconds Country Latitude Longitude\n", "2 20.0 3 53.200000 -2.916667\n", @@ -145,11 +299,11 @@ "14 30.0 4 35.823889 -80.253611\n", "23 60.0 4 45.582778 -122.352222\n", "24 3.0 3 51.783333 -0.783333" - ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
SecondsCountryLatitudeLongitude
220.0353.200000-2.916667
320.0428.978333-96.645833
1430.0435.823889-80.253611
2360.0445.582778-122.352222
243.0351.783333-0.783333
\n
" + ] }, + "execution_count": 5, "metadata": {}, - "execution_count": 26 + "output_type": "execute_result" } ], "source": [ @@ -162,7 +316,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -179,33 +333,41 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 7, "metadata": {}, "outputs": [ { + "name": "stdout", "output_type": "stream", - "name": "stderr", "text": [ - "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", - " FutureWarning)\n", - "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/linear_model/logistic.py:469: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", - " \"this warning.\", FutureWarning)\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 41\n", - " 1 1.00 0.02 0.05 250\n", - " 2 0.00 0.00 0.00 8\n", - " 3 0.94 1.00 0.97 131\n", - " 4 0.95 1.00 0.97 4743\n", + " 1 0.83 0.21 0.34 250\n", + " 2 1.00 1.00 1.00 8\n", + " 3 1.00 1.00 1.00 131\n", + " 4 0.96 1.00 0.98 4743\n", "\n", - " accuracy 0.95 5173\n", - " macro avg 0.78 0.60 0.60 5173\n", - "weighted avg 0.95 0.95 0.93 5173\n", + " accuracy 0.96 5173\n", + " macro avg 0.96 0.84 0.86 5173\n", + "weighted avg 0.96 0.96 0.95 5173\n", "\n", "Predicted labels: [4 4 4 ... 3 4 4]\n", - "Accuracy: 0.9512855209742895\n", - "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n", - " 'precision', 'predicted', average, warn_for)\n" + "Accuracy: 0.9597912236613184\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:458: ConvergenceWarning: lbfgs failed to converge (status=1):\n", + "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", + "\n", + "Increase the number of iterations (max_iter) or scale the data as shown in:\n", + " https://scikit-learn.org/stable/modules/preprocessing.html\n", + "Please also refer to the documentation for alternative solver options:\n", + " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", + " n_iter_i = _check_optimize_result(\n" ] } ], @@ -225,14 +387,22 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 8, "metadata": {}, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", + "text": [ + "[1]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", "text": [ - "[3]\n" + "c:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\sklearn\\base.py:409: UserWarning: X does not have valid feature names, but LogisticRegression was fitted with feature names\n", + " warnings.warn(\n" ] } ], @@ -252,5 +422,37 @@ "outputs": [], "source": [] } - ] -} \ No newline at end of file + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2, + "vscode": { + "interpreter": { + "hash": "72b2382ece9768098284d92bbc69d35954e75b60d1e25897d1389c232f4796f0" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/3-Web-App/1-Web-App/solution/ufo-model.pkl b/3-Web-App/1-Web-App/solution/ufo-model.pkl index 523962f2..11b2e79a 100644 Binary files a/3-Web-App/1-Web-App/solution/ufo-model.pkl and b/3-Web-App/1-Web-App/solution/ufo-model.pkl differ diff --git a/3-Web-App/1-Web-App/ufo-model.pkl b/3-Web-App/1-Web-App/ufo-model.pkl new file mode 100644 index 00000000..11b2e79a Binary files /dev/null and b/3-Web-App/1-Web-App/ufo-model.pkl differ