通往Kaggle竞赛之路对泰坦尼克号生还者预测之RandomForestClassifier(),XGBClassifier()

一、加载数据集,将train与test赋给all_data并释放空间
二、手动筛选数据集特征,并进行填充,利用循环,将所有在selected_features中特征类型为object的对象,np.nan(字符串类型)替换为‘0’,返回all_data[i]对应的Labels比如2,7,1,8等
三、利用索引,返回X_train,X_test,y的值,其中y中的索引一定是NAN,以此来区分
四、利用随机森林和XGB进行分类,同时用五折交叉检验对模型进行评估,训练结果存放在submission/rfc_submission.csv中

代码部分

#_*_ coding:utf-8 _*_
# @Time    : 2019/11/15 19:11
# @Author  : xm_ai
# @Email   : 793790994@qq.com
# @File    : train_v1.py
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import LabelEncoder
from xgboost.sklearn import XGBClassifier
from tqdm import tqdm
import os, sys
import numpy as np
import gc

train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
all_data = pd.concat([train, test], ignore_index=True)
print(train.info())
print(test.info())

del train, #test
gc.collect()

# 手动筛选数据集中的特征
selected_features = ['Pclass','Sex','Age','Embarked','SibSp','Parch','Fare','Cabin','Name']
all_data['Embarked'].fillna('S',inplace=True)
all_data['Age'].fillna(all_data['Age'].mean(),inplace=True)
all_data['Fare'].fillna(all_data['Fare'].mean(),inplace=True)

cat_col = [i for i in all_data.select_dtypes(object).columns if i in selected_features]
print(cat_col)
for i in tqdm(cat_col):
    all_data[i].replace(np.nan, '0', inplace=True)
    lbl = LabelEncoder()
    all_data[i] = lbl.fit_transform(all_data[i])

tr_index = ~all_data['Survived'].isnull()
X_train = all_data[tr_index][list(set(selected_features))].reset_index(drop=True)
y = all_data[tr_index]['Survived'].reset_index(drop=True).astype(int)
X_test = all_data[~tr_index][list(set(selected_features))].reset_index(drop=True)

#print('———————使用随机森林分类———————')
X_train.info()

rfc = RandomForestClassifier()
xgbc = XGBClassifier()
chose_mode = 'xgbc'
if chose_mode == 'rfc':
    cross_val_score(rfc,X_train,y,cv = 5).mean()
    rfc.fit(X_train,y)
    rfc_y_predict = rfc.predict(X_test)
    rfc_submission = pd.DataFrame({'PassengerId': test['PassengerId'], 'Survived': rfc_y_predict})
    rfc_submission.to_csv('submission/rfc_submission.csv', index=False)
#print('———————使用XGB分类———————')
else:
    cross_val_score(xgbc, X_train, y, cv=5).mean()
    xgbc.fit(X_train, y)
    xgbc_y_predict = xgbc.predict(X_test)
    xgbc_submission = pd.DataFrame({'PassengerId': test['PassengerId'], 'Survived': xgbc_y_predict})
    xgbc_submission.to_csv('submission/xgbc_submission.csv', index=False)

运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值