日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sklearn 相关性分析_用sklearn机器学习预测泰坦尼克号生存概率

發(fā)布時間:2025/3/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sklearn 相关性分析_用sklearn机器学习预测泰坦尼克号生存概率 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

  • 本文為練手記錄,適用于剛?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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。