泰坦尼克資料探勘比賽是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 ...