泰坦尼克号生存预测入门
生活随笔
收集整理的這篇文章主要介紹了
泰坦尼克号生存预测入门
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1. 數(shù)據(jù)預(yù)覽
- 2. 特征初步選擇
- 3. 增加特征`Sex`和`Embarked`
- 4. 選擇隨機(jī)森林調(diào)參
- 5. 實(shí)踐總結(jié)
本文作為學(xué)習(xí)記錄,參考 此處,如有侵權(quán),聯(lián)系刪除。
1. 數(shù)據(jù)預(yù)覽
- 數(shù)據(jù)集下載
2. 特征初步選擇
- 由于Cabin客艙號(hào)大部分都缺失,進(jìn)行填補(bǔ),可能會(huì)造成較大誤差,不選
- 乘客id,是個(gè)連續(xù)數(shù)據(jù),跟是否存活應(yīng)該無(wú)關(guān),不選
- 年齡Age,是個(gè)比較重要的特征,對(duì)缺失的部分用中位數(shù)進(jìn)行填充
- 初步調(diào)用一些模型(默認(rèn)參數(shù))進(jìn)行預(yù)測(cè):
- algs = [Perceptron(),KNeighborsClassifier(),GaussianNB(),DecisionTreeClassifier(), LinearRegression(),LogisticRegression(),SVC(),RandomForestClassifier()]
交叉驗(yàn)證的參數(shù) shuffle = True,打亂數(shù)據(jù)
模型準(zhǔn)確率: 0.531986531986532 模型準(zhǔn)確率: 0.5488215488215489 模型準(zhǔn)確率: 0.5566778900112234 模型準(zhǔn)確率: 0.5353535353535354 模型準(zhǔn)確率: 0.5712682379349046 模型準(zhǔn)確率: 0.569023569023569 模型準(zhǔn)確率: 0.5712682379349046 模型準(zhǔn)確率: 0.5364758698092031交叉驗(yàn)證參數(shù) shuffle = False,正確率就提高了,why ???求解答
模型準(zhǔn)確率: 0.5679012345679012 模型準(zhǔn)確率: 0.6644219977553311 模型準(zhǔn)確率: 0.6745230078563412 模型準(zhǔn)確率: 0.632996632996633 模型準(zhǔn)確率: 0.6947250280583613 模型準(zhǔn)確率: 0.6980920314253648 模型準(zhǔn)確率: 0.6644219977553311 模型準(zhǔn)確率: 0.68462401795735133. 增加特征Sex和Embarked
- 上面效果不好,增加一些特征
- 增加特征Sex和Embarked,查看對(duì)預(yù)測(cè)的影響
- 這兩個(gè)特征為字符串,需要轉(zhuǎn)成數(shù)字
交叉驗(yàn)證的參數(shù) shuffle = True,正確率依然很低,再次提問(wèn),why ???
模型準(zhǔn)確率: 0.5521885521885522 模型準(zhǔn)確率: 0.5432098765432098 模型準(zhǔn)確率: 0.5185185185185185 模型準(zhǔn)確率: 0.5286195286195287 模型準(zhǔn)確率: 0.5230078563411896 模型準(zhǔn)確率: 0.5252525252525253 模型準(zhǔn)確率: 0.5723905723905723 模型準(zhǔn)確率: 0.5196408529741863交叉驗(yàn)證參數(shù) shuffle = False,正確率相比于上面缺少特征Sex和Embarked時(shí),提高了不少,好的特征對(duì)預(yù)測(cè)結(jié)果提升很有幫助
模型準(zhǔn)確率: 0.675645342312009 模型準(zhǔn)確率: 0.691358024691358 模型準(zhǔn)確率: 0.7856341189674523 模型準(zhǔn)確率: 0.7822671156004489 模型準(zhǔn)確率: 0.7878787878787878 模型準(zhǔn)確率: 0.792368125701459 模型準(zhǔn)確率: 0.6655443322109988 模型準(zhǔn)確率: 0.80583613916947254. 選擇隨機(jī)森林調(diào)參
從上面可以看出隨機(jī)森林模型的預(yù)測(cè)效果最好,使用該模型,進(jìn)行調(diào)參
features = ["Pclass","Age","SibSp","Parch","Fare","Embarked","Sex"] estimator_num = [5,10,15,20,25,30] splits_num = [3,5,10,15] for e_n in estimator_num:for sp_n in splits_num:alg = RandomForestClassifier(n_estimators=e_n)kf = KFold(n_splits=sp_n,shuffle=False,random_state=1)predictions_train = []for train, test in kf.split(data_train):train_features = (data_train[features].iloc[train,:])train_label = data_train["Survived"].iloc[train]alg.fit(train_features,train_label)train_pred = alg.predict(data_train[features].iloc[test,:])predictions_train.append(train_pred)predictions_train = np.concatenate(predictions_train,axis=0) # 合并3組數(shù)據(jù)predictions_train[predictions_train>0.5] = 1predictions_train[predictions_train<=0.5] = 0accuracy = sum(predictions_train == data_train["Survived"])/len(predictions_train)print("%d折數(shù)據(jù)集,%d棵決策樹,模型準(zhǔn)確率:%.4f" %(sp_n,e_n,accuracy)) 3折數(shù)據(jù)集,5棵決策樹,模型準(zhǔn)確率:0.7890 5折數(shù)據(jù)集,5棵決策樹,模型準(zhǔn)確率:0.7901 10折數(shù)據(jù)集,5棵決策樹,模型準(zhǔn)確率:0.7935 15折數(shù)據(jù)集,5棵決策樹,模型準(zhǔn)確率:0.8092 3折數(shù)據(jù)集,10棵決策樹,模型準(zhǔn)確率:0.7890 5折數(shù)據(jù)集,10棵決策樹,模型準(zhǔn)確率:0.8047 10折數(shù)據(jù)集,10棵決策樹,模型準(zhǔn)確率:0.8137 15折數(shù)據(jù)集,10棵決策樹,模型準(zhǔn)確率:0.8092 3折數(shù)據(jù)集,15棵決策樹,模型準(zhǔn)確率:0.7868 5折數(shù)據(jù)集,15棵決策樹,模型準(zhǔn)確率:0.8002 10折數(shù)據(jù)集,15棵決策樹,模型準(zhǔn)確率:0.8092 15折數(shù)據(jù)集,15棵決策樹,模型準(zhǔn)確率:0.8047 3折數(shù)據(jù)集,20棵決策樹,模型準(zhǔn)確率:0.7969 5折數(shù)據(jù)集,20棵決策樹,模型準(zhǔn)確率:0.8092 10折數(shù)據(jù)集,20棵決策樹,模型準(zhǔn)確率:0.8114 15折數(shù)據(jù)集,20棵決策樹,模型準(zhǔn)確率:0.8092 3折數(shù)據(jù)集,25棵決策樹,模型準(zhǔn)確率:0.7924 5折數(shù)據(jù)集,25棵決策樹,模型準(zhǔn)確率:0.8070 10折數(shù)據(jù)集,25棵決策樹,模型準(zhǔn)確率:0.8103 15折數(shù)據(jù)集,25棵決策樹,模型準(zhǔn)確率:0.8025 3折數(shù)據(jù)集,30棵決策樹,模型準(zhǔn)確率:0.7890 5折數(shù)據(jù)集,30棵決策樹,模型準(zhǔn)確率:0.8013 10折數(shù)據(jù)集,30棵決策樹,模型準(zhǔn)確率:0.8081 15折數(shù)據(jù)集,30棵決策樹,模型準(zhǔn)確率:0.8193最后一種參數(shù)下,隨機(jī)森林模型的預(yù)測(cè)效果最好
5. 實(shí)踐總結(jié)
熟悉了機(jī)器學(xué)習(xí)的基本流程
- 導(dǎo)入工具包 numpy, pandas, sklearn等
- 數(shù)據(jù)讀取,pandas.read_csv(file)
- pandas的一些數(shù)據(jù)處理
data.head(n) 讀取前n行展示
data.info() 獲取數(shù)據(jù)的信息
data.describe() 獲取統(tǒng)計(jì)信息(均值、方差等)
data["Age"] = data["Age"].fillna(data["Age"].median()) 缺失數(shù)據(jù)填補(bǔ)(均值、最大值、根據(jù)別的特征分段填充等)
性別等字符串特征數(shù)字化 - 選取特征,初步預(yù)測(cè)
- 不斷的加入新的特征預(yù)測(cè)
- 選定較好的模型,再調(diào)整這些模型的參數(shù),選出最好的模型參數(shù)
總結(jié)
以上是生活随笔為你收集整理的泰坦尼克号生存预测入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode 263. 丑数 26
- 下一篇: LeetCode 103. 二叉树的锯齿