{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import sys\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport pandas as pd\nfrom skimage.io import imread\nfrom sklearn.metrics import accuracy_score\n%matplotlib inline","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Visualization and data collection with rxrx1-utils"},{"metadata":{"trusted":true},"cell_type":"code","source":"import os\nimport sys\n!git clone https://github.com/recursionpharma/rxrx1-utils\n\nsys.path.append('rxrx1-utils')\nimport rxrx.io as rio\n\nmd = rio.combine_metadata()\n\nmd.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"t = rio.load_site('train', 'RPE-05', 3, 'D19', 2)\nfig, axes = plt.subplots(2, 3, figsize=(24, 16))\n\nfor i, ax in enumerate(axes.flatten()):\n    ax.axis('off')\n    ax.set_title('channel {}'.format(i + 1))\n    ax.imshow(t[:, :, i], cmap='gray')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y = rio.load_site_as_rgb('train', 'HUVEC-08', 4, 'K09', 1)\n\nplt.figure(figsize=(8, 8))\nplt.axis('off')\n\nplt.imshow(y)","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"md = rio.combine_metadata()\nmd.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Basic model from pixel_stats to test submission"},{"metadata":{"trusted":true},"cell_type":"code","source":"df_pix = pd.read_csv(BASE_PATH+'pixel_stats.csv')\ndf_pix.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Flatten pixel statistics of all channles"},{"metadata":{"trusted":true},"cell_type":"code","source":"df_pix['idx'] = df_pix.groupby('id_code').cumcount()\ndf_pix = df_pix.pivot(index='id_code',columns='idx')[['mean','std', 'median','min','max' ]]\ndf_pix.columns = df_pix.columns.get_level_values(0)\ndf_pix.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Merge pixelstatistics with md"},{"metadata":{"trusted":true},"cell_type":"code","source":"df_pix=df_pix.reset_index()\nmd=md[md.well_type=='treatment']\nmd=md.reset_index()\n\nmd.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df=md[['id_code','sirna', 'dataset','well_type']].merge(df_pix, on='id_code', how='left')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train = df.loc[df.dataset=='train']\ndf_test = df.loc[df.dataset=='test']\ndf_train.shape, df_test.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train=df_train.drop(['dataset', 'well_type'], axis=1)\ndf_test=df_test.drop(['dataset','well_type'], axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"cols=[]\nfor i in range(len(df_train.columns[2:])):\n    cols.append(df_train.columns[i+2]+str(i))\ndf_train.columns=['id_code','sirna']+cols\ndf_test.columns=['id_code','sirna']+cols","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X = df_train[df_train.columns[2:]].copy()\ny=df_train.sirna.values.astype(int)\nX_test = df_test[df_test.columns[2:]].copy()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.neighbors import KNeighborsClassifier \nknn = KNeighborsClassifier(n_neighbors = 7).fit(X, y) ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pred_train = knn.predict(X)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"accuracy_score(y, pred_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_test.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X.shape, df_test.shape, df_test[df_test.columns[2:]].shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_test['pred']=knn.predict(df_test[df_test.columns[2:]])","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Submission"},{"metadata":{"trusted":true},"cell_type":"code","source":"df_sub=pd.read_csv(BASE_PATH+'sample_submission.csv')\ndf_sub.head()\n\ndf_submission=df_sub.drop(['sirna'], axis=1).merge(df_test[['id_code','pred']], on='id_code', how='left')\ndf_submission.columns=['id_code','sirna']\ndf_submission.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_submission.to_csv('test_submission.csv',index=False)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}