kaggle泰坦尼克比賽總結

2021-09-17 01:34:38 字數 2666 閱讀 6457

泰坦尼克資料探勘比賽是kaggle上的新手入門賽,作為乙個基礎還沒打好的菜雞強行敲了一波**,但是大部分還是跟著別人的思路,看著別人的**寫的。因此**就不放了,放了跟搬運沒啥區別。單純總結一下學習感悟吧。

做資料探勘的第一步就是讀取資料之後進行分析和預處理。所要用到的python 庫有pandas,numpy,matplotlib,seaborn…

1.讀取資料之後先統計一下缺失值情況。

data=pd.read_csv('訓練集檔案路徑.csv')

data.head()

#統計缺失值

data.isnul().sum()

#展示資料

data.describe()

2.獲取資料之後要進行仔細的分析與理解,才能進行後面的建模。

為了更好地理解資料,必須掌握資料的視覺化的操作。

3.對於缺失值我們必須進行填充,下面的例子是我使用sklearn的randmforest來擬合缺失資料

#用sklearn中的randomforest來擬合缺失的年齡資料。

from sklearn.ensemble import randomforestregressor

### 使用 randomforestclassifier 填補缺失的年齡屬性

def set_missing_ages(df):

# 把已有的數值型特徵取出來丟進random forest regressor中

age_df = df[['age','fare', 'parch', 'sibsp', 'pclass']]

# 乘客分成已知年齡和未知年齡兩部分

known_age = age_df[age_df.age.notnull()].as_matrix()

unknown_age = age_df[age_df.age.isnull()].as_matrix()

# y即目標年齡

y = known_age[:, 0]

# x即特徵屬性值

x = known_age[:, 1:]

# fit到randomforestregressor之中

rfr = randomforestregressor(random_state=0, n_estimators=2000, n_jobs=-1)

rfr.fit(x, y)

# 用得到的模型進行未知年齡結果**

predictedages = rfr.predict(unknown_age[:, 1::])

# 用得到的**結果填補原缺失資料

df.loc[ (df.age.isnull()), 'age' ] = predictedages

return df, rfr

def set_cabin_type(df):

df.loc[ (df.cabin.notnull()), 'cabin' ] = "yes"

df.loc[ (df.cabin.isnull()), 'cabin' ] = "no"

return df

df_train, rfr = set_missing_ages(df_train)

df_train = set_cabin_type(df_train)

``

4.對每個特徵進行單獨分析,充分理解,看其與我們要**的特徵的關係,對於強特,很方便,對於弱特徵,需要進行特徵挖掘,特徵組合,來提高**效果,組合出強特。要不然就要捨掉影響很小的特徵,進行約簡。

5.單獨分析之後就要在特徵之間找相關性,進行特徵工程,資料清洗。

在找特徵之間的相關性的時候可以使用熱度圖。

6.要學會合併特徵,比如在這個比賽裡將客人的父母數量,兄弟姐妹數量合起來為家庭總人數的特徵。

7.去掉不必要的特徵,因為這些特徵要麼毫無意義,要麼充滿隨機性。

8.利用機器學習演算法來建模。

from sklearn.linear_model import logisticregression #logistic回歸

from sklearn import svm #支援向量機

from sklearn.ensemble import randomforestclassifier #隨機森林

from sklearn.neighbors import kneighborsclassifier #knn

from sklearn.*****_bayes import gaussiannb #樸素貝葉斯

from sklearn.tree import decisiontreeclassifier #決策樹

from sklearn.model_selection import train_test_split #切分資料集

from sklearn import metrics #精度測量

from sklearn.metrics import confusion_matrix #混淆矩陣

9.另外很重要的一點就是要進行交叉驗證,這個的重要性無需多言。

10.注意用正則化防止過擬合的問題。

11.可以多做幾組特徵,多做幾個模型,來進行模型融合,上分!

12.調參很重要,演算法理解很重要,要實現底層。

13.也不需要太執著於特徵挖掘,像我們中國移動消費者人群畫像比賽裡就一直執著於特徵挖掘,最後發現特徵選取的都差不多,差距在引數和其他的技巧上。

Kaggle滑水 泰坦尼克之災(決策樹)

本文以kaggle新手習題 titanic machine learning from disaster為場景開展實驗,以此熟悉kaggle平台。本文的原始碼託管於我的github practice of machine learning code kaggle titanic 歡迎檢視交流。tit...

經典案例 鐵達尼號

import pandas as pd import graphviz 1.讀取資料,獲取特徵值 data pd.read excel r tietan.xls print data 2.pclass,age,feature data.loc pclass age print feature.inf...

貝葉斯網路分析kaggle鐵達尼號資料

主要是讓參賽選手根據訓練集中的乘客資料和存活情況進行建模,進而使用模型 測試集中的乘客是否會存活。乘客特徵總共有11個,以下列出。當然也可以根據情況自己生成新特徵,這就是特徵工程 feature engineering 要做的事情了。passengerid 乘客id pclass 客艙等級 1 2 ...