{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"markdown","source":"This kernel displays light curves per class to help you feel the data and inspire feature engineering."},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true,"_kg_hide-input":true},"cell_type":"code","source":"%matplotlib inline\nimport warnings\nwarnings.filterwarnings('ignore')\nimport os.path\nimport gc\nimport time\nimport pickle\nimport feather\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nfrom IPython.core.display import HTML\nfrom IPython.display import Markdown, display\n\ndef read_data(directory):\n    train_dtypes = {\n        'object_id': np.int32,\n        'mjd': np.float64,\n        'passband': np.int8,\n        'flux': np.float32,\n    }\n    train_file_path = os.path.join(directory, 'training_set.csv')\n    #print('reading {}'.format(train_file_path))\n    train = pd.read_csv(train_file_path, dtype=train_dtypes, usecols=list(train_dtypes.keys()))\n\n    train_meta_dtypes = {\n        'object_id': np.int32,\n        'target': np.int8,\n    }\n    train_meta_file_path = os.path.join(directory, 'training_set_metadata.csv')\n    #print('reading {}'.format(train_meta_file_path))\n    train_meta = pd.read_csv(train_meta_file_path, dtype=train_meta_dtypes, usecols=list(train_meta_dtypes.keys()))\n\n    object_id_to_target = train_meta.set_index('object_id')['target']\n    train['target'] = train['object_id'].map(object_id_to_target)\n    assert (pd.isnull(train['target'])).astype(np.int32).sum() == 0\n\n    return train","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"298183729dc313faa83d24ae2e499283b0c0c50f","_kg_hide-input":true},"cell_type":"code","source":"directory = '../input/'\ntrain = read_data(directory)\nclasses = train['target'].unique().tolist()\npassbands = [x for x in range(6)]\nrepresentatives = {}\nN = 3\nfor class_id in classes:\n    representatives[class_id] = train[train.target == class_id]['object_id'].sample(N, random_state=1685).values.tolist()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"5c08a6cfa698ecec822a845f5d0962192a0a957b","_kg_hide-input":true},"cell_type":"code","source":"pal = sns.color_palette(\"hls\", n_colors=6)\nfor class_id, object_ids in representatives.items():\n    display(Markdown('# Class {}'.format(class_id)))   \n    for i, object_id in enumerate(object_ids):      \n        plt.figure(figsize=[12, 2])    \n        #display(Markdown('## object {}'.format(object_id)))\n        data = train[train.object_id == object_id]        \n        ax = sns.pointplot(x=\"mjd\", y=\"flux\", hue=\"passband\", data=data, palette=pal, ci=None, join=False)\n#         ax.get_xaxis().set_visible(False)\n        plt.tick_params(\n            axis='x',          # changes apply to the x-axis\n            which='both',      # both major and minor ticks are affected\n            bottom=False,      # ticks along the bottom edge are off\n            top=False,         # ticks along the top edge are off\n            labelbottom=False)\n        plt.legend(bbox_to_anchor=(1.05, 1.02), loc=2, borderaxespad=0., title='passband')            \n        plt.tight_layout()\n        plt.show()","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}