{"cells":[{"metadata":{"trusted":true,"_uuid":"dc69036f9ce8bf9f247ff182fcfc26204b795555"},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom sklearn.model_selection import cross_validate\nfrom sklearn import preprocessing\nfrom sklearn.gaussian_process import GaussianProcessRegressor\nfrom sklearn.gaussian_process.kernels import DotProduct, WhiteKernel\nfrom sklearn.model_selection import train_test_split\nimport matplotlib.pyplot as plt","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0976449b7e75792b94a1c6277877d237baf3774c"},"cell_type":"code","source":"dataset = \"../input\"\ndata = pd.read_csv(dataset+'/training_set.csv')\nlist(data)\ndata","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"bbc419073658dc35094df983a12377057bd64e74"},"cell_type":"code","source":"#first make the mjd integer and if we have duplicated values take the means\n#put all this is a black box train it on GP then out put to a file\n#input to model object and pace\n#notes : TimeSeriesSplit\n#update : correct the prdiction list then add cross validation.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"fb14b5b962be50a493156393ea7310d32c55ea68"},"cell_type":"code","source":"objects = data.drop_duplicates(subset=['object_id'])['object_id']\ndata['mjd'] = data['mjd'].astype(int)\ngrouped = data[data['object_id'] == 615 ]\ngrouped = data.groupby(['mjd','passband']).mean()\ngrouped.reset_index(level=['passband','mjd'],inplace=True)\ngrouped.mjd = grouped.mjd - grouped.mjd.min()\nsubset = grouped[['mjd', 'passband']]\ntuples = [tuple(x) for x in subset.values]","execution_count":null,"outputs":[]},{"metadata":{"scrolled":true,"trusted":true,"_uuid":"ac884af42934852b66517e5e869cb185e9790a60"},"cell_type":"code","source":"def generateY(tuples,interval,maxVal):\n    allMjds = list(range(0,maxVal+1,interval))\n    allPassbands = [i for i in range(0,6)]\n    allPredict = []\n    for i in range(len(allMjds)) :\n        allPredict = allPredict + [(m, p) for m in [allMjds[i]] for p in allPassbands]\n    toPredict = set(allPredict) - set(tuples)\n    toPredict = list(toPredict)\n    toPredict.sort(key=lambda tup: tup[1])\n    return pd.DataFrame(toPredict,columns=['mjd', 'passband'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7b15499d9fc23476f9a2fa8030a6a59634237678"},"cell_type":"code","source":"p = generateY(tuples,1,data.mjd.max() - data.mjd.min())\np[p['passband'] == 0 ].mjd","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"83d40ab576a46ba0fbbb9db2a2d2dd7c12494e63"},"cell_type":"code","source":"def gaussianFill(objectDf,maxVal,interval):\n    grouped = objectDf.groupby(['mjd','passband']).mean()\n    grouped.reset_index(level=['passband','mjd'],inplace=True)\n    grouped.mjd = grouped.mjd - grouped.mjd.min()\n    subset = grouped[['mjd', 'passband']]\n    tuples = [tuple(x) for x in subset.values]\n    predict = generateY(tuples,interval,maxVal)\n    result = pd.DataFrame({'object_id':[],'mjd':[],'passband':[],'flux':[],'flux_err':[]})\n    frames = []\n    for i in range(0,6):\n        flux = []\n        filtered = grouped[grouped['passband'] == i ]\n        X_train = filtered[['mjd']]\n        y_train = filtered[['flux','flux_err']]\n        kernel = DotProduct() + WhiteKernel()\n        gaussian = GaussianProcessRegressor()\n        gaussian.fit(X_train,y_train)\n        predictable = pd.DataFrame(predict[predict['passband'] == 0 ].mjd,columns=['mjd'])\n        flux = gaussian.predict(predictable)\n        ids = [objectDf['object_id'].iloc[0]]*len(flux)\n        passband = [i]*len(flux)\n        df = pd.DataFrame({'object_id':ids,'passband':passband,'mjd':predictable.mjd,'flux':[i[0] for i in flux],'flux_err':[i[1] for i in flux]})\n        frames = frames + [df]\n    result = pd.concat(frames)\n    return pd.concat(frames)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4b19d408b46107371cfca1bd4ea71636bc31e603"},"cell_type":"code","source":"result = pd.DataFrame({'object_id':[],'mjd':[],'passband':[],'flux':[],'flux_err':[]})\npredictions = []\nfor o in objects:\n    predictions.append(gaussianFill(data[data['object_id'] == o ],data.mjd.max() - data.mjd.min(),1))\n    #break;\nresult = pd.concat(predictions)\nresult.to_csv('flux_predictions.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2c4445a621c7de234b7958b4843336b85bd0090b"},"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.7"}},"nbformat":4,"nbformat_minor":1}