{"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_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-13T05:46:40.330990Z","iopub.execute_input":"2022-07-13T05:46:40.331384Z","iopub.status.idle":"2022-07-13T05:46:40.340759Z","shell.execute_reply.started":"2022-07-13T05:46:40.331350Z","shell.execute_reply":"2022-07-13T05:46:40.339588Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **1. Importing  modules:-**","metadata":{}},{"cell_type":"code","source":"#--------- Basic Modules ------------------\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nimport warnings\nwarnings.filterwarnings(action='ignore')\n\n#------------- Algorithm -------------------------\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.svm import SVC\nfrom sklearn.tree import DecisionTreeClassifier\nfrom sklearn.ensemble import RandomForestClassifier,GradientBoostingClassifier,AdaBoostClassifier,ExtraTreesClassifier\nfrom xgboost import XGBClassifier\nfrom sklearn.naive_bayes import GaussianNB\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.ensemble import VotingClassifier\nfrom sklearn.metrics import accuracy_score","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:40.426817Z","iopub.execute_input":"2022-07-13T05:46:40.428105Z","iopub.status.idle":"2022-07-13T05:46:40.435573Z","shell.execute_reply.started":"2022-07-13T05:46:40.428063Z","shell.execute_reply":"2022-07-13T05:46:40.434663Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **2. Loading Files:-**","metadata":{}},{"cell_type":"code","source":"train=pd.read_csv('/kaggle/input/spaceship-titanic/train.csv')\n\n#---------------------------- Test ----------------------\n\ntest=pd.read_csv('/kaggle/input/spaceship-titanic/test.csv')\n\n#--------------------------------------------------------\n\nsubmission=pd.read_csv('/kaggle/input/spaceship-titanic/sample_submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:40.528238Z","iopub.execute_input":"2022-07-13T05:46:40.528850Z","iopub.status.idle":"2022-07-13T05:46:40.597020Z","shell.execute_reply.started":"2022-07-13T05:46:40.528818Z","shell.execute_reply":"2022-07-13T05:46:40.595674Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **3. Data Engineering:-**","metadata":{}},{"cell_type":"markdown","source":"**3.1. Extracting Cabin group,name,extension:-**\n","metadata":{}},{"cell_type":"code","source":"train['Cabin'].fillna('0',inplace=True)\ncabin_class=[]\ncabin_extension=[]\ncabin_number=[]\ncabin=list(train['Cabin'])\nfor i in cabin:\n    cabin_class.append(i[0])\nfor i in cabin:\n    cabin_extension.append(i[2:3])  \nfor i in cabin:\n    cabin_number.append(i[-1])\n    \ntrain['cabin_extension']=cabin_extension\ntrain['cabin_class']=cabin_class\ntrain['cabin_number']=cabin_number\ntrain.replace({\"0\",np.nan},inplace=True)\n\ntrain['cabin_extension']=pd.to_numeric(train['cabin_extension'])","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:40.630305Z","iopub.execute_input":"2022-07-13T05:46:40.630714Z","iopub.status.idle":"2022-07-13T05:46:40.682875Z","shell.execute_reply.started":"2022-07-13T05:46:40.630678Z","shell.execute_reply":"2022-07-13T05:46:40.681910Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.2. PassengerId groupism**","metadata":{}},{"cell_type":"code","source":"#---------------------------------  Extract passenge rcolumn -----------------------------------\ncol=list(train['PassengerId'])\ncol1=[]\nfor i in col:\n    col1.append(i[-1:])\ntrain['group_123']=col1\ntrain['group_123']=pd.to_numeric(train['group_123'])\n#----------------------------------------------------------------------------------------------","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:40.733177Z","iopub.execute_input":"2022-07-13T05:46:40.734516Z","iopub.status.idle":"2022-07-13T05:46:40.762988Z","shell.execute_reply.started":"2022-07-13T05:46:40.734459Z","shell.execute_reply":"2022-07-13T05:46:40.761784Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.3. Dropping columns:-**","metadata":{}},{"cell_type":"code","source":"#--------------------------- Dropping column name ----------------------------------------------\ntrain.drop(['Cabin','Name','PassengerId'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:40.835571Z","iopub.execute_input":"2022-07-13T05:46:40.836576Z","iopub.status.idle":"2022-07-13T05:46:40.844204Z","shell.execute_reply.started":"2022-07-13T05:46:40.836538Z","shell.execute_reply":"2022-07-13T05:46:40.843022Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.4. Dropping categorical columns_**","metadata":{}},{"cell_type":"code","source":"#-------------- Extracting categorical and continuous column ----------------------\n\ncat=train.select_dtypes(include='object')\nreg=train.select_dtypes(exclude='object')","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:40.937653Z","iopub.execute_input":"2022-07-13T05:46:40.938517Z","iopub.status.idle":"2022-07-13T05:46:40.947840Z","shell.execute_reply.started":"2022-07-13T05:46:40.938480Z","shell.execute_reply":"2022-07-13T05:46:40.946735Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.5. Working on regression column**","metadata":{}},{"cell_type":"code","source":"#--------------- Dropping column----------------------\nreg.drop(['Transported','cabin_extension','group_123'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:41.142409Z","iopub.execute_input":"2022-07-13T05:46:41.142835Z","iopub.status.idle":"2022-07-13T05:46:41.149857Z","shell.execute_reply.started":"2022-07-13T05:46:41.142799Z","shell.execute_reply":"2022-07-13T05:46:41.148704Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#------------- Label Encoding ---------------------------------\ncat['HomePlanet'].replace({\"Earth\":0,'Europa':1,'Mars':2},inplace=True)\ncat['CryoSleep'].replace({False:0,True:1},inplace=True)\ncat['Destination'].replace({\"TRAPPIST-1e\":0,'55 Cancri e':1,'PSO J318.5-22':2},inplace=True)\ncat['VIP'].replace({False:1,True:0},inplace=True)\ncat['cabin_class'].replace({\"F\":0,'G':1,'E':2,'B':3,'C':4,'D':5,'A':6,'T':7},inplace=True)\ncat['cabin_number'].replace({\"S\":0,'P':1},inplace=True)\n\ncat['Transported']=train['Transported']\ncat['cabin_extension']=train['cabin_extension']\ncat['group_123']=train['group_123']\n\n#------------------------------Imputation---------------------------------------------------------------\nfrom sklearn.impute import SimpleImputer\nimpute=SimpleImputer(strategy='most_frequent')\nimpute.fit(cat)\ncat=pd.DataFrame(impute.transform(cat),columns=cat.columns)\n#---------------------------------------------------------------------------------------------------------------\n\n\n#-------------------------------------------\n\nreg=reg+3","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:41.244454Z","iopub.execute_input":"2022-07-13T05:46:41.244901Z","iopub.status.idle":"2022-07-13T05:46:41.330652Z","shell.execute_reply.started":"2022-07-13T05:46:41.244855Z","shell.execute_reply":"2022-07-13T05:46:41.329675Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#--------------------------- Total Cost --------------------------------\nreg['total_cost']=reg['RoomService']+reg['FoodCourt']+reg['ShoppingMall']+reg['VRDeck']\n#------------------------------------------------------------------------------------------\nfor i in reg.columns:\n    reg[i]=np.log(reg[i])\n#------------------------------------------------------------------------------------------\n\nfrom sklearn.impute import SimpleImputer\n\nimpute=SimpleImputer(strategy='median')\nimpute.fit(reg)\nreg=pd.DataFrame(impute.transform(reg),columns=reg.columns)","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:41.346659Z","iopub.execute_input":"2022-07-13T05:46:41.347386Z","iopub.status.idle":"2022-07-13T05:46:41.370626Z","shell.execute_reply.started":"2022-07-13T05:46:41.347346Z","shell.execute_reply":"2022-07-13T05:46:41.369547Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#--------  Extracting continuous to categorical -------------------------\nfrom sklearn.preprocessing import KBinsDiscretizer\n\ntrans=KBinsDiscretizer(n_bins=6,encode='ordinal',strategy='quantile')\ntrans.fit(reg)\nreg_2=pd.DataFrame(trans.transform(reg))\n\n","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:41.449074Z","iopub.execute_input":"2022-07-13T05:46:41.450111Z","iopub.status.idle":"2022-07-13T05:46:41.464634Z","shell.execute_reply.started":"2022-07-13T05:46:41.450059Z","shell.execute_reply":"2022-07-13T05:46:41.463541Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#------ Putting back into one datafarme ---------------------------------\nfor i in cat:\n    train[i]=cat[i]\nfor i in reg:\n    train[i]=reg[i]\n\ncolumns=['Age_group','RoomService_group','FoodCourt_group','ShoppingMall_group','Spa_group','VRDeck_group','total_cost_group']\ntrain[columns]=reg_2\n\n#------------------------------------------------------------------------","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:41.551091Z","iopub.execute_input":"2022-07-13T05:46:41.551971Z","iopub.status.idle":"2022-07-13T05:46:41.566162Z","shell.execute_reply.started":"2022-07-13T05:46:41.551931Z","shell.execute_reply":"2022-07-13T05:46:41.565092Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **4. Modelling**","metadata":{}},{"cell_type":"markdown","source":"**4.1. Splitting into train and valid**","metadata":{}},{"cell_type":"code","source":"x=train.drop('Transported',axis=1)\ny=train['Transported'].replace({True:1,False:0})","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:41.655138Z","iopub.execute_input":"2022-07-13T05:46:41.655504Z","iopub.status.idle":"2022-07-13T05:46:41.673553Z","shell.execute_reply.started":"2022-07-13T05:46:41.655474Z","shell.execute_reply":"2022-07-13T05:46:41.672477Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x['cabin_class']=x['cabin_class'].astype('int')\nx['cabin_number']=x['cabin_number'].astype('int')\nx['cabin_extension']=x['cabin_extension'].astype('int')\nx['group_123']=x['group_123'].astype('int')\nfor i in ['HomePlanet','CryoSleep','Destination','VIP']:\n    x[i]=x[i].astype('int')","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:41.859914Z","iopub.execute_input":"2022-07-13T05:46:41.860583Z","iopub.status.idle":"2022-07-13T05:46:41.887349Z","shell.execute_reply.started":"2022-07-13T05:46:41.860549Z","shell.execute_reply":"2022-07-13T05:46:41.886457Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\n\nxtrain,xvalid,ytrain,yvalid=train_test_split(x,y,test_size=0.25)","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:42.071852Z","iopub.execute_input":"2022-07-13T05:46:42.072588Z","iopub.status.idle":"2022-07-13T05:46:42.081707Z","shell.execute_reply.started":"2022-07-13T05:46:42.072552Z","shell.execute_reply":"2022-07-13T05:46:42.080451Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**4.2. Algorithm**","metadata":{}},{"cell_type":"code","source":"models=[]\n\nmodels.append(('XGB',XGBClassifier()))\nmodels.append(('Forest',RandomForestClassifier()))\nmodels.append(('Gradient Boosting',GradientBoostingClassifier()))\n\n\n\n\n\n\nfrom sklearn.ensemble import VotingClassifier\n\nfinal_classif=VotingClassifier(models,voting='soft')\nfinal_classif.fit(xtrain,ytrain)\nyhat=final_classif.predict(xvalid)\naccuracy_score(yvalid,yhat)","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:42.171515Z","iopub.execute_input":"2022-07-13T05:46:42.172347Z","iopub.status.idle":"2022-07-13T05:46:45.251648Z","shell.execute_reply.started":"2022-07-13T05:46:42.172301Z","shell.execute_reply":"2022-07-13T05:46:45.250550Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **6.Test**","metadata":{}},{"cell_type":"code","source":"test['Cabin'].fillna('0',inplace=True)\ncabin_class=[]\ncabin_extension=[]\ncabin_number=[]\ncabin=list(test['Cabin'])\nfor i in cabin:\n    cabin_class.append(i[0])\nfor i in cabin:\n    cabin_extension.append(i[2:3])  \nfor i in cabin:\n    cabin_number.append(i[-1])\n    \ntest['cabin_extension']=cabin_extension\ntest['cabin_class']=cabin_class\ntest['cabin_number']=cabin_number\ntest.replace({\"0\",np.nan},inplace=True)\n\ntest['cabin_extension']=pd.to_numeric(test['cabin_extension'])\n#----------------------------------------------------------------\ncol=list(test['PassengerId'])\ncol1=[]\nfor i in col:\n    col1.append(i[-1:])\ntest['group_123']=col1\ntest['group_123']=pd.to_numeric(test['group_123'])\n\ntest.drop(['Cabin','Name','PassengerId'],axis=1,inplace=True)\n\n\ncat=test.select_dtypes(include='object')\nreg=test.select_dtypes(exclude='object')\n\nreg.drop(['cabin_extension','group_123'],axis=1,inplace=True)\n\n#------------- Label Encoding ---------------------------------\ncat['HomePlanet'].replace({\"Earth\":0,'Europa':1,'Mars':2},inplace=True)\ncat['CryoSleep'].replace({False:0,True:1},inplace=True)\ncat['Destination'].replace({\"TRAPPIST-1e\":0,'55 Cancri e':1,'PSO J318.5-22':2},inplace=True)\ncat['VIP'].replace({False:1,True:0},inplace=True)\ncat['cabin_class'].replace({\"F\":0,'G':1,'E':2,'B':3,'C':4,'D':5,'A':6,'T':7},inplace=True)\ncat['cabin_number'].replace({\"S\":0,'P':1},inplace=True)\n\n\ncat['cabin_extension']=test['cabin_extension']\ncat['group_123']=test['group_123']\n\n#------------------------------Imputation---------------------------------------------------------------\nfrom sklearn.impute import SimpleImputer\nimpute=SimpleImputer(strategy='most_frequent')\nimpute.fit(cat)\ncat=pd.DataFrame(impute.transform(cat),columns=cat.columns)\n#---------------------------------------------------------------------------------------------------------------\n\n\n#-------------------------------------------\n\nreg=reg+3\n\n#--------------------------- Total Cost --------------------------------\nreg['total_cost']=reg['RoomService']+reg['FoodCourt']+reg['ShoppingMall']+reg['VRDeck']\n#------------------------------------------------------------------------------------------\nfor i in reg.columns:\n    reg[i]=np.log(reg[i])\n#------------------------------------------------------------------------------------------\n\nfrom sklearn.impute import SimpleImputer\n\nimpute=SimpleImputer(strategy='median')\nimpute.fit(reg)\nreg=pd.DataFrame(impute.transform(reg),columns=reg.columns)\n\n#--------  Extracting continuous to categorical -------------------------\nfrom sklearn.preprocessing import KBinsDiscretizer\n\ntrans=KBinsDiscretizer(n_bins=6,encode='ordinal',strategy='kmeans')\ntrans.fit(reg)\nreg_2=pd.DataFrame(trans.transform(reg))\n\nfor i in cat:\n    test[i]=cat[i]\nfor i in reg:\n    test[i]=reg[i]\n\ncolumns=['Age_group','RoomService_group','FoodCourt_group','ShoppingMall_group','Spa_group','VRDeck_group','total_cost_group']\ntest[columns]=reg_2\n\n\ntest['cabin_class']=test['cabin_class'].astype('int')\ntest['cabin_number']=test['cabin_number'].astype('int')\ntest['cabin_extension']=test['cabin_extension'].astype('int')\ntest['group_123']=test['group_123'].astype('int')\nfor i in ['HomePlanet','CryoSleep','Destination','VIP']:\n    test[i]=test[i].astype('int')","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:45.253267Z","iopub.execute_input":"2022-07-13T05:46:45.253567Z","iopub.status.idle":"2022-07-13T05:46:45.423814Z","shell.execute_reply.started":"2022-07-13T05:46:45.253541Z","shell.execute_reply":"2022-07-13T05:46:45.422980Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission['Transported']=final_classif.predict(test)\nsubmission.to_csv('index.csv',index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:45.424861Z","iopub.execute_input":"2022-07-13T05:46:45.425349Z","iopub.status.idle":"2022-07-13T05:46:45.566660Z","shell.execute_reply.started":"2022-07-13T05:46:45.425320Z","shell.execute_reply":"2022-07-13T05:46:45.565609Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission","metadata":{"execution":{"iopub.status.busy":"2022-07-13T05:46:45.569498Z","iopub.execute_input":"2022-07-13T05:46:45.569979Z","iopub.status.idle":"2022-07-13T05:46:45.584448Z","shell.execute_reply.started":"2022-07-13T05:46:45.569935Z","shell.execute_reply":"2022-07-13T05:46:45.583463Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}