泰坦尼克号幸存者预测

本文介绍了数据分析入门,涵盖了数据加载、预处理、探索性分析(如直方图、数据透视表和卡方检验)、特征提取(如年龄填充和特征组合)、以及使用随机森林分类器进行模型训练和优化的过程。
摘要由CSDN通过智能技术生成

本篇是数据分析的入门学习,只是运行相应的代码和学习相应的函数和库,梳理数据分析大概流程。参考的源代码链接:Jupyter Notebook Viewer (nbviewer.org)

准备工作

1.准备数据集

导入数据集并查看前五条数据

查看数据集大小(行数和列数)

查看数据集具体信息(每一列的信息)和统计信息(总数(count)、均值(mean)、标准差(std)、最小值(min)、四分位数(25%,50%,75%)和最大值(max))。

探索性分析:

使用seaborn库里面的countplot函数绘制直方图。xy参数用于指定绘制长格式数据的变量名称;data参数是用于绘制图形的数据框;hue参数用于指定数据框中绘制图形所需的变量名称,用于分组变量来控制绘图元素的顺序;palette参数是用于设置图表中颜色方案。

用dataFrame的pivot_table生成一个数据透视表,其中聚合的列是PassengerId,用sex做索引的行名,Servived做的值作为列,聚合函数为count。

使用scipy.stats模块中的chi2_contingency函数是进行卡方独立性检验的。

chi2_contingency函数返回一个包含四个元素的元组:卡方统计量的值;卡方统计量的p值;自由度;期望频数表。在这里只取了p值。卡方独立性检验(Chi-square test of independence)是一种统计假设检验方法,用于检验两个分类变量是否独立。用于确定两个变量之间是否存在某种实质性的关联。

创建一个图形(fig)和两个子图(axes),这两个子图将并排显示。nrows=1ncols=2指定了子图的布局,即1行2列。设置了整个图形的大小为18英寸宽和6英寸高。筛选出data_train中'Survived'列值为1的行,然后绘制这些行的'Age'列的直方图。直方图的颜色设置为绿色('g'),并指定在axes[0]这个子图上绘制。为第一个子图(axes[0])设置标题为'Survived Age hist',并设置了标题字体大小为18。筛选出data_train中'Survived'列值为0的行,然后绘制这些行的'Age'列的直方图。直方图颜色设置为红色('r'),并指定在axes[1]这个子图上绘制。

使用seaborn库来绘制一个箱线图,用于比较泰坦尼克号数据集中生存者(Survived=1)和遇难者(Survived=0)的船票价格(Fare)分布

使用matplotlibseaborn库来创建并显示两个直方图,分别展示泰坦尼克号数据集中生存者(Survived=1)和遇难者(Survived=0)的船票价格(Fare)分布。

使用seaborn库的countplot函数来绘制一个柱状图,展示泰坦尼克号数据集中不同乘客等级(Pclass)的生存情况(Survived)。

探究其他数据之间的关系(方法与上面同理,更换不同的参数即可)

特征提取

合并两个数据集,不做排序处理并删除passengerId。

ombined DataFrame中创建了一个新的列'title'。它使用map函数将lambda函数返回的x值存储到’title‘中,lambda表达式取将字符串分割后的第一个字符,即称呼,如女士先生等。

查看相应的统计信息

缺失值填充
Age:根据 Sex、Pclass 和 Title 分组,如果落在相同的组别里,就用这个组别的中位数填充。

Fare缺失值较多,使用平均值填充。其他缺失值采用类似方法处理。

模型训练与评估

使用scikit-learn库中的RandomForestClassifier类来创建一个随机森林分类器对象

使用scikit-learn库中的cross_val_score函数来评估随机森林分类器(rfc)在训练数据上的性能。使用了10折交叉验证(cv=10)来估计模型的泛化能力。

数据不是拿全部数据训练出来的,是交叉验证的结果。下面我们使用全部的训练数据重新训练一遍。

分析随机森林分类器(rfc)中各个特征的重要性,并将它们按照重要性从高到低进行排序

使用scikit-learn库中的SelectFromModel类来进行特征选择。减少数据的维度,从而可能提高模型的性能,减少过拟合,并加速模型的训练。最后只剩五个特征。

用网格搜索(GridSearchCV)来找到最优的参数组合,并使用分层k折交叉验证(StratifiedKFold)来评估模型性能。

%%time用于测量执行下面代码块所需的时间。

参数网格 (parameter_grid): 定义了要搜索的参数空间。这里包括max_depth, n_estimators, max_features, min_samples_split, min_samples_leaf, 和 bootstrap等参数,并为每个参数指定了一组候选值。

GridSearchCV: 网格搜索类,用于在给定的参数网格上执行交叉验证,以找到最佳参数组合。

scoring='accuracy': 使用准确率作为评分指标。
param_grid=parameter_grid: 定义要搜索的参数网格。
cv=cross_validation: 使用前面定义的分层k折交叉验证。
verbose=1: 输出详细的进度日志。
grid_search.fit(train_reduced, y): 使用经过特征选择后的训练数据train_reduced和目标变量y来拟合网格搜索对象。

grid_search.best_score_ 和 grid_search.best_params_: 分别存储了网格搜索找到的最佳分数和对应的参数组合。

parameters 是字典,用于存储随机森林分类器通过网格搜索找到的最佳参数组合。它是在执行网格搜索后通过 grid_search.best_params_ 获取的。

model = RandomForestClassifier(**parameters) 创建一个新的 RandomForestClassifier 实例,并使用 前面的parameters 中存储的最佳参数来初始化这个实例。

使用训练的模型对结果进行预测,并将结果输出到csv文件中。

部分结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值