{"cells":[{"metadata":{"trusted":true,"_uuid":"f17ebdc0911fe66ef9568dc8265f67ccd9edf3b4"},"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nfrom sklearn.metrics import log_loss\nfrom sklearn.model_selection import StratifiedKFold\nimport gc\nimport os\nimport matplotlib.pyplot as plt\nimport seaborn as sns \nfrom sklearn.preprocessing import StandardScaler\nfrom fastdtw import fastdtw\nfrom scipy.spatial.distance import euclidean\nfrom sklearn.neighbors import KNeighborsClassifier","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"5179e4c67209e93ec283175739708d2990b5c8d1"},"cell_type":"code","source":"meta_train = pd.read_csv('../input/training_set_metadata.csv')\ntrain = pd.read_csv('../input/training_set.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"f946f2fa3e2e57aaa198e9bf7cefb2f190f4e76b"},"cell_type":"code","source":"from tqdm import tqdm_notebook\ntotal = None\nmydata = []\nfor oid in tqdm_notebook(train.object_id.unique()[:10]):\n    x = None\n    for pb in range(6):\n        sub = train[(train.object_id==oid)&(train.passband==pb)].copy()\n        x = sub[['mjd','flux']].diff().fillna(0)\n        indices = sorted(x[x.mjd>100].mjd.nlargest(2).index.values)\n        \n        x = x[['mjd']].cumsum().fillna(0)\n        x['cl'] = -1\n        if(len(indices)>0):\n            x.loc[(x.index<indices[0]),'cl'] = 0\n        if(len(indices)>1):\n            x.loc[(x.index<indices[1])&(x.index>=indices[0]),'cl'] = 1\n            x.loc[(x.index>=indices[1]),'cl'] = 2\n        else:\n            x.loc[(x.index>=indices[0]),'cl'] = 1\n        x['object_id'] = sub.object_id\n        x.mjd = (x.mjd/10).astype(int)\n        x['passband'] = sub.passband\n        x['detected'] = sub.detected\n        x['flux_err'] = sub.flux_err\n        x['flux'] = sub.flux\n            \n        mydata.append(x)\ntotal = pd.concat(mydata)\n\n ","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"0a7542b19dfd16b198b8b663f7c0c3fd8c8317b2"},"cell_type":"code","source":"total.head()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"563f83d4d6abba918808398c1d6959fad3760744"},"cell_type":"code","source":"full_train = total.groupby(['object_id','mjd'])['flux'].mean().unstack().rename_axis(None).rename_axis(None, 1).fillna(0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"520bdd62dc3e1e8e1d16a7fcb9ac32d9be498add"},"cell_type":"code","source":"full_train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"55ad6ee8f2211aa273e694a00d18743b53b513ae"},"cell_type":"code","source":"\ndef mydist(x, y, **kwargs):\n    distance, path = fastdtw(x, y, dist=euclidean)\n    return distance\n\nX = full_train.values\nY = meta_train.target.values\nknncustom = KNeighborsClassifier(n_neighbors=3, algorithm='ball_tree',\n                                 metric=mydist, n_jobs=1)\nknncustom.fit(X[:10],Y[:10])","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"73ce5f95755e743fb72b4146762cd64e49f3783f"},"cell_type":"code","source":"knncustom.predict_proba(X[:10])","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"73c03534b93970f578750d20c66b55f0943938ca"},"cell_type":"code","source":"Y[:10]","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"f132467efd68264ca16493873d3f78ab4238be2e"},"cell_type":"code","source":"knncustom.classes_","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"a1b435d0fd666f4dfbe2fd1e38af11591f16456c"},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"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.6.6"}},"nbformat":4,"nbformat_minor":1}