泰坦尼克号数据集_机器学习(入门)--Kaggle项目之泰坦尼克号
電影《泰坦尼克號》改編自一個真實故事。1912年4月15日,這艘號稱“永不沉沒”的泰坦尼克號在首航期間,撞上冰山后沉沒,船上的2224名乘客和機組人員,其中只有772人存活下來,生還率只有32%。 這一聳人聽聞的悲劇震撼了國際社會,并導致了更好的船舶安全條例。
一,提出問題
什么人在泰坦尼克號上更容易存活?
二,理解數據
- 采集數據
數據來源于kaggle網站Titanic項目,如下鏈接可下載數據。
https://www.kaggle.com/c/titanic?www.kaggle.com- 導入數據
- 查看數據集信息
各列名含義如下:
查看數據描述統計信息:
查看數據基本信息:
數據總共有1309行,Survived是標簽,用作機器學習預測,無需處理。數據類型列:年齡(Age)、船票價格(Fare)和船艙號(Cabin)里面有缺失數據:
- 年齡(Age)里面數據總數是1046條,缺失了263,缺失率20%;
- 船票價格(Fare)里面數據總數是1308條,缺失了1條數據字符串列;
- 登船港口(Embarked)里面數據總數是1307,只缺失了2條數據,缺失較少;
- 船艙號(Cabin)里面數據總數是295,缺失了1014,缺失率77.5%,缺失較大。
三,數據清洗
數據清洗在整個數據分析的過程中占有很多的時間,因此提高數據清洗效率十分關鍵,因此,一定要將數據清洗步驟牢記:
選擇子集->列名重命名->缺失數據處理->數據類型轉換->數據排序->異常值處理
對于此次分析,前兩步不需要可以省略
- 缺失數據處理
在理解數據的步驟中,我們查看了數據的基本信息,了解了數據在各列的缺失情況,為下面的處理方式提供指導。
很多機器學習算法為了訓練模型,要求所傳入的特征中不能有空值。
常規得填充方式:
- 如果是數值類型,用平均值取代
- 如果是分類數據,用最常見的類別取代
- 使用模型預測缺失值,例如:K-NN
那么對于年齡(Age)船票價格(Fare)這樣的數值類型,用平均值填充
那么對于登船港口(Embarked)這種分類數據,用最常見的類別取代
對于船艙號(Cabin),因為缺失值比較多,這里用'U'替換,表示未知
注意:(Survived)這里一列是我們的標簽,用來做機器學習預測的,不需要處理這一列
- 特征提取
(1)數據分類
查看數據類型,分為3種數據類型。并對類別數據處理:用數值代替類別,并進行One-hot編碼
1.數值類型:
乘客編號(PassengerId),年齡(Age),船票價格(Fare),同代直系親屬人數(SibSp),不同代直系親屬人數(Parch)
2.時間序列:無
3.分類數據:
1)有直接類別的
乘客性別(Sex):男性male,女性female
登船港口(Embarked):出發地點S=英國南安普頓Southampton,途徑地點1:C=法國 瑟堡市Cherbourg,出發地點2:Q=愛爾蘭 昆士敦Queenstown
客艙等級(Pclass):1=1等艙,2=2等艙,3=3等艙
2)字符串類型:可能從這里面提取出特征來,也歸到分類數據中
乘客姓名(Name)
客艙號(Cabin)
船票編號(Ticket)
(2)分類數據:有直接類別的
- 乘客性別(Sex): 男性male,女性female
- 登船港口(Embarked):出發地點S=英國南安普頓Southampton,途徑地點1:C=法國 瑟堡市Cherbourg,出發地點2:Q=愛爾蘭 昆士敦Queenstown
- 客艙等級(Pclass):1=1等艙,2=2等艙,3=3等艙
乘客性別(Sex)
登船港口(Embarked)
刪除行用到了.drop:df.drop(name,axis=1)
這里的name指定了列,而axis=1則指定了行,表示刪除‘name’列下的每一行
客艙等級(Pclass)
(2)分類數據:字符串類型
字符串類型:可能從這里面提取出特征來,也歸到分類數據中,這里數據有:
- 乘客姓名(Name)
- 客艙號(Cabin)
- 船票編號(Ticket)
從姓名中提取頭銜
查看姓名這一列長啥樣,注意到在乘客名字(Name)中,有一個非常顯著的特點:
乘客頭銜每個名字當中都包含了具體的稱謂或者說是頭銜,將這部分信息提取出來后可以作為非常有用一個新變量,可以幫助我們進行預測。
例如:
Braund, Mr. Owen Harris
Heikkinen, Miss. Laina
Oliva y Ocana, Dona. Fermina
Peter, Master. Michael J
我們看到姓名中'Braund, Mr. Owen Harris',逗號前面的是“名”,逗號后面是‘頭銜. 姓’因此,這個位置我們將其切割,提取頭銜。
定義以下幾種頭銜類別:
Officer政府官員
Royalty王室(皇室)
Mr已婚男士
Mrs已婚婦女
Miss年輕未婚女子
Master有技能的人/教師
接下來就hi是添加one-hot編碼產生的虛擬變量(dummy variables)到泰坦尼克號數據集full,并刪除原有的‘name’列。
從客艙號中提取客艙類別
補充知識:匿名函數
查看以下客艙號類別,客場號的首字母是類別
接下來,就是添加one-hot編碼產生的虛擬變量(dummy variables)到泰坦尼克號數據集full,刪除原客艙號。
建立家庭人數和家庭類別
那么到現在,我們得特征值已經到了33個
- 特征選擇
根據各個特征與生成情況(Survived)的相關系數大小,我們選擇了這幾個特征作為模型的輸入:
這里選擇頭銜(前面所在的數據集titleDf)、客艙等級(pclassDf)、家庭大小(familyDf)、船票價格(Fare)、船艙號(cabinDf)、登船港口(embarkedDf)、性別(Sex)
四,構建模型
- 建立訓練數據集和測試數據集
從原始數據集(source)中拆分出訓練數據集(用于模型訓練train),測試數據集(用于模型評估test)
- 選擇機器學習算法
- 訓練模型
五,評估模型
六,方案實施
總結
以上是生活随笔為你收集整理的泰坦尼克号数据集_机器学习(入门)--Kaggle项目之泰坦尼克号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汀开头的成语有哪些?
- 下一篇: python文本处理实例_Python