{"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-11T12:08:53.545632Z","iopub.execute_input":"2022-07-11T12:08:53.546016Z","iopub.status.idle":"2022-07-11T12:08:53.555286Z","shell.execute_reply.started":"2022-07-11T12:08:53.545986Z","shell.execute_reply":"2022-07-11T12:08:53.554392Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **1. Importing modules:-**","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nfrom sklearn.preprocessing import MinMaxScaler\n\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.model_selection import cross_val_score","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:53.647444Z","iopub.execute_input":"2022-07-11T12:08:53.647843Z","iopub.status.idle":"2022-07-11T12:08:53.655411Z","shell.execute_reply.started":"2022-07-11T12:08:53.647811Z","shell.execute_reply":"2022-07-11T12:08:53.654179Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **2. Loading Dataset**","metadata":{}},{"cell_type":"code","source":"#------------------ Train ---------------------------\ntrain=pd.read_csv('/kaggle/input/spaceship-titanic/train.csv')\n#------------------- Test ------------------------\ntest=pd.read_csv('/kaggle/input/spaceship-titanic/test.csv')\n\n#-------------------- Submission ----------------------\n\nsub=pd.read_csv('/kaggle/input/spaceship-titanic/sample_submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:53.758665Z","iopub.execute_input":"2022-07-11T12:08:53.759609Z","iopub.status.idle":"2022-07-11T12:08:53.818443Z","shell.execute_reply.started":"2022-07-11T12:08:53.759571Z","shell.execute_reply":"2022-07-11T12:08:53.817148Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **3.Feature Engineering**","metadata":{}},{"cell_type":"markdown","source":"**3.1 Label Encoding**","metadata":{}},{"cell_type":"code","source":"train['HomePlanet'].replace({\"Earth\":0,'Europa':1,'Mars':2},inplace=True)\ntrain['CryoSleep'].replace({False:0,True:1},inplace=True)\ntrain['Destination'].replace({'TRAPPIST-1e':0,'55 Cancri e':1,'PSO J318.5-22':2},inplace=True)\ntrain['VIP'].replace({False:0,True:1},inplace=True)\ntrain['Transported'].replace({False:0,True:1},inplace=True)\ntrain.drop(['PassengerId'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:53.954564Z","iopub.execute_input":"2022-07-11T12:08:53.954949Z","iopub.status.idle":"2022-07-11T12:08:54.002451Z","shell.execute_reply.started":"2022-07-11T12:08:53.954917Z","shell.execute_reply":"2022-07-11T12:08:54.001156Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.2 Working with Cabin columns:-**","metadata":{}},{"cell_type":"code","source":"train['Cabin'].fillna(0,inplace=True)\ncabin=list(train['Cabin'])\na=[]\nb=[]\nfor i in cabin:\n  if(i!=0):\n    a.append(i[0])\n    b.append(i[-1])\n  else:\n    a.append(np.nan)\n    b.append(np.nan)\ntrain['Cabin_group1']=a\ntrain['Cabin_group2']=b\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:54.055451Z","iopub.execute_input":"2022-07-11T12:08:54.055892Z","iopub.status.idle":"2022-07-11T12:08:54.072530Z","shell.execute_reply.started":"2022-07-11T12:08:54.055858Z","shell.execute_reply":"2022-07-11T12:08:54.071225Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.3.Dropping unnecessary columns**","metadata":{}},{"cell_type":"code","source":"train.drop(['Cabin','Name'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:54.074584Z","iopub.execute_input":"2022-07-11T12:08:54.074930Z","iopub.status.idle":"2022-07-11T12:08:54.086266Z","shell.execute_reply.started":"2022-07-11T12:08:54.074900Z","shell.execute_reply":"2022-07-11T12:08:54.084952Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['HomePlanet'].replace({\"Earth\":0,'Europa':1,'Mars':2},inplace=True)\ntrain['CryoSleep'].replace({False:0,True:1},inplace=True)\ntrain['Destination'].replace({'TRAPPIST-1e':0,'PSO J318.5-22':1,'55 Cancri e':2},inplace=True)\ntrain['VIP'].replace({False:0,True:1},inplace=True)\ntrain['Transported'].replace({True:0,False:1},inplace=True)\ntrain['Cabin_group1'].replace({'F':0,'G':1,'E':2,'B':3,'C':4,'D':5,'A':6,'T':7},inplace=True)\ntrain['Cabin_group2'].replace({'S':0,'P':1},inplace=True)\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:54.159611Z","iopub.execute_input":"2022-07-11T12:08:54.160008Z","iopub.status.idle":"2022-07-11T12:08:54.189796Z","shell.execute_reply.started":"2022-07-11T12:08:54.159976Z","shell.execute_reply":"2022-07-11T12:08:54.188524Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.4. Imputation**","metadata":{}},{"cell_type":"code","source":"train['Age']=train['Age'].fillna(train.groupby('HomePlanet')['Age'].transform('mean'))\ntrain['RoomService']=train['RoomService'].fillna(train.groupby('CryoSleep')['RoomService'].transform('mean'))\ntrain['FoodCourt']=train['FoodCourt'].fillna(train.groupby('Cabin_group1')['FoodCourt'].transform('mean'))\ntrain['ShoppingMall']=train['ShoppingMall'].fillna(train.groupby('CryoSleep')['ShoppingMall'].transform('mean'))\ntrain['Spa']=train['Spa'].fillna(train.groupby('CryoSleep')['Spa'].transform('mean'))\ntrain['VRDeck']=train['VRDeck'].fillna(train.groupby('Cabin_group1')['VRDeck'].transform('mean'))\n\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:54.262058Z","iopub.execute_input":"2022-07-11T12:08:54.262441Z","iopub.status.idle":"2022-07-11T12:08:54.281432Z","shell.execute_reply.started":"2022-07-11T12:08:54.262411Z","shell.execute_reply":"2022-07-11T12:08:54.280152Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.impute import SimpleImputer\nimpute=SimpleImputer(strategy='most_frequent')\nimpute.fit(train)\ntrain=pd.DataFrame(impute.transform(train),columns=train.columns)\n\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:54.284043Z","iopub.execute_input":"2022-07-11T12:08:54.284764Z","iopub.status.idle":"2022-07-11T12:08:54.306495Z","shell.execute_reply.started":"2022-07-11T12:08:54.284727Z","shell.execute_reply":"2022-07-11T12:08:54.305541Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.5. Feature Scaling**","metadata":{}},{"cell_type":"code","source":"\ntrain['TotalCost']=train['RoomService']+train['FoodCourt']+train['ShoppingMall']+train['Spa']+train['VRDeck']\ntrain['Nocost']=[1 if i==0.0 else 0 for i in train['TotalCost']]\n\n\ncol=['Age','RoomService','FoodCourt','ShoppingMall','Spa','VRDeck','TotalCost']\n\nfrom sklearn.preprocessing import PowerTransformer\nscale=MinMaxScaler()\nscale.fit(train[col])\ntrain[col]=pd.DataFrame(scale.transform(train[col]),columns=col)\n\npower=PowerTransformer(method='yeo-johnson')\npower.fit(train[col])\ntrain[col]=pd.DataFrame(power.transform(train[col]),columns=col)\n\n#--------------------------------------------------------------------\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:54.365763Z","iopub.execute_input":"2022-07-11T12:08:54.366631Z","iopub.status.idle":"2022-07-11T12:08:54.507303Z","shell.execute_reply.started":"2022-07-11T12:08:54.366576Z","shell.execute_reply":"2022-07-11T12:08:54.506259Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **4. Modelling**","metadata":{}},{"cell_type":"code","source":"x=train.drop(['Transported'],axis=1)\ny=train['Transported']\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:54.509386Z","iopub.execute_input":"2022-07-11T12:08:54.509715Z","iopub.status.idle":"2022-07-11T12:08:54.516004Z","shell.execute_reply.started":"2022-07-11T12:08:54.509682Z","shell.execute_reply":"2022-07-11T12:08:54.514883Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**4.1. Algorithm**","metadata":{}},{"cell_type":"code","source":"models=[]\nmodels.append(('Logistic Regression',LogisticRegression()))\nmodels.append(('SVC',SVC()))\nmodels.append(('Tree',DecisionTreeClassifier()))\nmodels.append(('Random Forest',RandomForestClassifier()))\nmodels.append(('Gradient Boosting',GradientBoostingClassifier()))\nmodels.append(('AdaBoost',AdaBoostClassifier()))\nmodels.append(('Extra tree',ExtraTreesClassifier()))\nmodels.append(('XGBClassifier',XGBClassifier()))","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:54.517573Z","iopub.execute_input":"2022-07-11T12:08:54.517905Z","iopub.status.idle":"2022-07-11T12:08:54.528778Z","shell.execute_reply.started":"2022-07-11T12:08:54.517878Z","shell.execute_reply":"2022-07-11T12:08:54.527598Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"scores=[]\nfor name,model in models:\n  score=cross_val_score(model,x,y,scoring='accuracy',cv=10,n_jobs=-1)\n  scores.append(np.mean(score))\n  print(name,np.mean(score))\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:08:54.530425Z","iopub.execute_input":"2022-07-11T12:08:54.531142Z","iopub.status.idle":"2022-07-11T12:09:24.023504Z","shell.execute_reply.started":"2022-07-11T12:08:54.531099Z","shell.execute_reply":"2022-07-11T12:09:24.022278Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**4.2. Voting Classifier**","metadata":{}},{"cell_type":"code","source":"final_model=[]\nfinal_model.append(('SVC',SVC()))\nfinal_model.append(('Gradient Boosting',GradientBoostingClassifier()))\nfinal_model.append(('XGB Classifier',XGBClassifier()))","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:09:24.026595Z","iopub.execute_input":"2022-07-11T12:09:24.027045Z","iopub.status.idle":"2022-07-11T12:09:24.032233Z","shell.execute_reply.started":"2022-07-11T12:09:24.027002Z","shell.execute_reply":"2022-07-11T12:09:24.031415Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.ensemble import VotingClassifier\n\nfinal_model=VotingClassifier(final_model,voting='hard')\nfinal_model.fit(x,y)\n","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:09:24.033524Z","iopub.execute_input":"2022-07-11T12:09:24.034067Z","iopub.status.idle":"2022-07-11T12:09:28.788005Z","shell.execute_reply.started":"2022-07-11T12:09:24.034038Z","shell.execute_reply":"2022-07-11T12:09:28.786907Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **Testing**","metadata":{}},{"cell_type":"code","source":"#-----------------------------------------------------------------------------------------------\n\ntest['HomePlanet'].replace({\"Earth\":0,'Europa':1,'Mars':2},inplace=True)\ntest['CryoSleep'].replace({False:0,True:1},inplace=True)\ntest['Destination'].replace({'TRAPPIST-1e':0,'55 Cancri e':1,'PSO J318.5-22':2},inplace=True)\ntest['VIP'].replace({False:0,True:1},inplace=True)\ntest.drop(['PassengerId'],axis=1,inplace=True)\n\n#------------------------------------------------------------------------------------------------\n#-------------------------------------------\n\ntest['Cabin'].fillna(0,inplace=True)\ncabin=list(test['Cabin'])\na=[]\nb=[]\nfor i in cabin:\n  if(i!=0):\n    a.append(i[0])\n    b.append(i[-1])\n  else:\n    a.append(np.nan)\n    b.append(np.nan)\ntest['Cabin_group1']=a\ntest['Cabin_group2']=b\n#---------------------------------------------------\n\ntest.drop(['Cabin','Name'],axis=1,inplace=True)\n\n#---------------------------------------------\n#----------------------------------------------------------------\ntest['HomePlanet'].replace({\"Earth\":0,'Europa':1,'Mars':2},inplace=True)\ntest['CryoSleep'].replace({False:0,True:1},inplace=True)\ntest['Destination'].replace({'TRAPPIST-1e':0,'PSO J318.5-22':1,'55 Cancri e':2},inplace=True)\ntest['VIP'].replace({False:0,True:1},inplace=True)\ntest['Cabin_group1'].replace({'F':0,'G':1,'E':2,'B':3,'C':4,'D':5,'A':6,'T':7},inplace=True)\ntest['Cabin_group2'].replace({'S':0,'P':1},inplace=True)\n\n#----------------------------\n\n\n#-----------------------------------------------------------------\n\ntest['Age']=test['Age'].fillna(test.groupby('HomePlanet')['Age'].transform('mean'))\ntest['RoomService']=test['RoomService'].fillna(test.groupby('CryoSleep')['RoomService'].transform('mean'))\ntest['FoodCourt']=test['FoodCourt'].fillna(test.groupby('Cabin_group1')['FoodCourt'].transform('mean'))\ntest['ShoppingMall']=test['ShoppingMall'].fillna(test.groupby('CryoSleep')['ShoppingMall'].transform('mean'))\ntest['Spa']=test['Spa'].fillna(test.groupby('CryoSleep')['Spa'].transform('mean'))\ntest['VRDeck']=test['VRDeck'].fillna(test.groupby('Cabin_group1')['VRDeck'].transform('mean'))\n#-------------------\n\n#-------------------------------\n\nfrom sklearn.impute import SimpleImputer\nimpute=SimpleImputer(strategy='most_frequent')\nimpute.fit(test)\ntest=pd.DataFrame(impute.transform(test),columns=test.columns)\n\n#------------------------------------\ntest['TotalCost']=test['RoomService']+test['FoodCourt']+test['ShoppingMall']+test['Spa']+test['VRDeck']\ntest['Nocost']=[1 if i==0.0 else 0 for i in test['TotalCost']]\n\n\ncol=['Age','RoomService','FoodCourt','ShoppingMall','Spa','VRDeck','TotalCost']\n\nfrom sklearn.preprocessing import PowerTransformer\nscale=MinMaxScaler()\nscale.fit(test[col])\ntest[col]=pd.DataFrame(scale.transform(test[col]),columns=col)\n\npower=PowerTransformer(method='yeo-johnson')\npower.fit(test[col])\ntest[col]=pd.DataFrame(power.transform(test[col]),columns=col)","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:09:28.789725Z","iopub.execute_input":"2022-07-11T12:09:28.790344Z","iopub.status.idle":"2022-07-11T12:09:28.937309Z","shell.execute_reply.started":"2022-07-11T12:09:28.790311Z","shell.execute_reply":"2022-07-11T12:09:28.935983Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub['Transported']=final_model.predict(test)\nsub['Transported'].replace({1:True,0:False},inplace=True)\nsub.to_csv('index.csv',index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-11T12:09:28.939266Z","iopub.execute_input":"2022-07-11T12:09:28.939610Z","iopub.status.idle":"2022-07-11T12:09:30.134009Z","shell.execute_reply.started":"2022-07-11T12:09:28.939580Z","shell.execute_reply":"2022-07-11T12:09:30.132952Z"},"trusted":true},"execution_count":null,"outputs":[]}]}