{"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-10T11:17:46.970090Z","iopub.execute_input":"2022-07-10T11:17:46.971559Z","iopub.status.idle":"2022-07-10T11:17:46.981713Z","shell.execute_reply.started":"2022-07-10T11:17:46.971499Z","shell.execute_reply":"2022-07-10T11:17:46.980495Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **1.Loading modules:-**","metadata":{}},{"cell_type":"code","source":"#-----  Preprocessing  ------------\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n\n#-----------------\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.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-10T11:17:47.093452Z","iopub.execute_input":"2022-07-10T11:17:47.093827Z","iopub.status.idle":"2022-07-10T11:17:47.101229Z","shell.execute_reply.started":"2022-07-10T11:17:47.093797Z","shell.execute_reply":"2022-07-10T11:17:47.099577Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **2.Loading the dataset:-**","metadata":{}},{"cell_type":"code","source":"#------------------- Training -------------------\ntrain=pd.read_csv('/kaggle/input/titanic/train.csv')\n\n#-------------------Testing -----------------------\ntest=pd.read_csv('/kaggle/input/titanic/test.csv')\n\n#--------- submission ---------------------\n\nsubmission=pd.read_csv('/kaggle/input/titanic/gender_submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:47.216157Z","iopub.execute_input":"2022-07-10T11:17:47.217191Z","iopub.status.idle":"2022-07-10T11:17:47.235401Z","shell.execute_reply.started":"2022-07-10T11:17:47.217149Z","shell.execute_reply":"2022-07-10T11:17:47.234445Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **3.Feature Engineering**","metadata":{}},{"cell_type":"markdown","source":"**3.1. Extracting the title from name:**","metadata":{}},{"cell_type":"code","source":"#------------------------- Title -----------------------------\ntitle=[]\nfor i in range(len(train)):\n  title.append(train['Name'].iloc[i].split(',')[1].split('.')[0][1:])\ntrain['Title']=title","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:47.339485Z","iopub.execute_input":"2022-07-10T11:17:47.339897Z","iopub.status.idle":"2022-07-10T11:17:47.355664Z","shell.execute_reply.started":"2022-07-10T11:17:47.339862Z","shell.execute_reply":"2022-07-10T11:17:47.354542Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.2. Trating missing values:-**","metadata":{}},{"cell_type":"code","source":"train['Age']=train['Age'].fillna(train.groupby('Title')['Age'].transform('mean')).astype('int')\ntrain['Embarked'].fillna('S',inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:47.467518Z","iopub.execute_input":"2022-07-10T11:17:47.468095Z","iopub.status.idle":"2022-07-10T11:17:47.476567Z","shell.execute_reply.started":"2022-07-10T11:17:47.468063Z","shell.execute_reply":"2022-07-10T11:17:47.475443Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.3. Passenger**","metadata":{}},{"cell_type":"code","source":"train['passenger']=train['SibSp']+train['Parch']+1\n\ndef passenger(passenger):\n    a=''\n    if(passenger<=1):\n        a='single'\n    elif(passenger<=3):\n        a='couple'\n    elif(passenger<=5):\n        a='small'\n    elif(passenger<=6):\n        a='middle'\n    else:\n        a='large'\n    return a\ntrain['passenger']=train['passenger'].apply(passenger)","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:47.665908Z","iopub.execute_input":"2022-07-10T11:17:47.666313Z","iopub.status.idle":"2022-07-10T11:17:47.675039Z","shell.execute_reply.started":"2022-07-10T11:17:47.666283Z","shell.execute_reply":"2022-07-10T11:17:47.673610Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.5. Treating fare columns:-**","metadata":{}},{"cell_type":"code","source":"train['Fare']=np.sqrt(train['Fare'])","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:47.907315Z","iopub.execute_input":"2022-07-10T11:17:47.907720Z","iopub.status.idle":"2022-07-10T11:17:47.913093Z","shell.execute_reply.started":"2022-07-10T11:17:47.907688Z","shell.execute_reply":"2022-07-10T11:17:47.912313Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.6. Treating unnecessary columns\"-**","metadata":{}},{"cell_type":"code","source":"train.drop(['SibSp','Parch','Cabin','Ticket','PassengerId','Name'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:48.159708Z","iopub.execute_input":"2022-07-10T11:17:48.160154Z","iopub.status.idle":"2022-07-10T11:17:48.168923Z","shell.execute_reply.started":"2022-07-10T11:17:48.160117Z","shell.execute_reply":"2022-07-10T11:17:48.167634Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['Title'].replace(['Don','Rev','Dr','Mme','Ms','Major','Mlle','Col','Capt','the Countess','Jonkheer'],'Rare',inplace=True)\ntrain['Title'].replace(['Mrs','Miss','Lady'],'Mrs',inplace=True)\n","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:48.300006Z","iopub.execute_input":"2022-07-10T11:17:48.302066Z","iopub.status.idle":"2022-07-10T11:17:48.310450Z","shell.execute_reply.started":"2022-07-10T11:17:48.302021Z","shell.execute_reply":"2022-07-10T11:17:48.309444Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**3.7. Label Encoding**","metadata":{}},{"cell_type":"code","source":"from sklearn.preprocessing import LabelEncoder\nlabel=LabelEncoder()\n\n#-----------------------\n\nlabel.fit(train['Sex'])\ntrain['Sex']=label.transform(train['Sex'])\n#-----------------------\n\nlabel.fit(train['Title'])\ntrain['Title']=label.transform(train['Title'])\n\n#-----------------------\nlabel.fit(train['passenger'])\ntrain['passenger']=label.transform(train['passenger'])\n\n#-----------------------\n\nlabel.fit(train['Embarked'])\ntrain['Embarked']=label.transform(train['Embarked'])\n\n\ntrain=pd.get_dummies(train,columns=['Embarked'],drop_first=True)\n","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:48.413255Z","iopub.execute_input":"2022-07-10T11:17:48.413676Z","iopub.status.idle":"2022-07-10T11:17:48.428778Z","shell.execute_reply.started":"2022-07-10T11:17:48.413641Z","shell.execute_reply":"2022-07-10T11:17:48.427745Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.preprocessing import MinMaxScaler\n\nscale=MinMaxScaler()\ntrain=pd.DataFrame(scale.fit_transform(train),columns=train.columns)","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:48.608753Z","iopub.execute_input":"2022-07-10T11:17:48.609336Z","iopub.status.idle":"2022-07-10T11:17:48.618770Z","shell.execute_reply.started":"2022-07-10T11:17:48.609305Z","shell.execute_reply":"2022-07-10T11:17:48.617473Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.drop(['Title','passenger','Fare'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:48.820189Z","iopub.execute_input":"2022-07-10T11:17:48.820632Z","iopub.status.idle":"2022-07-10T11:17:48.826474Z","shell.execute_reply.started":"2022-07-10T11:17:48.820597Z","shell.execute_reply":"2022-07-10T11:17:48.825499Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:48.930478Z","iopub.execute_input":"2022-07-10T11:17:48.931544Z","iopub.status.idle":"2022-07-10T11:17:48.949425Z","shell.execute_reply.started":"2022-07-10T11:17:48.931504Z","shell.execute_reply":"2022-07-10T11:17:48.948523Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 4. Modelling","metadata":{}},{"cell_type":"code","source":"x=train.drop('Survived',axis=1)\ny=train['Survived']\n\nfrom 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-10T11:17:49.007978Z","iopub.execute_input":"2022-07-10T11:17:49.008699Z","iopub.status.idle":"2022-07-10T11:17:49.015772Z","shell.execute_reply.started":"2022-07-10T11:17:49.008663Z","shell.execute_reply":"2022-07-10T11:17:49.014685Z"},"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(('Forest',RandomForestClassifier()))\nmodels.append(('Gradient Boosting',GradientBoostingClassifier()))\nmodels.append(('Ada Boost',AdaBoostClassifier()))\nmodels.append(('Extra Tree',ExtraTreesClassifier()))\nmodels.append(('Xgboost',XGBClassifier()))\nmodels.append(('Naive Bayes',GaussianNB()))\n\nfor name,model in models:\n  score=cross_val_score(model,x,y,cv=10,scoring='accuracy',n_jobs=-1)\n  print(name,np.mean(score))","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:49.208076Z","iopub.execute_input":"2022-07-10T11:17:49.208510Z","iopub.status.idle":"2022-07-10T11:17:52.789014Z","shell.execute_reply.started":"2022-07-10T11:17:49.208473Z","shell.execute_reply":"2022-07-10T11:17:52.788108Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**4.3. Model selected for Voting Classifier**","metadata":{}},{"cell_type":"code","source":"selected_model=[]\n\n\nselected_model.append(('Xgboost',XGBClassifier()))\nselected_model.append(('Xgboost1',RandomForestClassifier()))\nselected_model.append(('Gradient Boosting2',GradientBoostingClassifier()))\n#-------------------------\nscores=[]\nfor name,model in selected_model:\n    score=cross_val_score(model,x,y,cv=10,scoring='accuracy',n_jobs=-1)\n    scores.append(np.mean(score))\n    \n\nfinal_model=VotingClassifier(estimators=selected_model,voting='hard',weights=scores)\nfinal_model.fit(xtrain,ytrain)\n\nyhat=final_model.predict(xvalid)\nprint(accuracy_score(yvalid,yhat))\n","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:52.790291Z","iopub.execute_input":"2022-07-10T11:17:52.791085Z","iopub.status.idle":"2022-07-10T11:17:55.567763Z","shell.execute_reply.started":"2022-07-10T11:17:52.791052Z","shell.execute_reply":"2022-07-10T11:17:55.566613Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"title=[]\nfor i in range(len(test)):\n  title.append(test['Name'].iloc[i].split(',')[1].split('.')[0][1:])\ntest['Title']=title\n\n#---------------------------Missing Value--------------------------------------\n\ntest['Age']=test['Age'].fillna(test.groupby('Title')['Age'].transform('mean'))\ntest['Age'].fillna(test['Age'].mean(),inplace=True)\ntest['Fare'].fillna(7,inplace=True)\n\n#----------------------- Passenger --------------------\n\ntest['passenger']=test['SibSp']+test['Parch']+1\ntest['passenger']=test['passenger'].apply(passenger)\n\n#--------------------- Fare --------------------------\n\n\ntest['Fare']=np.sqrt(test['Fare'])\n\n#---------------\n\ntest.drop(['SibSp','Parch','Cabin','Ticket','PassengerId','Name'],axis=1,inplace=True)\n\n#------------------------\n\ntest['Title'].replace(['Don','Rev','Dr','Mme','Ms','Major','Mlle','Col','Capt','the Countess','Jonkheer','Dona'],'Rare',inplace=True)\ntest['Title'].replace(['Mrs','Miss','Lady'],'Mrs',inplace=True)\n\n#-------------------------------------------------------\n\nlabel=LabelEncoder()\n\ntest['Embarked']=label.fit_transform(test['Embarked'])\ntest['passenger']=label.fit_transform(test['passenger'])\ntest['Title']=label.fit_transform(test['Title'])\ntest['Sex']=label.fit_transform(test['Sex'])\n\ntest=pd.get_dummies(test,columns=['Embarked'],drop_first=True)\n\ntest.drop(['Title','passenger','Fare'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:55.569452Z","iopub.execute_input":"2022-07-10T11:17:55.569910Z","iopub.status.idle":"2022-07-10T11:17:55.603186Z","shell.execute_reply.started":"2022-07-10T11:17:55.569866Z","shell.execute_reply":"2022-07-10T11:17:55.602286Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"yhat=final_model.predict(test)\nsubmission['Survived']=yhat\nsubmission.to_csv('first.csv',index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-10T11:17:55.605628Z","iopub.execute_input":"2022-07-10T11:17:55.607007Z","iopub.status.idle":"2022-07-10T11:17:55.645911Z","shell.execute_reply.started":"2022-07-10T11:17:55.606959Z","shell.execute_reply":"2022-07-10T11:17:55.644962Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}