sklearn 相关性分析_用sklearn机器学习预测泰坦尼克号生存概率
前言
- 本文為練手記錄,適用于剛?cè)腴T的朋友參照閱讀練習(xí),大神請繞道,謝謝!
- 閱讀大約需要10分鐘。
一、理解項目概況并提出問題
1.1 登陸官網(wǎng)查看項目概況
Titanic: Machine Learning from Disaster?www.kaggle.com變量解釋:
下載三個數(shù)據(jù)集,測試數(shù)據(jù),訓(xùn)練數(shù)據(jù)和預(yù)測數(shù)據(jù)。
1.2 整體思路
1.3 提出問題
1)有沒有可能一些特定的人群如婦女兒童會比大多數(shù)人更容易存貨?
2)不同等第倉存貨概率是不是不同?
3)生存概率和年齡有關(guān)系嗎?
4)生存概率會不會收到家庭成員多少的影響?
二、數(shù)據(jù)理解、準(zhǔn)備
2.1 數(shù)據(jù)查看、合并
首先我們通過pandas的read_.csv函數(shù)來導(dǎo)入兩個csv然后用shape函數(shù)看看行列。
通過train.append()來合并數(shù)據(jù)集。
合并的原因是因為訓(xùn)練數(shù)據(jù)特征要和測試數(shù)據(jù)特征一致。
我們發(fā)現(xiàn)測試數(shù)據(jù)集比訓(xùn)練數(shù)據(jù)集少一行是因為少了survive,這個參數(shù)是最后需要和預(yù)測數(shù)據(jù)集比對查看正確率的,所以會缺失。合并時忽略在appen參數(shù)加上ignore_index=True用NaN填充。
合并成功
我們通過describe()來查看數(shù)據(jù)類型的描述統(tǒng)計信息
用info函數(shù)查看所有列的行,可以查看缺失情況,為進(jìn)一步數(shù)據(jù)清洗做準(zhǔn)備。
2.2 通過可視化理解數(shù)據(jù)
我們對所有人的年齡進(jìn)行可視化,發(fā)現(xiàn)年齡差距比較大。
我們對相關(guān)系數(shù)進(jìn)行可視化,可以明顯的看出一些參數(shù)的正相關(guān)和負(fù)相關(guān)性大小,方便我們選取變量。
我們也可以通過散點圖發(fā)現(xiàn)年齡和生存率關(guān)系不是很大,和上圖相關(guān)系數(shù)所呈現(xiàn)的信息保持一致。
三、數(shù)據(jù)清洗,準(zhǔn)備
3.1 處理float64缺失值:Age,Fare
對于數(shù)值型數(shù)據(jù)我們直接用平均值填充
full['Age']=full['Age'].fillna(full['Age'.mean()]) full['Fare']=full['Fare'].fillna(full['Fare'.mean()])3.2 處理object缺失:Cabin,Embarked
用value_counts()函數(shù)來查看每個屬性總和發(fā)現(xiàn)S最多,我們就用S填充
發(fā)現(xiàn)還存在控制,我們用U來表示未知。
用http://full.info()查看發(fā)現(xiàn)所有數(shù)據(jù)已經(jīng)填充完畢
四、特征工程
數(shù)據(jù)分析當(dāng)中核心就是提取數(shù)據(jù)特征,因為數(shù)據(jù)特征代表了和數(shù)據(jù)結(jié)果的聯(lián)系。
4.1 對各個變量進(jìn)行分類
而具體提取數(shù)據(jù)特征的步驟大致為:
4.2 分類數(shù)據(jù)特征提取
分類數(shù)據(jù)主要有Sex,Cabin,Embarked,Pclass,Parch,SibSp,下面逐個清理。
1、性別
我們發(fā)現(xiàn)這里的性別是用male和female,我們要將其轉(zhuǎn)換成0,1.
首先定義映射的字典,
sex_mapDic={'male':1,
'female':0}
通過map函數(shù)讓每個數(shù)據(jù)進(jìn)行自定義函數(shù)計算
full['Sex']=full['Sex'].map(sex_mapDict)
2、登陸港口Embarked
我們首先用創(chuàng)建DataFrame()二維數(shù)據(jù)表,之后用get_dummies(full['Embarked',prefix='Embarked'])來進(jìn)行one-hot編碼存入二維表中。
(3)船艙等級Pclass
客艙等級也是一樣的步驟。
(4)船艙號Cabin
這里有一個知識點是lambda函數(shù)
直接定義:landba c:c[0]
代表輸入c輸出c[0] 非常簡單粗暴
(5)Parch,SibSp數(shù)據(jù)
接下來處理Parch,SibSp數(shù)據(jù),先理解下這兩個數(shù)據(jù)是什么意思。
SibSp:表示船上兄弟姐妹數(shù)和配偶數(shù)量,理解為同代直系親屬數(shù)量,
Parch:表示船上父母數(shù)和子女?dāng)?shù),理解為不同代直系親屬數(shù)量。
所以FamilySize等于=本人+sibsp+parch
這里和前面不同的是,前面可以直接1 2 3 等倉用特征提取函數(shù),這里要進(jìn)行范圍劃分所以要自己產(chǎn)生列,然后用map函數(shù)映射修改。
且這里的lambda函數(shù)有所不同用到了一個if判斷,寫法是if為真結(jié)果放前面,為假else結(jié)果放后面。
lambda s :1 if s==1 else 0
合并后發(fā)現(xiàn)已經(jīng)有33個特征了
4.3 字符串?dāng)?shù)據(jù)提取特征
提取姓名的時候逗號前面是名字,逗號后面句號前面的是稱謂所以我們要用split函數(shù)提取兩次。
定義一個函數(shù)同樣用map映射批量修改。
發(fā)現(xiàn)老外的稱謂真的很多
定義數(shù)據(jù)字典,轉(zhuǎn)換onehot,重復(fù)的工作挺多。
五、獲取特征相關(guān)性
5.1 獲取corr矩陣
因為我們最終結(jié)果要知道是否生存,所以看survived這一列的相關(guān)性即可。
發(fā)現(xiàn)方框內(nèi)幾列呈現(xiàn)正負(fù)相關(guān)性非常的強(qiáng)
于是乎我們組合這幾列27個影響因子。
六、準(zhǔn)備數(shù)據(jù)
這里要清楚特征是我們提取的影響生存數(shù)的因素,標(biāo)簽是生存數(shù)。
預(yù)測數(shù)據(jù)集在891行之后要進(jìn)行區(qū)分。
七、模型建立、訓(xùn)練
用sklearn的linear_model的邏輯回歸算法建立模型,并開始用拆分好的數(shù)據(jù)進(jìn)行訓(xùn)練:
可以看到我們把原始數(shù)據(jù)以28分,分成訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)。
通過model.fit(train_x,train_y)進(jìn)行訓(xùn)練
八、模型的評估、預(yù)測
8.1 模型正確率評估
輸入model.score(test_x,test_y) 輸入測試特征和標(biāo)簽進(jìn)行評估分?jǐn)?shù)
8.2 用模型進(jìn)行預(yù)測,并按要求輸出
將前面準(zhǔn)備的預(yù)測數(shù)據(jù)特征pre_x,用模型的predict方法預(yù)測生存數(shù)據(jù)pre_y,并整理成整數(shù)型int數(shù)據(jù)
8.3 提交
提交后我們就會看到我們的排名和成績
泰坦尼克號這個competition很適合機(jī)器學(xué)習(xí)的入門,大家可以自己動手實操起來,看著鴨哥剛開始給的思維導(dǎo)圖操練起來吧!
總結(jié)
以上是生活随笔為你收集整理的sklearn 相关性分析_用sklearn机器学习预测泰坦尼克号生存概率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python判断对错题_python 初
- 下一篇: python程序控制结构_python程