{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"Published on June 08, 2023. By Marília Prata, MPwolke.","metadata":{"_kg_hide-input":false}},{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nimport plotly.express as px\nimport plotly.graph_objs as go\n\nimport plotly\nplotly.offline.init_notebook_mode(connected=True)\n\nfrom pathlib import Path\n\n#Ignore warnings\nimport warnings\nwarnings.filterwarnings('ignore')\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_kg_hide-input":true,"_kg_hide-output":true,"execution":{"iopub.status.busy":"2023-07-17T14:30:57.674595Z","iopub.execute_input":"2023-07-17T14:30:57.675648Z","iopub.status.idle":"2023-07-17T14:31:01.067605Z","shell.execute_reply.started":"2023-07-17T14:30:57.675594Z","shell.execute_reply":"2023-07-17T14:31:01.066199Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"![image.png](attachment:3746ee40-de68-4fb4-b6cf-47aacfab3e2f.png)","metadata":{},"attachments":{"3746ee40-de68-4fb4-b6cf-47aacfab3e2f.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA+gAAADGCAYAAABB7ao/AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAE97SURBVHhe7Z1ns11Ffq+XyEFkEBlJJEkgkSVAxCGDZ1w11x57xmF8X/iNX3k+gj+Fq1xll6/t8Xg8tsdlY4JIAwgBIoNIIkgiI5FB5KDrp9l/Tau11t5r73N2OIfnqVpnnZU6r17963937zmbN2/Z9tHWj6rnn3uu+vLLLysRERERERERGR5z586tFh5/fLX3XntXhx8+r3O2qnb59LPPqg8/+EBxLiIiIiIiIjICtm7dWr3z9tsVejxnl2+++abavHlz51BEREREREREhs3rr79ebdu2rXP0LbvwR+u5iIiIiIiIyHhJAl1ERERERERExosCXURERERERGQCUKCLiIiIiIiITAAKdBEREREREZEJQIEuIiIiIiIiMgEo0EVEREREREQmAAW6iIiIiIiIyASgQBcRERERERGZABToIiIiIiIiIhOAAl1ERERERERkApizYeOmbU+ue6JzOHp23333at68edWBBx5YzZ07t9pjjz3S+S+++KLaunVr9f7771dbtmypvvzyy3ReREREREREZDawdNlp1cIF8ztHYxboCxYsqI499thq8+bN1bvvvlt99NFHSZgDQn2//farDj744Orwww+vXnnllWrTpk3pmoiIiIiIiMhMZyIE+j777FMtWrSo+vjjj6uXXnqp+vzzzztX6tlzzz2r+fPnV/vuu2+1fv366pNPPulcEREREREREZmZlAJ95HPQEefLli1LVvPnnnuupzgH7uFenuFZ3BARERERERGZTYxcoGM5Z7j666+/3jnTHp7hWdwQERERERERmU2MVKAz55xh7YOI84BncQO3RERERERERGYLIxPorNbOgnDMOa/j6KOPTpbxfDvuuOOqXXfdtXPHb8EN3MJNERERERERkdnAyBaJQ4CzyBtzyUsOOeSQ6qSTTtr+E2vBV199Vb3wwgvpZ9ZKTj755GRJf+211zpnduawww6rTjjhhGqXXXbsh8A93B0EVpanY4BV54fNmWeemVa2L8NK58QxxxxTzZkzJx2TTu+99161YcOG6uuvv07nBgW3SbcXX3wx5csRRxxRvfzyy9Wrr77auWNnWBNg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16Fu6DfhI64RPkYZkE7Ml0Zk8gwrpcficwEr9+MX6RPxwh3c6wdGWRBWysOKFSvS9AOELPnF+TJ8+Ie/+N8v5B/lq3SnW/4BZYM5/aRjOVqkLDc5hJ9r5AGdHnQsMHJkuvJfRERERERmBnM2bNy07cl1T3QOhwuiDgFeDglGMCLsSusjQomFsbCe5mABZh45c9enCkIKi2mIrABrJkIJcdY0dHxQ6IDAQosAK4fP4y8dFojebnPQB6EproAFN5973QSdI4hkLOD9DP2fzvQkHqQhaVQyaPgCxDejJpg+gGimE6N0p1v+TQXcxM+6/BERERERkdnH0mWnVQsXzO8cjVigA1ZCrK79WlADhlRj3Xz00Uc7Z0Smj1yg13UAiIiIiIiITBelQB/5alQsZsY8YYR2v/AMz+KGyDBgnjnD2Kd71ISIiIiIiEgvRi7QGRLMiu1YwRmqXjcnvYR7uJdneHY6hxWL5CDO+fk453+LiIiIiMioGblABwQ2Q9SZR86CX4jvQw89NAnx+Mkp/ucc17iHe3lGcS4iIiIiIiKzkZHPQS9h0TLm/LJAFj+ZFT9phiBnuDHzgFmpmwXMRERERERERGYLY18kTkREREREREQmYJE4EREREREREdkZBbqIiIiIiIjIBKBAFxEREREREZkAFOgiIiIiIiIiE4ACXURERERERGQCUKCLiIiIiIiITAAKdBEREREREZEJQIEuIiIiIiIiMgEo0EVEREREREQmAAW6iIiIiIiIyASgQBcRERERERGZABToIiIiIiIiIhOAAl1ERERERERkAlCgi4iIiIiIiEwACnQRERERERGRCUCBLiIiIiIiIjIBKNBFREREREREJgAFuoiIiIiIiMgEoEAXERERERERmQAU6CIiIiIiIiITgAJdREREREREZAJQoIuIiIiIiIhMAAp0ERERERERkQlAgS4iIiIiIiIyASjQRURERERERCYABbqIiIiIiIjIBKBAFxEREREREZkAFOgiIiIiIiIiE4ACXURERERERGQCUKCLiIiIiIiITAAKdBEREREREZEJQIEuIiIiIiIiMgEo0EVEREREREQmAAW6iIiIiIiIDI0jjjiiWrZsWXXQQQd1zkgTCnQREREREREZGgcccEB11FFHVfvuu2/njDQxZ8PGTdueXPdE51BERERERERk6hxyyCHVggULkuV8r732qj7//PPqww8/rF566aXqzTff7Nz1W5YvX17ts88+naOdeeONN6rnnnuuc/RbTjjhhOroo49Oz3799dfJjw0bNlRvvfVW544dISyLFi1K4dtjjz1SuN59991q/fr11Weffda5azQsXXZatXDB/M6RAl1ERERERESmmaVLl1bHHXdcteuuu3bO/JZvvvmmevXVV6vHH3+8c6aqDj744Orss89O4rmJl19+eYdndtttt+qcc86pDjvssM6Z3/Lll19WL7zwQtpy5s2bV5122mnV3nvv3TnzW7Zu3Vo98cQT1TvvvNM5M3wU6NMEPTSnnHJKKhTw1VdfVU8//XT12muvpWMZHyeddFJ1/PHHV7vs8u0MDnrBeJHpFZsUDj300OrMM8/cXgFRftatW5cqKpGZwEx4z0RERGQ8LFy4sFqyZEkS55988kn1wQcfpPbv66+/nsQ0lm5EOuIZqzVw/owzzqj23HPPJJDrLNlvv/129corr3SOqur000+vjj322PQ/z6DFsIjjf1jsEdxhrWeIPYJ+//33T+1v7qftgiUdfUd4OV67dm26PgomRqAzDOGYY45JmRMil0yip4MhCWQePSSTCmFnoYNcoE+HwMK9E088sTryyCNTr070ODFUg7R5//33U6GsGxIi38JwFdIwFw6PPvpoeqEnhUEFehm3XpS9jDJ1ZkL5GgWmg4iIiDRx3nnnJcH96aefVg8//HCyWjPU/amnnkpinaHsiGXE8Jo1a9Izoa+gTbuYYfNY3NFMtD8efPDB7aIasY1bu+++exLhjzzySDqPgeHkk09O/7/44ovVs88+m/4H7p8/f37SXc8880y1adOmzpXhUgr0dq38aQQBSoZhfabnIgQu0NCjx4TMPPXUU1MmfZfYb7/9qgsuuCAVnLlz5+4wHIT/EXOxAiICT2SSoeK95JJL0nbxxRenSllEREREZj9oOkAwv/fee+n/4KOPPkpWbTr28+HnGG7Rg9u2bUuG214g+vEHQY3xMrd4I8rpCIADDzxw++J0aCj8oOMgt8QD89uxuKNPsaiPi5ELdIY6tBGXc+bM6Tr/YDZC2tBp0QvEOkM3RCYZKkLKMxudT1FRi4iIiMjshmHtgOhevHhx+j8HizcW8s2bN3fOfGusBQQ3lu8w9mAlx0hZguWcZxhljOgvQaAj9tFNiHSEd+hLBPrHH3+c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ERERkWGjQBcRkYmC4f6srr9kyZLtCxmyMB6LUDIPP2CqS75ehIiIiMhMR4EuIiITBQK916J+rHnBIpWscSAiIiIyW1Cgi4jIRMFifiwOmC+uCCw2iNWctTJWr16t9VxERERmHS4SJyIiIiIiIjIGXCROREREREREZAJRoIuIiIiIiIhMAAp0ERERERERkQlAgS4iIiIiIiIyASjQRURERERERCYABbqIiIiIiIjIBKBAFxERERERmWUceOCB1THHHLN9O/roo6v99tuvc7WZhQsXVkuXLq122223zpnp49BDD03h2GuvvTpndoTzXOe+7yoKdBERERERkVnG/PnzqzPPPHP7dtZZZ1WXXHJJde655zYKZAgxPwyRfNJJJ6WwnHzyyZ0zO0LnwBlnnJHu+66iQBcREREREZmFfPXVV9Wjjz5aXX/99Wl78cUXq0MOOaRRIMPq1aurVatWVW+++WbnzPQyZ86cFIZ99923c+ZbsNgfdthh1S67fLcl6pwNGzdte3LdE51DERERERERmemcfvrp1VFHHVWtW7euevXVVztnq2RF37ZtW3X33XdXy5cvr7788stqjz32qA444IBq06ZN1d57713ts88+1bPPPpuGyR933HFJVOe899571RNPfKshuY61nmc++eST6qWXXqpefvnldK3k/PPPT/4AnQXPP/98+h8WLFhQLV68OAl03L/vvvvSeaz9S5Ys2W7Rf/vtt6tnnnmm+uyzz6rDDz+8OuGEE6q33nqrmjdvXjV37txq69at1caNG6vXX3893Q9NYWSkAP5yL88AHQVY+aNzY9gsXXZatXDB/M7RhFrQ6VFhCAaJKFLCS8O8mFNPPXUoc2NEZOaBJYCGSJu5dZMCjSa+dexnMtbJw8O0FZFhEYIbK/YRRxyR9gjfjz76KP3P95R6BxH84Ycfbt8+//zzJILjeb6/1FEI/i1btiRxzTFD1ZvADTYEdQ7HiGL8DAjLihUr0rV33303bfzPMH2u7b777tX++++f/Pv6669THAgfgv6ggw5KbnQL48cff5w6ALDcBwzxR4/m4Rglu/7lz372V1u2bO4cDhd6TOiNWLRoUe1GQtC7Q4LSm0EPB70408Wll16a3I6CNm4o+BSGXXfddYcCQFqcd955Kf6bNw8/b8I/eqXy3rVRQ/4w34S8oWerCXrATjzxxNT7xn395GVbPyaRqZSLcecx/lJJ0kNLxTsJIObOOeecVEm/8847nbPSllHUU239oPecHvcoY/3m56jKQvkNOu2001LYsVqMs+6dKlOpk4dBm3JDnXTBBReksE9nO2O6GXfaNrVTppOZkhciMxGEN+8xojTqj+OPPz6dx0L9xhtvJOvxN998Uz300EPJqoz1+dhjj03fJoa48yx7NsQs7+oXX3xRPf300+m5+K6tXbs2WaFfe+215D4i+ZVXXkl+5uA2dQpCO0QwnQKIbsLCdxi/Edt8Gwkv1zZs2FA9+eSTKcz4ix9AWPiW8twDDzyQrtOxEG4T725hxIJ/8MEHpzYE91LX4iejCLCoE+dhM+9/w3/QgQd2jsZgQafngp4NErzcGJoAFA7+bxoaMVvAasIiCI4U6A/KCi8XL+Cw5sbI9EKnCGKEhpjIdIMIo15gnw9nm3TiW1fXgJlJWCcPj3Gnre0UkZkPYpU22LXXXltdd9111SmnnJJEeD60HMGLSO4G7sRoHoaXcz8iOBabW7ZsWTLEskeA77nnnsnC3QR1GroQcQ3sscqXHauIaMR63oFO5wId8lwLOA4Q1bhNONqEEbfppOdejukUff/991PnxDgYi0Cnx4Tx/OX2wgsvpHtIpPvvvz/1lIiUYIF97LHH0jYp1lgRGS/05NP736uBMUkgvvjWsZ/JWCcPD9NWRKYKdQcai3nozBnnu3PPPff0/b1E1GJlZqRLCFfEOsIWocsw89gQ/FiiGX7eBG4ggrFehwWbjgOs2zm4QRzyEUTchx/434s2YeQ7zJB7DEmMGsKCTyfAuBjpInEMcScDKCTr16/vnN0ZrG0MLaDXmMLEMwxBJHOwNtCTG0MfEPtPPfXUDoWMoRwMZaAXhEyhRwULBQnOcIVyoYSc8JteHe7FDXpzPvjgg9QApEeFhQjIZDKW0QAU9nzoVyxkQE8QmU44KVTEOUYJXHTRRSmc9N5wnY6LGJrB8DyGtFFAeZ7CEvEg3CzYkH+oiRfPUNhwj2v0PhHePFxA3JhvQdyAeJGGDClhH4sx4B9u0ntOXIHeKHrbmtIO/5lPCTQmeOmA/MItCj4N6BgqwnwQwsML+sgjj6Thn8SXF5/hM3kYiXOkXV4eWGUyKNOB9CIdYhEJaOtHHcQNP0iD6Dyil42hsaQR+YtFDMgzeispI8SN/G+TT3nceIb0p1KJzivKBen/+OOPp2Py6eyzz06VWqRjHfjLs+Qx+UDZjDJFGHgn8jJV5j/lMxbcyEe29ConTFWhp5b3lXhQ1tlIv7zntqTftGpTL5TwLHOM8vqoLj6ffvppytfIg255hDtN9U/0yBKH+Pi0qSva0Csfgrb+UZ54P4krbtfdh39leQTeK+oYerWpOylv1OU8m5exNoQfbepC6lSuERbyH9rmRZQFyjdxZ0Ec8pSyxrnI+7a0/QbR2CHP4n0Y1fen33cnz1PSheGEhJ/7IHevW53M9am+x3Vuct9zzz23vTHVVDZzKEtYUcibO++8s3O23XcE2rwjeX5SJihXvA8YJI488siU99QthIW8jfeFRZPiG1OXtlHWiR/f7qij8Z+0za1MUPfd51nSiP9pd9TRrZ0CbfICmsoBZZf/m/KCaSvEj7qMcoDbvdwSkR2h/qCu6aZ9aBtD/v6h2ajzqa/41lA3807S1uRcQB1FO5T38+GHH+6c7Q5uU2/hH+847lJvUhfE95AwUR+iS+JbSRxilBzfOOJG/Yrf3MO1qPP5pmPtp72P223CGNPOqBeJO8PhQ7MMmxmxSBwNAD4+7PNjGlVkJB9rMoHKnMqaxkjAxwQhRQLzMaXxRe9ILsa6EX4x14HMIePxjw9r/CYfmcVwMz4G+IMACXiW+xAmFCz8R6jy8eU87gKFhQ9YfFSjgOXQOKPg82LwQvDxDrEb4B7u4j7+4B/xxn8WTyA9Al4A0orGD/7zUWOOHnNBcDsnFk6gEUhacy8vE3GNOR8lxIM44yaNl4C041nOE5+AMJPePBfwwaUxQd7iL2nN87x4EZfII+4NIh24N3rfCAvpwHnuD9r4UQf34U4eN+JDvIgfbgT8T0OZZ4hf23yKuFH2qIwouzSIiEsJ91HWqdAoOzRQekGjhvyj8iHulGHCQCdDnkakBflP+aSsUwaJJ/lPGQx6lRPCzzn23BPlrptw7jet2tQLbSEdKBtAONkQOTTEacxCtzwibE31D9d4Lt41/ieexKtbXdGGNu9r7h/5zn11/lGe+JCRhoQ9Dxcfr7z8l1A28JOyQpmh7FCGCBtlalDa1IW818SR/IF+8iIgbfhOUB+Tp9SV5D3hb0s3f8tvUJSlCHMckxfD/P6EP23eHcKNH4SdtMdN/OY5yh2Ee3V18nS+x4SFsomb1Ks0NkkP7mMhNdyZCnVhrvuOtH1HIm4xz5F6mvtIv7hGnPhWRBsgyhx+5m7kacv/vN901hA+0otwUE7Iqzwdmr77PEvdlrtb0q2d0jYvSCsa0dzHs9xHWKk7Od9EvHd0BtHpwbODuiUiU4O6kXeSdx2RnMO7yMa7H99K6rwrr7wyrQXSi3iP6bTkfac+K6Euoh7iu099yUZbjW942SFZR9sw0sagzuU+6mrqtHEx0kXiEIJ85BFQfCwQC7HxcebjTQOTSpjGGAUhPiZkHB8TrBn03NBAwR3uJaO4lwzmo0OjhURmCAcfTnqo+Zjx0SSDaWRwfx3hN40DrJH05OAG5wkn4aH3GP/xj/N8iGJhExqMfFgpMOE/lhM+gmQ48eYc4SPO0ejE4kzhgQgDacF5epJ4hh7s8C8stTQacIce90gXCjthxQ0KL/HlHj7UFDwsAfRG8xJwjUJKuIgPz+I+95JW9EThNvcSHtKadEfg1YE/NKZpNJBWQJrgJmHh5Yvw8HLhJu6T9zTOcJ/nSLuIC+7RuMFN0ijKA89GuufpQO9Y/iz5HtaYtn7UQfippIgLz+A/lQWNBf4nbSNfqABogJJvuNc2nyJu+EHZIy7cR0UR5YKyS/lCBFCmqLgoqzT6mohn8Yf8p4IlDDxL3IkDz9MYI40IPxUTIx5IY+LBddwhHhwT317lhHRmI068g9yDdYVrTfSbVm3qhToo97hJ/pCepAHPUUZJd9yM+HAefwlHtzxCQDXVP7iR1z9t64petH1fwz/ie++99273D38oA6QjzxFO0oWyQe8xacp9pA8CgHeVMHNflEfymDyLhnnUMVHGuJdnGY3QrXOmJPwgLr3qQsotaYeIIM/7yQvKQoTvwQcfTGU+0ia+G6RNG/r5BpVlMOI77O9PP+8OdQF5z310AnIfZZ36MurzXnXydL3H1L+4ySge0oe8jvQhPNRZlC+O87JZRz9hJt94R7iXvML9ft4R6k7KLyM+KEdcbypzfDeiPibsdeGM7xjxJ5/xH/8II+HHTeKO+zSq6777iFrKJOlKHOvo1k5pmxcIecoe1/iexH2EjThSliiXeRwJc3Q+sCAU4YU2brEXkd9CXUO9Et+dOqhTIOoYyBeJo76gfqE+4tvKt4aN8zxDfU2diDtc5zvE+0t7r07k4nZ8u3jvcZd6Fr+iPsItvvUc4z7fTuoJ3Ec/8M2grub7it98d6lzos7nHPUU9QL1Y5sw8jzpRbwJW1N6DYOxLxLHh4LEYThTvtGwo5LtBh81Mi+gsJHgZDIfK+BDQmZTaecVNcc83xYyNIZo4Q6FBHfxL+CjSOZSSPgoAf7TuKKhkfvPh5ePJi9Jr3gGhCE+TEDBwW0aW8SZwsgHkoKVD8HEXwo0ewo8UEjpHKGhHg1awE0aGRT8gOeIK/6ElQNoLDJnpdvifYSZMNLAiDCSN6Ql53k5gHSicUDYI50Bv/M85pg0pzGHe3V0SwcaJIiWvJE2iB9AA4XGDPHBTyA+lAFe4jiPG6QbjVfi1k8+BZQVykwTNCTJUyqdXuI8h3hSNgPyn7Qg7lEuqYQ5Jp+5HlBZcUxFit/4OWg5aWKQtGpTL7SBd4PGdjkvi7zg/S/dqssj0o4wcj7Pk7r6p21dQXpgqSzrTM5xjWfb5EPUjZGOAR84Gt5RLrj/rrvuSudyCD/lorQCB1HHUJ+UdQx5QvgIwyD0qgvr6CcvgDqQ9ynPe8oEaZb7QWdImRe51TTSeSrfoFF9f9q8O/hLvvPeRzoQNjp5EE91DOs9poPmN7/5TRK6AW7xLGUBYTgoEWbSvnSfcFE+Iu36fUcQtXn5DerKHN8Z8pv07kaEK8ANwk4bK56lXJB2+N/ru98vbfOC8gOEKfKR++hYoBOE+3MYqRQj3HJxDv26JSJVagPfdNNNqe5tgqHm+fB2YGj5rbfemuok3Lj++ut32uIZ6hTew6gXaXtQP9TVe4DbuX90IN5www07jATleky7Bdo0t9xyS+rQZFu1atX27wtxI46EM+Ac9zACB/oJI98uvrHjZOQCnQqWhj6Vab5REfNx6QYfrV730FihwqYxksNz/VTeuDEI+E/PC9ZNVkuM7eKLL04fFT6eTQ3KEgReHTxPQwG/+BDSSCvDS4HjPCKYRhthouGAwCyhERQfvgBBS1gRAVdddVUaAkLHSq+w8xwFm7jSYCechJEGHX5znkYD53G/zE/yuC7e3Etc6uiWDrhPwzhvAA3iR0A88Is0JR7Eh3jRAIp8Id40HjhPxdZPPgXkB+lYB/7Sw0cZp1Lrp6yW7wXgD/5RRoA94WVYZF6G2Ygf5Yi0gkHLSRODpFWbeqEthJvGIfG47LLLqmuuuSYN44y0yanLI9KC8BDOnLr6p21dQWOfXmrmU+Ub50IItMkH/CNNyzJAuHhHKKsBQo5O0wsvvDANAWPVVyyp5H0TUccgdPL4sBEWwsc2CL3qwjr6yQtArDT5k9cLvHtlXtATj7iDpnRu8reOft7pnLZlKmjz7iACCTdxpCzgFnVD3hlUMsz3mI4XhjMTDso6ZROrylSJMFOe8rRjI75cy9Oun3ekKT/rylz5LW6C9CqfLQU3YSY85TsAdd/9fmmTFzRy8Yt7L7/88jSvlA6tuveWMoFAp5zSyVQ2nPtxS0RGD21t2hNt6vJBob3DNihNYaRNFd82OjAH/Q5PFyMX6MBHhZ6NfKPiHXdiTBd89GicIdDyjULBNop44kd8rAdpFNMrjmU2PpCIQuaQsmgMArQbWJOjoYOFORpeiNtoUGM9oYc8hsvNFIgH8SFexIP4YGUjHqQ552k8EP+wgHVjkHxC/FO+EGdUJnmjsRdtG2RNZZjGEWWYvIOplJN+mWqZ7gWVMr/Fi8ilfJIG5DcNxbbCql/a1BUIZ3qxy57r6NmG6cwHpm2QDogNRB31Ne5ihW1Tfri/jA8dGdQLpWididCrX+ZFL+vEKGlTpvqBvGdkCVZjhB6WUUQUZYShyP0ylfeY0QvMX2d4JGKO95K2w3RaOghfmXZRfqNDbqrvyGygbV5Q5ig/jNQh/fhuRfohrnPoXCL96VSgo7Ssu/pxS0SkHzAkUJ/QrmKE0LjZ/nWMD+aw90G/9wW97mOPOKI3PI4B60ZuBSndiX1J2/NxzMeZDwyWTYZR0JjL9wzXoNHf9Hw/5/GLjbiW99FA5zxhyf0LS2B+Px+5aCjl57GcMByEISW33XZbOiYd+SDn95V7huzhLwIW0cOHm2cJB+FFwCIy43w8l1O6G9Qdd0uHch80nQ+anqfXjQYbjTKsP/hLvMLKRHxj/mCke7fwNeVTUN4PzCGkkUJjhecRlOV9dc9BDAvMr3OOBhH/sxEW9ox0Kcsve4YF5fnG/73KSRDHTXs6P/ifNIH8OnMPI63Kzo/SnaA83+0+LD+IDypn4kJceV9D9ELdc/mefKb+ibomzlMmIu2B89xLXKgr6tKZNI14lv7U7XvlA/7xnlMHdHOHdCAOfKAYHkZ4GE5G+Q7i/oDjyDvCXBcf9jHULPev276k6XrdcZ4X+XPUS+V7UJLfn1Oer9uz1aVz/g2K871ouq88H8d5mapL/0G/P4hThg7efvvt1Y033pjykTqD0QPEq3xuWO8xozOII2to0EFFnBiBh1vdKN2tcx932eiEbCq/MXwyf0eirmBOdK8OqG7+5/ug7XF5PiBduFaWO/bUdXXf/bp9kJ+PvGD0I2lw99137zTdKu4nXVhdnuGkdGYxvJROXkaj4E7cR9rzfeE7S5jpgM7LF3vqIaaukeaURfIkdyvuc+/evft+9mvWrKluvvnm1N6JuhNGtS9JtXPbh6e6L+n3vqDpfo4RLVgUqazz+/ig1omTun0wyHkaHDQ+aITk92GRo7c5F1MBH3oozwe5OzkM8eDDh1ik5ye/j55nGohYd/l4ES72NE4JW9xHWiGY82F53ENYGSYJ3Ic/DPngg1wn8vM94cLSgjWZj2xYyeM8wpY0ivPxXFC6V1Ke75YOxOHqq69OFp/yufy+nPJ8uSdNCT95ir80JuI8nR3EOz/fTz7llP4G5AHlPH6qiLJdulu3BxplDOMBzpP/lAfynzBANJoR/xDPU06XL1+ehjTiTr/lBD9Itziu2yOGowOEnsw4D4Qz0iqvPIPSvaA8X14P4h3A/9x9ymvEBbq5H1MdEMX5e81xWf/kdQXEedKVIeqxOnfuft2+bT6Ef2UjlrLDO8IK9kA6RBmDuI/y3s3iSccGlkTCw715OMPaVtbLbfZBr/NBHOd5wT7OIyrLzpKcOO51vmlPutWlc/4NgjgfNB33c36Q709+X04cMxJj5cqV6TsBnKduoy6njOdxAq4P6z2mbCL+EXJxHQFHB1jQy71yH0Q9Td3GcP78Pizl/CxQdHbl70h+H3VFKXqD/L46mq63Pa47T2d5fHPzfKA8RL0flO6U7pXtlMiLvJ4g7fK8AEZZMJIn/+4wGgMLOG7ybgZcIw/ogKE+ocObxZziGotSMaUgzx/m1uduxXn37t27n2n7nO0CfVRbW//K+4L8XN01rH6IFj4GNDhpjDFPjBVB+ZgEpRv51nS97nwQx3x48J+PIWKGDzpDtRA10TCJe6OBwnnmufJMXMvdzLeA/xF0NJRoENAA5uNFfFm0iEY3H2aG3HEvjQ82BDMNLgQr/tHooIFDYyP3hw8jDUoa/bgZC7fwUeajn99bbtEhQEMRwmLDeSwxfETJCxrQ+XNBfi6/Vh4D/5fpQCOUMJP/lAOuY00snyu3pvPlFvGPRmacj3gSDuIf5/vJJ7YgjvMtP09+svok0IhB7Of3lhuwJ31oNFE2V6xYkRreNLJo6HCdhTg4RmAwdJBywhYCi04IGlHc27ac4B7xJ768C/gZ1/JtutMK6q7Fll8njJRL4k364C/DJmmcB/lzEMexMRyeMk7nBnPYmSPJXEnSmrgF3NtPXdFra5MP+Ee+8U6Ef6QvG+8kDWLuQ/zQ2CXehI37EGghuvMt4sLG+8x7RvmgPos0JO8IC2HM6xnmrV5xxRUpveNc3Zb7UZ6HpuN+8iKej//zc0F5rWnr9xuU/1933O18EMf9lKkgjvMt4H8EOO8r1swoD7wXiG/emXKxMf4f1nuM6OcbRloSDsJDWeMbFvfkz+XHdVvA/xFmyj7fyPiOsCf8CE/iw72DviPlVnct6HYuyO/Jr8X/vJNMvSDclMHvfe976T2gA5Dwl9/9uq2pndI2LyhzdNqRhpRF0pT3gnO4Ed/KgP/JC0Q65QsxThnqxy03Nze3mbaVjFSg59Rdjy2n7rju3jimsYBlMRqiNFj5iPKh4kOT31u35QxyHn8Y5kXDkAYzDRI+jHy0+FAyHCuepTHAcGU+lHyE+MjVuRlbCecQaAxn5H8+WsQXd4g/qyGGMGXjmDDQ4MI6R6ONRhaCjA91uEkccBM3+ADiJvfzHI0qhvWFm00bYpXGKA2xXKjFeRqRzFXLn8npdj4n7iEdWM0RQUKDgTCT/3y0GYJHfjQ92+183UZ8iBfxCFHORuMgzpOG+TNt8yknf77pGiKEZyNPsWDkz8QWhGWLBg9lE/HCexGNIe6lccRPhyHYsLxQTtj4n3OEl3v6KSeUMdIHkcZP5XQTZdOZVuX5fMvhmDAjcEJUhL/4h2U47svJ3WOjnDHMnPeMssj7xZ454rkbbP3UFd22tvnAfeQz+R/+kb6Ej3eHeZ3cx558ptFLvnMf5Yr6iusRhxyO2QgzeU3nXJ6GvBfUy5F3lDvCB9QF8Xy55TSdh7p7+8mLnDhXXivPN239fINy6o6b7ms637ZM5eTu5dfimOHEZXlAsPM+x3uaE88N4z2mLJOG1B+Eg/Dw/cStIH8O4tlyy4lzeZjjO8KeY4b1U9/y/1Tekdhymq413ZcT55rOUxZJb+p33jk60PiGUTcEuRvl1tROaZsXlB/KHv5SFknT+DaT1oQrJ/ylDJPefE95f+jYaeNWPO/m5uY2k7aSORs2btr2+GOPdg5nF/T48kGit5vGxKhBjNDrjvhFGNELXQfWqxBKNF4GBesmDeNe8eXjRgOrV7gg0pCPZK97J4W26TAuJiF8bd+NKCtAo66pfLYtJ7wTCCWs/20YR1rlceadLBuQg4L1FosTIolGb07buqIXbfMBSx+Cgo6WvEGdE/cM+u53yzs6EmjQk77MOR013fJiOhnnN2i6ylQQ7kG/78V0v8eRrt3K71QJP+hAotOljqm+I+OEERGMvCLcdGT1oqmd0jYvol6lk2yq5WA63RIRmQROP+PMauGCb6ciQRLojz36SOdQREQGBWsS1msa9PlvRGN5QpDSkH/ggQe+8w1KrOsMgcfanqfTdGJeyHcdRDVD9OlIwIrOCIs4z3B0RllgpaajSkRExscZZ56lQBcRGQYx3BOLEkM02RhezMKBWHsYSs6Q0+86DE1FHLCa87As2OaFSJWEOMPSY1oSIyoYCcG7gDWcFYuna5SQiIgMRq1Af/SRhzuHIiIyFZirj4U4hmAyt4g5ksxvZ96mfDsstpyvOgzMC5FvV1JnHjfTOoDRI4wsoZMqrOoiIjI+zjzr7J0F+iMPP9Q53JFo0DThda973etNeN3rXvd6E173ute93oTXvf5du37W2efsINCbf9T2f+nmOHjd693wute74XWvd8PrXu+G173eDa97vRte93o3xn0dkgX94Yce7ByKiIiIiIiIyCg4+5zlOw9xf+jBBzqHIiIiIiIiIjIKzlm+ov0QdxEREREREREZDcmC/uADazuHIiIiIiIiIjIKlq84tz8L+qRPpPe617vhda93w+te74bXvd4Nr3u9G173eje87vVuJAv6A2vv7xyKiIiIiIiIyChYce55Oy8St/b++zqHIiIiIiIiIjIKzj3v/J0F+v333ds5FBEREREREZFRcN75K13FXURERERERGTSSBb0++5d0zkUERERERERkVFw/soLtKCLiIiIiIiITBrJgn7vmns6hyIiIiIiIiIyClZecGG9BT1+j829e/fu3bt37969e/fu3bt3P/x9SbKgr7lndedQREREREREREbBBRdetPPPrN2z+u7OoYiIiIiIiIiMggsvunhngb767rs6hyIiIiIiIiIyCi66+BJXcRcRERERERGZNJIF/e677uwcioiIiIiIiMgouPiSS13F3b179+7du3fv3r179+7dux/3viRZ0O+68zedQxEREREREREZBZdc+r2dLeio927K3ute97rX47jce93rXvd6HJd7r3vd616P43Lvda97/dvjkmRB/80dt3cORURERERERGQUfO+yy13FXURERERERGTSSBb0O26/rXMoIiIiIiIiIqPgssuv0IIuIiIiIiIiMmkkC/rtt93aORQRERERERGRUXD5FVf6O+ju3bt37969e/fu3bt37979uPclyYJ+2623dA5FREREREREZBRcceVVO1jQk0C/9ZZVnUMRERERERERGQVXXnX1zgL9llU3dw5FREREREREZBRcdfU1ruIuIiIiIiIiMmkkC/qqm2/qHIqIiIiIiIjIKLj6mmu1oIuIiIiIiIhMGsmCfvNNN3YORURERERERGQUXHPtdTsvEnfTjTd0DkVERERERERkFFx73e/sLNBvvOF/OociIiIiIiIiMgqu+53vj28O+ty5c6vTTjutuuCCC6pjjjmmc3ZHDj744Oqss86qzjvvvGrevHmdswKkzUknnZT2OW3SVURERERERCabZEG/4X+u7xwOj6VLlybRvdtuu1Xbtm2rdtlll+qVV16pVq1aVX355ZfpHoT52WefXe26667peM6cOdX69eurO+64Ix2XHHHEEdWiRYuql19+udq4cWPn7OzkoosuqpYsWZLS5pFHHqnWrl2bzrdJVxEREREREZk8fuf7Pxi9Bf3AAw+sTj/99Orjjz+ufvWrX1V/8zd/Uz322GPVkUceWS1btizdg+WXe7Zs2VL93d/9Xdo2bNhQHX/88dXJJ5+c7ik54IADkkV5tlvaf/jDH1annnpq9c4771TffPNN52y7dBUREREREZGZwa5/+bOf/dVz69d3DocDQvrwww+vXnrppeqFF15I57D2LliwoPr888+TEGeI9iGHHFLdf//9SYh+/fXX1datW5PF+KOPPqrefvvt9FyAAD3jjDOqfffdt9pvv/2qo48+unr++efTtVNOOaX63ve+V51//vnViSeemPx666230rU99tijWrlyZbJIr1ixolq4cGH1xRdfVO+++266ft1111XHHntsEv64QecAlmjcufTSS5OVH//eeOONFEaGl1944YXVJZdckqz/iGPC+umnnyb3poPjjjuueuCBB5J/pOPmzZurV199tVW65pBGV1xxRXqO54PLL788dQC8+eabqQOA9CE+55xzTorPhx9+mPICuqUf/l52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ALFMp0c5NHyQ9OsnjeJehHZdGUCMx8/IAT/NRgfNHXfcscMQf+JA50WMGBAREREREZkkfvh/fq9auGB+52hEv4Pe7x5RhqiK40H2WLsRayE+8+sITq4hLpue72eP+GOuNMKzzf3j3CN8sYyzqjriO1bHL+8j/fmJOkYpQH59kPRDbDOEPhaG63Z/pCfloLzOkPaf/OQnacg9Qp5h7ljnmZvO2gP5/TyPO7hXuuPevXv37t27d+/evXv3496XJAv6f/z7v3UOZbbz/e9/Pw0PZ0X6W2+9NQ1Hn0kwMgKLOR0MDK2PleTXrFnjb5yLiIiIiMiM4vd+/0c7WNAV6CIiIiIiIiJjoFag//u//apzKCIiIiIiIiKj4Pd/9Af1c9BFREREREREZHwkC/q//epfO4ciIiIiIiIiMgp+9Ad/OPmruLt37969e/fu3bt37969e/ezfV+SLOi/+tdfdg5FREREREREZBT8wR/+eOdF4v71l//SORQRERERERGRUfCHP/7JzgL9l//yi86hiIiIiIiIiIyCH//kj1zFXURERERERGTSSBb0f/nFP3cORURERERERGQU/OSP/lgLuoiIiIiIiMikkSzov/jnn3cORURERERERGQU/NEf/8nOi8T988//qXMoIiIiIiIiIqPgj//kTx3iLiIiIiIiIjJpJAv6z//pHzuHIiIiIiIiIjIK/uRPf7rzEPd/+sd/6ByKiIiIiIiIyCj405/+mUPcRURERERERCaNZEH/x3/4f51DERERERERERkFP/2z/9ufBX3btm2d/+rxute74XWvd8PrXu+G173eDa97vRte93o3vO71boz3elX9f7Rgt25juz1CAAAAAElFTkSuQmCC"}}},{"cell_type":"markdown","source":"#Semi-Supervised Feature Learning Competition\n\n\"Learn a feature representation of at most 100 features, using a small amount of labeled data and a large amount of unlabeled data.  The orginial data is very sparse.\"\n\n\"Transform training and test data using your learned feature representation. Train a standard linear classifier on the transformed training data. Measure the AUC of the classifier on transformed test data.\"\n\n\"To prepare a submission file, please follow these steps.  Note that we have provided a script runLeaderboardEval.pl that automates steps 3, 4, and 5 assuming you have downloaded and compiled libsvm.\"\n\n\"Learn a way to transform the data from its sparse representation with a million features to a dense representation of at most 100 features.  You may use any or all of the unlabeled and labeled data that has been made available to help learn this representation.\"\n\nUse this representation to transform the data in the files public_train_data.svmlight.dat and public_test_data.svmlight.dat to your new feature space.  \n\n\"Train a Linear SVM with C=1.0 on your transformed training data, using the labels in public_train.labels.dat as ground truth for training.  You can use libsvm, SVM-light, or other similar packages.\"\n\n\"Use your linear model to predict the class label for each example in your transformed test data.\"\n\nhttps://www.kaggle.com/competitions/SemiSupervisedFeatureLearning/overview/evaluation","metadata":{}},{"cell_type":"code","source":"import tarfile\n\ntar = tarfile.open(\"../input/SemiSupervisedFeatureLearning/semisupervised_feature_learning.tgz\", \"r:gz\")\nfor member in tar.getmembers():\n     f = tar.extractfile(member)\n     if f is not None:\n         content = f.read()","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:31:01.069991Z","iopub.execute_input":"2023-07-17T14:31:01.070370Z","iopub.status.idle":"2023-07-17T14:31:18.470776Z","shell.execute_reply.started":"2023-07-17T14:31:01.070338Z","shell.execute_reply":"2023-07-17T14:31:18.468975Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#Tarfile module\n\ngetnames(self): Return the members of the archive as a list of their names. It has the same order as the list returned by getmembers().\n\nhttps://stackoverflow.com/questions/2018512/reading-tar-file-contents-without-untarring-it-in-python-script","metadata":{}},{"cell_type":"code","source":"tar.getnames()","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:31:18.473149Z","iopub.execute_input":"2023-07-17T14:31:18.473624Z","iopub.status.idle":"2023-07-17T14:31:18.485784Z","shell.execute_reply.started":"2023-07-17T14:31:18.473586Z","shell.execute_reply":"2023-07-17T14:31:18.483478Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#That's nice, we've csv files!","metadata":{}},{"cell_type":"code","source":"tar.getmembers()","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:31:18.489840Z","iopub.execute_input":"2023-07-17T14:31:18.490429Z","iopub.status.idle":"2023-07-17T14:31:18.507802Z","shell.execute_reply.started":"2023-07-17T14:31:18.490381Z","shell.execute_reply":"2023-07-17T14:31:18.505897Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tar.list(verbose=True, members=None)","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:31:18.509686Z","iopub.execute_input":"2023-07-17T14:31:18.511542Z","iopub.status.idle":"2023-07-17T14:31:18.530886Z","shell.execute_reply.started":"2023-07-17T14:31:18.511486Z","shell.execute_reply":"2023-07-17T14:31:18.529399Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#Even D.Sculley was here 12 years ago on that Competition! \n\nD. Sculley - KAGGLE STAFF - Posted 12 years ago\n\nAnswering to Ben Hamner on:\n\nhttps://www.kaggle.com/competitions/SemiSupervisedFeatureLearning/discussion/913\n\n\"Thanks for asking for clarification on this.  This competition is not directly connected to the organization of the NIPS workshop, but is being run as a service to the deep learning and semi-supervised learning research communities.  (Although they had been making good-faith efforts to maintain anonymity, it has recently been leaked by the kaggle.com that the main organizer is D. Sculley.)\"\n\n\"As described elsewhere, they will compile the results of this competition into a formal writup, which will be submitted to the workshop.  The goals of this paper will be to highlight the comparison across the methods tested, to summarize trends across methods, and to give credit to the competitors and create a permanent record of their achievements.  In the past, reports like this have attracted useful attention to those who have taken part, and the hope here would be to do the same.\"","metadata":{}},{"cell_type":"markdown","source":"#Extractall\n\ntar.extractall(path=\".\", members=None, *, numeric_owner=False)\n\nhttps://docs.python.org/3.7/library/tarfile.html","metadata":{}},{"cell_type":"code","source":"tar.extractall(path=\".\", members=None, numeric_owner=False)","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:31:18.532289Z","iopub.execute_input":"2023-07-17T14:31:18.532704Z","iopub.status.idle":"2023-07-17T14:31:28.296986Z","shell.execute_reply.started":"2023-07-17T14:31:18.532668Z","shell.execute_reply":"2023-07-17T14:31:28.295244Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#The result below is the same that I got on input 4","metadata":{}},{"cell_type":"code","source":"tar.getmembers()","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:31:28.298882Z","iopub.execute_input":"2023-07-17T14:31:28.299668Z","iopub.status.idle":"2023-07-17T14:31:28.310893Z","shell.execute_reply.started":"2023-07-17T14:31:28.299588Z","shell.execute_reply":"2023-07-17T14:31:28.308874Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#Try to Open Tar files another way? Matlab_format_data.tgz","metadata":{}},{"cell_type":"code","source":"import  tarfile\ntar = tarfile.open(\"../input/SemiSupervisedFeatureLearning/matlab_format_data.tgz\")\ntar.getmembers()","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:31:28.313578Z","iopub.execute_input":"2023-07-17T14:31:28.314324Z","iopub.status.idle":"2023-07-17T14:31:44.314874Z","shell.execute_reply.started":"2023-07-17T14:31:28.314267Z","shell.execute_reply":"2023-07-17T14:31:44.313790Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#Couldn't open one csv file! I tried all possibilities:  Though further below I could!\n\ncompetition_data/example_transform.public_train_data.csv\n\nSemiSupervisedFeatureLearning/competition_data/example_transform.public_train_data.csv\n\nsemisupervised_feature_learning/competition_data/example_transform.public_train_data.csv\n\nSemiSupervisedFeatureLearning/semisupervised_feature_learning/competition_data/example_transform.public_train_data.csv","metadata":{}},{"cell_type":"markdown","source":"#Reading the gz file (public_test.labels.dat.gz)","metadata":{}},{"cell_type":"code","source":"#https://stackoverflow.com/questions/39263929/how-can-i-read-tar-gz-file-using-pandas-read-csv-with-gzip-compression-option\n#Answered by Marlon Abeykoon Sep 1, 2016 at 6:30\nfrom sklearn.datasets import load_svmlight_file\npublic_train_data_svm = load_svmlight_file('/kaggle/working/competition_data/public_train_data.svmlight.dat')\nX_train, y_train = public_train_data_svm[0], public_train_data_svm[1]\nX_train","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:49:59.128141Z","iopub.execute_input":"2023-07-17T14:49:59.128683Z","iopub.status.idle":"2023-07-17T14:50:05.200883Z","shell.execute_reply.started":"2023-07-17T14:49:59.128643Z","shell.execute_reply":"2023-07-17T14:50:05.199607Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels=pd.read_csv(\"/kaggle/working/competition_data/public_train.labels.dat\",header=None)\nprint(labels[0].value_counts())\nlabels","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:42:12.068833Z","iopub.execute_input":"2023-07-17T14:42:12.069321Z","iopub.status.idle":"2023-07-17T14:42:12.094521Z","shell.execute_reply.started":"2023-07-17T14:42:12.069287Z","shell.execute_reply":"2023-07-17T14:42:12.093635Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train[:300]","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:52:33.987152Z","iopub.execute_input":"2023-07-17T14:52:33.987683Z","iopub.status.idle":"2023-07-17T14:52:34.000312Z","shell.execute_reply.started":"2023-07-17T14:52:33.987638Z","shell.execute_reply":"2023-07-17T14:52:33.998923Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"public_test_data_svm = load_svmlight_file('/kaggle/working/competition_data/public_test_data.svmlight.dat')\nX_test=public_test_data_svm[0]\nX_test","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:50:41.229410Z","iopub.execute_input":"2023-07-17T14:50:41.229906Z","iopub.status.idle":"2023-07-17T14:50:47.258563Z","shell.execute_reply.started":"2023-07-17T14:50:41.229869Z","shell.execute_reply":"2023-07-17T14:50:47.257169Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Train using SVM LIGHT format (= sparse data)","metadata":{}},{"cell_type":"code","source":"from catboost import Pool, cv, CatBoostClassifier, CatBoostRegressor\nfrom sklearn.metrics import f1_score,accuracy_score\ntrain_pool=Pool(data=X_train,label=labels)\ntest_pool=Pool(data=X_test)\nclf=CatBoostClassifier(verbose=False)\nclf.fit(train_pool)","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:53:01.367234Z","iopub.execute_input":"2023-07-17T14:53:01.367748Z","iopub.status.idle":"2023-07-17T15:01:47.771693Z","shell.execute_reply.started":"2023-07-17T14:53:01.367709Z","shell.execute_reply":"2023-07-17T15:01:47.769404Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"feat_imp = pd.Series(clf.feature_importances_)\nfeat_imp=pd.DataFrame(feat_imp).reset_index()\nfeat_imp.columns=['id','importance']\nfeat_imp.sort_values('importance',ascending=False,inplace=True)\nprint(feat_imp[:5])\npreds=clf.predict_proba(X_test)[:,1]\npreds","metadata":{"execution":{"iopub.status.busy":"2023-07-17T15:02:32.825464Z","iopub.execute_input":"2023-07-17T15:02:32.826025Z","iopub.status.idle":"2023-07-17T15:02:36.864786Z","shell.execute_reply.started":"2023-07-17T15:02:32.825987Z","shell.execute_reply":"2023-07-17T15:02:36.863210Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"###  Train using not sparse data (only 100 columns vs 999999 columns in sparse format)","metadata":{}},{"cell_type":"code","source":"public_train=pd.read_csv(\"/kaggle/working/competition_data/example_transform.public_train_data.csv\",header=None)\npublic_train","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:40:22.954203Z","iopub.execute_input":"2023-07-17T14:40:22.954688Z","iopub.status.idle":"2023-07-17T14:40:23.995116Z","shell.execute_reply.started":"2023-07-17T14:40:22.954653Z","shell.execute_reply":"2023-07-17T14:40:23.993728Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"public_test=pd.read_csv(\"/kaggle/working/competition_data/example_transform.public_test_data.csv\",header=None)\npublic_test","metadata":{"execution":{"iopub.status.busy":"2023-07-17T14:40:23.998388Z","iopub.execute_input":"2023-07-17T14:40:23.998862Z","iopub.status.idle":"2023-07-17T14:40:25.076151Z","shell.execute_reply.started":"2023-07-17T14:40:23.998824Z","shell.execute_reply":"2023-07-17T14:40:25.074483Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from catboost import Pool, cv, CatBoostClassifier, CatBoostRegressor\nfrom sklearn.metrics import f1_score,accuracy_score\ntrain_pool=Pool(data=public_train,label=labels)\ntest_pool=Pool(data=public_test)\nclf=CatBoostClassifier(verbose=False)\nclf.fit(train_pool)\nfeat_imp = pd.Series(clf.feature_importances_, index=public_train.columns)\nfeat_imp=pd.DataFrame(feat_imp).reset_index()\nfeat_imp.columns=['id','importance']\nfeat_imp.sort_values('importance',ascending=False,inplace=True)\nprint(feat_imp[:5])\npreds=clf.predict_proba(public_test)[:,1]\npreds","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2023-07-17T15:02:41.406194Z","iopub.execute_input":"2023-07-17T15:02:41.406669Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}