数据挖掘项目1:泰坦尼克号生存率预测

本文详细介绍了利用Python进行数据挖掘,预测泰坦尼克号乘客生存率的项目。从数据预处理、特征工程、模型构建到模型融合,全方位解析每个步骤,探讨性别、船舱等级、年龄等因素对生存率的影响。最终通过多种模型调参,实现预测准确率的提升。
摘要由CSDN通过智能技术生成

泰坦尼克号生存率预测

数据来源:Kaggle数据竞赛
写这个博客的目的,之前自己做了几个数据挖掘的项目,现在整理一下,记录一下过程。也希望可以分享出来和大家交流交流。

项目的基本思路:
1.认识数据,看看数据中的类型,数据的格式,是否有缺失值之类的。
2.处理数据,处理数据中的缺失值,异常值,离群点等。
3.特征工程,一个模型好不好,和特征工程做的好不好有很大的联系。
最近在做毕业设计----高速公路事故预测,用了各种模型,神经网络,
做出来的准确率都是百分之八十五左右。所以现在又回头去弄特征工
程,希望可以提高准确率。
4.建立模型(融合模型),比较模型,选择模型。

认识数据:
先来看看数据的基本格式,这里用pandas导入为DataFrame。

train = pd.read_csv("D:/Data mining/taitannikehao/train.csv")
train.head()


可以看到数据的特征,并且还有些有缺失值。
现在介绍下各个特征的含义:

  • PassengerId => 乘客ID
  • Pclass => 乘客等级(1/2/3等舱位)
  • Name => 乘客姓名
  • Sex => 性别
  • Age => 年龄
  • SibSp => 堂兄弟/妹个数
  • Parch => 父母与小孩个数
  • Ticket => 船票信息
  • Fare => 票价
  • Cabin => 客舱
  • Embarked => 登船港口

可以看到其实特征不是很多。
接下来具体看看各个特征中的情况:

train.info()

在这里插入图片描述看到了样本大小是891个。还有各个特征的数据类型。好多数据有缺失值,Age和Cabin缺失比较严重。

处理数据
处理一下数据中的缺失值:
1.Embarked特征缺失了两个数据,用众数填充。

train.Embarked[train.Embarked.isnull()] = train.Embarked.dropna().mode().values

2.Cabin特征缺失的太多了,先不考虑,赋给U0做个标记。

train["Cabin"] = train["Cabin"].fillna("U0")

3.Age特征比较重要,可以用机器学习来预测缺失值。这里选择随机森林来预测一下。

from sklearn.ensemble import RandomForestRegressor as RFR
#先选取数值特征进行预测
age_df = train[["Age","Survived","Fare","Parch","SibSp","Pclass"]]
age_df_notnull = age_df.loc[(train["Age"].notnull())]
age_df_isnull = age_df.loc[(train["Age"].isnull())]
X = age_df_notnull.values[:,1:]
Y = age_df_notnull.values[:,0]
clf = RFR(n_estimators = 1000,n_jobs = -1)
clf.fit(X,Y)
pred = clf.predict(age_df_isnull.values[:,1:])
train.loc[train["Age"].isnull(),["Age"]] = pred

查看一下处理之后缺失值情况

train.info()

在这里插入图片描述
可以看到缺失值处理完全。

分析特征关系
先来看一下整体的生存率。

train["Survived"].value_counts().plot.pie(autopct = "%1.2f%%")
plt.show()

在这里插入图片描述
看到大概有38.38%的活下来了。

看看各个特征和存活之间的关系。
1.Sex特征:

sns.countplot(x = "Sex",hue = "Survived",data = train)

在这里插入图片描述
比较直观

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值