机器学习项目——泰坦尼克号乘船幸存者分类模型

本文详细介绍了使用机器学习预测泰坦尼克号乘客生存情况的项目。涵盖了数据预处理、模型训练、特征缩放和数据衍生四个阶段。通过比较不同分类算法,如逻辑斯蒂回归、随机森林和支持向量机,最终确定优化后的随机森林模型为最优模型,并利用特征重要性提取关键特征。尽管尝试了特征缩放和数据衍生,但对模型性能提升有限。
摘要由CSDN通过智能技术生成

0、项目说明

  • 项目目的:通过泰坦尼克号乘船者的信息数据训练一个可以做生存预测的分类模型
  • 乘船者信息数据
    链接:https://pan.baidu.com/s/1QbrlGltiMYRmRR4Ro_SAgw
    提取码:1234
  • 项目概览:
    在这里插入图片描述

1、项目整体流程

1.1、项目数据预处理

  • 项目数据导入
# 导包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 导入数据
data = pd.read_csv('./泰坦尼克船员获救/titanic_train.csv')
'''
PassengerId:乘客id
Survived:是否存活
Pclass:船舱等级
Name:姓名
Sex:性别
Age:年龄
SibSp:兄弟姐妹的个数
Parch:家人数量
Ticket:船票号
Fare:船票价格
Cabin:门牌号
Embarked:上船地点
'''
data.head(3)

在这里插入图片描述

  • 数据预览
# 数据预览
data.shape # (891, 12)
# data.loc[:,'Pclass'].unique() # array([3, 1, 2], dtype=int64)
# data.loc[:,'SibSp'].unique() # array([1, 0, 3, 4, 2, 5, 8], dtype=int64)
# data.loc[:,'Parch'].unique() # array([0, 1, 2, 5, 3, 4, 6], dtype=int64)
# data.loc[:,'Embarked'].unique() # array(['S', 'C', 'Q', nan], dtype=object)
data.loc[:,'Fare'].unique().max() # 512.3292
# 查看数据基本情况
data.info() # 查看空值情况,对于空值要么填充,要么删除整列
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Name         891 non-null    object 
 4   Sex          891 non-null    object 
 5   Age          714 non-null    float64  有缺失数据,考虑填充(平均值、中位数、众数)
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object  有缺失数据,考虑删除
 11  Embarked     889 non-null    object  有缺失数据,考虑填充
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
'''
  • 存在空值的特征列进行数据填充或数据删除
# 中位数填充数据
data.loc[:,'Age'].fillna(data.loc[:,'Age'].median(),inplace=True)
# 删除
data.drop(columns='Cabin',inplace=True)
# 众数填充
data.loc[:,'Embarked'].value_counts()
'''
Embarked
S    644
C    168
Q     77
Name: count, dtype: int64
'''
data.loc[:,'Embarked'].fillna(value="S",inplace=True)
data.info()
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 11 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Name         891 non-null    object 
 4   Sex          891 non-null    object 
 5   Age          891 non-null    float64
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Embarked     891 non-null    object 
dtypes: float64(2), int64(5), object(4)
memory usage: 76.7+ KB
'''
  • 字符型数据转数字型数据
# Sex处理为数字
# Embarked处理为数字
'''
方法1
data.loc[:,'Sex'] = data.loc[:,'Sex'].map({'male':0,'female':1})
data.loc[:,'Embarked'] = data.loc[:,'Embarked'].map({'S':0,'C':1,'Q':2})
'''
# 方法2
data.loc[:,'Sex'] = data.loc[:,'Sex'].factorize()[0]
data.loc[:,'Embarked'] = data.loc[:,</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值