{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"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 in \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\nfrom scipy.stats import norm\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n\nimport os\nprint(os.listdir(\"../input\"))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"PATH = '../input'\ntraining_set = pd.read_csv(os.path.join(PATH, 'training_set.csv'))\ntesting_set = pd.read_csv(os.path.join(PATH, 'test_set.csv'), nrows=100)\ncomplete_set = training_set.append(testing_set)\n#training_set = training_set.set_index(training_set['object_id'])\n#training_set = training_set.drop(columns=['object_id'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"bfcfd9f1ff27f75aa24cb1f5327eeb4f5add65f0"},"cell_type":"code","source":"FEATURES = list(complete_set)\nFEATURES","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"69f866cfbb9b1503cf5509b87690528035877508"},"cell_type":"code","source":"complete_set.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9c569289442d7e93d8a444d126d72c8c98acebef"},"cell_type":"code","source":"pd.set_option('display.float_format', lambda x : '%.0f' % x)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c43ee2769d976e20117070b55b8bbb7d50c8e691"},"cell_type":"code","source":"complete_set.describe()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9bfe02b36985673aa7a325d0fab708f39f4bfcc3"},"cell_type":"code","source":"PREDICTORS = ['mjd_a59k', 'passband', 'flux']\nOUTCOME = ['detected']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b1fc7369544995010a781573c8aee84ecc78e9de"},"cell_type":"code","source":"def preprocessing(df):\n    '''\n    return a preprocessed df\n    '''\n    df_new = df.copy()\n    ### SAND BOX\n    df_new['mjd_a59k'] = df_new['mjd'] - df_new['mjd'].min()\n#     MJD to Unix time conversion: (MJD - 40587) * 86400 + seconds past UTC midnight\n#     https://wiki.polaire.nl/doku.php?id=mjd_convert_modified_julian_date\n    df_new['unix'] = (df_new['mjd'] - 40587) * 86400\n    df_new['unix'] = df_new['unix'] - df_new['unix'].min()\n    ### SAND BOX END\n    return df_new","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"fd998faa0187c8b9a0229e4248ce520fe8dea8ae"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7cd3081e9589d9aac59ec267369e437c2ce30583"},"cell_type":"code","source":"df_current = preprocessing(training_set)\n#### SAND BOX ####","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a7a7fa0da0584eef5644f1f4633ba7bf9eea50c8"},"cell_type":"code","source":"sns.distplot(df_current[df_current.detected == 0]['flux'] , fit=norm)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"15657ff1b8cdf845c85ee78ce4eabf408ec90028","_kg_hide-output":false},"cell_type":"code","source":"df_current.describe()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d59cc473ff7b17c5743db1e6a5ae4da28c2776a1"},"cell_type":"code","source":"# df_current[df_current.detected == 1].describe() - df_current[df_current.detected == 0].describe()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"eab1d0de3d441fa44ad6706ff95403a4f2eaa602"},"cell_type":"code","source":"df_current[df_current.detected == 0].isna().sum()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2253f6228ef77d666df4683edcba934419a0daac"},"cell_type":"code","source":"df_current[df_current.detected == 0].describe()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"92a51b19db2b7dcb00a439f2027fc269b071f7d9"},"cell_type":"code","source":"# df_current[df_current.detected == 1].describe()[]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"64326fc5795480a0738d0fffec5db0c58532dc78"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f7f6cb258063c88536d6e20b3e46ff2744c262a4"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e82144b44a14c1b47b5d188ba589dc28c9dc326f"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b318d9c78967eaa248a047897aeaafae13c21836"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1907a955bc1fe455176a0168fdf5ea2c56128d49"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"79093f8d3a757b4093871598021bf9d10599124f"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"30e103a1702cc453e75faf8b2b460a705034edcd"},"cell_type":"code","source":"#### SAND BOX ENDED ####","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"df0da010d24dc4e409c2d1d7c51aeffff752f1a9"},"cell_type":"code","source":"def x_y(df):\n    '''\n    determine the x and y by global variable predictors and outcome\n    '''\n    X = df[PREDICTORS]\n    y = df[OUTCOME]\n    return (X, y)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f5ffa0e2eadc47336795e9c8f0414685aa8c9c18"},"cell_type":"code","source":"training_final = preprocessing(training_set)\ntesting_final = preprocessing(pd.read_csv(os.path.join(PATH, 'test_set_sample.csv')))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"cd8f7cb5155e69520617959a281fe0c391f701ee"},"cell_type":"code","source":"X_tr, y_tr = x_y(training_final)\nX_te, y_te = x_y(testing_final)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e8a08e546dd0151058245eed3359ab6f7d2bb9c2"},"cell_type":"code","source":"from sklearn.linear_model import LogisticRegression\nfrom xgboost import XGBClassifier","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"24e707fcaed370db3b301e109a8ea0df439b217a"},"cell_type":"code","source":"models = []\n### SAND BOX ####\n# models.append(('Logistic Regression', LogisticRegression()))\n# models.append(('Extreme Gradient Booster', XGBClassifier()))\nmodels.append(('Extreme Gradient Booster', XGBClassifier(learning_rate=0.05)))\nmodels.append(('Extreme Gradient Booster', XGBClassifier(learning_rate=0.02)))\nmodels.append(('Extreme Gradient Booster', XGBClassifier(learning_rate=0.01)))\nmodels.append(('Extreme Gradient Booster', XGBClassifier(learning_rate=0.2)))\nmodels.append(('Extreme Gradient Booster', XGBClassifier(learning_rate=0.25)))\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d384947619328c2eb5106c413d66357ad6bb975d"},"cell_type":"code","source":"class ModelResult():\n    def __init__(self, name, model) :\n        self.name = name\n        self.model = model\n        self.metrics = []\n    def set_metric(self, name, metric):\n        self.metrics.append((name, metric))\n    def __str__(self):\n        returner = \"###### \" + self.name + \" ######\\n\"\n        for met_name, metric in self.metrics :\n            returner += met_name + \":\\n\"\n            returner += str(metric) + \"\\n\"\n        return returner\n    ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"dd4b9ff8325f0865f69c7a15fda4eda41e4d2ab4"},"cell_type":"code","source":"# mres = ModelResult('lr', LogisticRegression())\n# print(mres)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f001309cf4d2eb3b8ef68e3e52aa2b1ed3154fce"},"cell_type":"code","source":"from sklearn.metrics import accuracy_score, confusion_matrix, roc_curve\nimport time","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3cd873b4e6e2f0d169c175fba3c0fbe8ced9d550"},"cell_type":"code","source":"def run_models(models):\n    results = []\n    for name, model in models :\n        start = time.time()\n        model.fit(X_tr, y_tr)\n        y_pred = model.predict(X_te)\n        mr = ModelResult(name, model)\n        mr.set_metric(('accuracy'), accuracy_score(y_te, y_pred))        \n        mr.set_metric(('confusion_matrix'), confusion_matrix(y_te, y_pred))        \n        mr.set_metric(('roc_curve'), roc_curve(y_te, y_pred))\n        mr.set_metric(('time_elapsed'), time.time() - start)\n        results.append(mr)\n    return results\n#uncomment this if ready\nresults = run_models(models)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3cd873b4e6e2f0d169c175fba3c0fbe8ced9d550","scrolled":true},"cell_type":"code","source":"for res in results :\n    print(res)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6253b036d783ec677ec3eeb025d2f6e361ca06e1"},"cell_type":"code","source":"for res in results :\n    print(res)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c62bd857f1dfb0e3cb79c4d1084439af84f3d3e8"},"cell_type":"code","source":"results_3 = run_models(models_3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"650eb39e5561e20fde4356851b7ae95c962d570b"},"cell_type":"code","source":"for r in results_3 :\n    print(r)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"5b99bbeec259a8274e41c2e96da7fd8f4e5c4812"},"cell_type":"markdown","source":"PREDICTORS = ['mjd_a59k', 'passband', 'flux']\n\n###### Logistic Regression ######\naccuracy:\n0.948817\nconfusion_matrix:\n[[948817      0]\n [ 51183      0]]\nroc_curve:\n(array([0., 1.]), array([0., 1.]), array([1, 0]))\n\n###### Extreme Gradient Booster 0.1 LR ######\naccuracy:\n0.964415\nconfusion_matrix:\n[[948511    306]\n [ 35279  15904]]\nroc_curve:\n(array([0.00000000e+00, 3.22506869e-04, 1.00000000e+00]), array([0.        , 0.31072817, 1.        ]), array([2, 1, 0]))\n\n###### Extreme Gradient Booster 0.05 LR ######\naccuracy:\n0.962487\nconfusion_matrix:\n[[948635    182]\n [ 37331  13852]]\nroc_curve:\n(array([0.00000000e+00, 1.91817811e-04, 1.00000000e+00]), array([0.        , 0.27063673, 1.        ]), array([2, 1, 0]))\ntime_elapsed:\n49.75889468193054\n\n###### Extreme Gradient Booster 0.02 LR ######\naccuracy:\n0.960895\nconfusion_matrix:\n[[948691    126]\n [ 38979  12204]]\nroc_curve:\n(array([0.00000000e+00, 1.32796946e-04, 1.00000000e+00]), array([0.        , 0.23843854, 1.        ]), array([2, 1, 0]))\ntime_elapsed:\n49.226396322250366\n\n###### Extreme Gradient Booster 0.01 LR ######\naccuracy:\n0.959617\nconfusion_matrix:\n[[948680    137]\n [ 40246  10937]]\nroc_curve:\n(array([0.0000000e+00, 1.4439033e-04, 1.0000000e+00]), array([0.        , 0.21368423, 1.        ]), array([2, 1, 0]))\ntime_elapsed:\n49.153637170791626\n\n###### Extreme Gradient Booster 0.20 LR ######\naccuracy:\n0.965446\nconfusion_matrix:\n[[948454    363]\n [ 34191  16992]]\nroc_curve:\n(array([0.00000000e+00, 3.82581678e-04, 1.00000000e+00]), array([0.        , 0.33198523, 1.        ]), array([2, 1, 0]))\ntime_elapsed:\n49.09350323677063\n\n###### Extreme Gradient Booster 0.25 LR######\naccuracy:\n0.965306\nconfusion_matrix:\n[[948430    387]\n [ 34307  16876]]\nroc_curve:\n(array([0.00000000e+00, 4.07876334e-04, 1.00000000e+00]), array([0.        , 0.32971885, 1.        ]), array([2, 1, 0]))\ntime_elapsed:\n49.166661739349365\n"},{"metadata":{"trusted":true,"_uuid":"e453fd02736c5b0a4c050106d4b7d0cb48a5ba17"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6414bc0febbd0e9b7848d3619683e406c549ce8e"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"94080e469bcd634370a79aa70c3dce38d991cdf4"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b9db4c956dfcbfcdc6fa0b41b9756fe1f7586bbf"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d39f7a55efa94d8026e8615a91b14516df7f12b0"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"41d85483f2fce8e6f6fefce02d680f8cf194e382"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"fa64f394de9e10ecf438a398129d80eeaf348267"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"50069779ce97428ab32341965dce7389ec66eba1"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3a68eebbe8fd9266deeaf9de886362c4f6f49942"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"be7d5a0838b2177dc97df954afb33b5a063f7558"},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}