kaggle实战:Titanic
文章目錄
- 一、問題重述
- 1.1 問題描述
- 1.2 數據集
- 1.3 提交格式
- 二、問題求解:決策樹
- 2.1導入模塊
- 2.2載入數據
- 2.3探索數據
- 2.4數據預處理
- 2.4.1 無關變量處理
- 2.4.2缺失值的處理
- 2.4.3 非數值變量處理
- 2.5 獲取特征矩陣和目標矩陣
- 2.5 劃分測試集和訓練集
- 2.6模型建立
一、問題重述
1.1 問題描述
泰坦尼克號的沉沒是歷史上最臭名昭著的沉船之一。1912 年 4 月 15 日,在她的初次航行期間,被廣泛認為“不沉”的泰坦尼克號在與冰山相撞后沉沒。不幸的是,船上的每個人都沒有足夠的救生艇,導致 2224 名乘客和船員中有 1502 人死亡。雖然幸存下來有一些運氣因素,但似乎有些人比其他人更有可能幸存下來。在這個挑戰中,我們要求您構建一個預測模型來回答這個問題:“什么樣的人更有可能生存?” 使用乘客數據(即姓名、年齡、性別、社會經濟階層等)。
1.2 數據集
在本次比賽中,您將獲得兩個相似的數據集,其中包括姓名、年齡、性別、社會經濟等級等乘客信息。一個數據集名為“train.csv”,另一個名為“test.csv” .
Train.csv 將包含一部分乘客的詳細信息(確切地說是 891 名),重要的是,將揭示他們是否幸存下來,也被稱為“地面真相”。
test.csv 數據集包含類似的信息,但沒有透露每位乘客的“真實情況”。預測這些結果是你的工作。
使用您在 train.csv 數據中找到的模式,預測船上的其他 418 名乘客(在 test.csv 中找到)是否幸存下來。
1.3 提交格式
提交文件格式:您應該提交一個包含 418 個條目和一個標題行的 csv 文件。如果您有額外的列(PassengerId 和 Survived 之外)或行,您的提交將顯示錯誤。
該文件應該正好有 2 列:
- 乘客 ID(按任意順序排序)
- 幸存(包含您的二元預測:1 表示幸存,0 表示已故)
二、問題求解:決策樹
2.1導入模塊
import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import GridSearchCV import matplotlib.pyplot as plt from sklearn.model_selection import GridSearchCV, cross_val_score import numpy as np2.2載入數據
#導入數據 data=pd.read_csv("E:/21國賽/Titannic/train.csv")2.3探索數據
#探索數據 data.head()#展示數據表前幾行數據輸出結果:
輸出結果:
可以看出數據表總共優891個數據,其中Age,Cabin,Embarked存在缺失值。因此我們要對缺失值進行處理。
2.4數據預處理
2.4.1 無關變量處理
通過分析,我們可以假設,Name,Ticket,Cabin與乘客的生存情況無關,因此,我們將這三個變量從數據表中除去。
data.drop(['Cabin','Name','Ticket'],inplace=True,axis=1)輸出結果:
2.4.2缺失值的處理
對于Cabin由于變量與成可存活相關性不大,且缺失值過多,我們直接將其除去。
對于Age,有缺失值較小,我們將期使用平均值填補。
輸出結果:
由于Embarked的缺失值只有兩個,因此,我們將這兩行刪除
輸出結果:
2.4.3 非數值變量處理
對于Embarked和Sex兩個變量,可以看出他們的值為非數值類型,因此,我們將其轉化為數值類型。
labels=data["Embarked"].unique().tolist() data["Embarked"]=data["Embarked"].apply(lambda x:labels.index(x)) data["Sex"]=(data["Sex"]=='male').astype("int")輸出結果:
2.5 獲取特征矩陣和目標矩陣
X = data.iloc[:,data.columns != "Survived"]#特征矩陣 y = data.iloc[:,data.columns == "Survived"]#目標矩陣輸出結果:
2.5 劃分測試集和訓練集
from sklearn.model_selection import train_test_split Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,y,test_size=0.3) #將訓練集和測試集索引排序 for i in [Xtrain, Xtest, Ytrain, Ytest]:i.index = range(i.shape[0]) Xtrain輸出訓練集的特征數據:
2.6模型建立
采用決策樹分類樹:
clf=DecisionTreeClassifier(random_state=25) clf=clf.fit(Xtrain,Ytrain) score=clf.score(Xtest,Ytest) print(score)輸出結果:
采用交叉驗證:
輸出結果:
采用單參數優化:
輸出結果:
采用網格搜索多參數優化:
輸出結果:
得到最終模型:
準確率:0.8087717058222677
總結
以上是生活随笔為你收集整理的kaggle实战:Titanic的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像处理——掩膜
- 下一篇: C#中的bin和obj文件夹有什么用?