{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import os\nimport json\nfrom pathlib import Path\nfrom glob import glob\nimport matplotlib.pyplot as plt\n%matplotlib inline","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"from statsmodels.formula.api import quantreg\nimport pandas as pd","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train = pd.read_csv( '../input/osic-pulmonary-fibrosis-progression/train.csv' )\ntest  = pd.read_csv( '../input/osic-pulmonary-fibrosis-progression/test.csv' )\ntrain['traintest'] = 0\ntest ['traintest'] = 1\nsubmission  = pd.read_csv( '../input/osic-pulmonary-fibrosis-progression/sample_submission.csv' )\nsubmission['Weeks']   = submission['Patient_Week'].apply( lambda x: int(x.split('_')[-1]) )\nsubmission['Patient'] = submission['Patient_Week'].apply( lambda x: x.split('_')[0] ) \n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head(4)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test.head(2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.head(5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train = pd.concat( (train,test) )\ntrain.sort_values( ['Patient','Weeks'], inplace=True )\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import seaborn as sns\ncorrmat = train.corr() \nf, ax = plt.subplots(figsize =(9, 8)) \nsns.heatmap(corrmat, ax = ax, cmap =\"YlGnBu\", linewidths = 0.1) ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train['SmokingStatus'].value_counts()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"z=train.groupby(['SmokingStatus','FVC'])['Weeks'].count().to_frame().reset_index().head()\nz.style.background_gradient(cmap='Blues') ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"z=train.groupby(['SmokingStatus','Weeks'])['FVC'].count().to_frame().reset_index().head()\nz.style.background_gradient(cmap='Oranges') ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize=(16, 6))\na = sns.countplot(data=train, x='SmokingStatus', hue='Sex')\n\nfor p in a.patches:\n    a.annotate(format(p.get_height(), ','), \n           (p.get_x() + p.get_width() / 2., \n            p.get_height()), ha = 'center', va = 'center', \n           xytext = (0, 4), textcoords = 'offset points')\n\nplt.title('Gender wise SmokingStatus', fontsize=16)\nsns.despine(left=True, bottom=True);\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train['Sex']           = pd.factorize( train['Sex'] )[0]\ntrain['SmokingStatus'] = pd.factorize( train['SmokingStatus'] )[0]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model1 = quantreg('FVC ~ Weeks+Percent+Age+Sex+SmokingStatus', train).fit( q=0.15 )\nmodel2  = quantreg('FVC ~ Weeks+Percent+Age+Sex+SmokingStatus', train).fit( q=0.50 )\nmodel3 = quantreg('FVC ~ Weeks+Percent+Age+Sex+SmokingStatus', train).fit( q=0.85 )","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import numpy as np\ntrain['ypred1'] = model1.predict( train ).values\ntrain['ypred2']  = model2.predict( train ).values\ntrain['ypred3'] = model3.predict( train ).values\ntrain['ypredstd'] = 0.5*np.abs(train['ypred3'] - train['ypred2'])+0.5*np.abs(train['ypred2'] - train['ypred1'])\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head(2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"dt = train.loc[ train.traintest==1 ,['Patient','Percent','Age','Sex','SmokingStatus']]\ntest = pd.merge( submission, dt, on='Patient', how='left' )\ntest.sort_values( ['Patient','Weeks'], inplace=True )\ntest['ypred1'] = model1.predict( test ).values\ntest['FVC']    = model2.predict( test ).values\ntest['ypred3'] = model3.predict( test ).values\ntest['Confidence'] = np.abs(test['ypred3'] - test['ypred1']) / 2\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test[['Patient_Week','FVC','Confidence']].to_csv('submission.csv', index=False)\ndf=pd.read_csv(\"submission.csv\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df.head(5)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}