数据挖掘项目——泰坦尼克号生还预测

本文介绍了使用Python进行泰坦尼克号乘客生还预测的数据挖掘项目。首先,通过分析数据集,去除无关特征并处理缺失值。接着,对数据进行归一化和标准化,将非数值特征转换为数值。采用KNN、SVM和随机森林三种模型进行训练,并比较它们的性能。结果显示,KNN在测试集上的预测效果最佳。该项目帮助作者深化了对数据挖掘和机器学习流程的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据集来源于kaggle经典竞赛数据集

一、目的
根据数据集中的信息,利用python机器学习对泰坦尼克乘客是否生还进行预测。
二、数据集
我的数据集有三个,test、train、genderclassmodel,都是csv格式

test和train数据集中的字段:
在这里插入图片描述
从左到右依次是,乘客编号、是否生还、仓位、姓名、性别、年龄、船上同辈亲属的人数、乘客有父母或孩子的人数、船票号、旅费、船舱号、上船的港口(C = Cherbourg, Q = Queenstown, S = Southampton)
genderclassmodel是测试集的实际生还结果:
在这里插入图片描述
三、训练思路
通过对数据集的观察以及经验,在数据集中如乘客姓名、船票号、编号这些属性和结果明显无关,是无用的信息,可以先去除掉。数据中有很多空值,缺失值也可以先进行处理。对于船舱号的样本太少,可以不考虑这个特征,先进性删除。
我们选用KNN和随机森林进行训练。

四、数据清洗和特征处理`
引入训练集和测试集、删除姓名、床票号、船舱号的列

import numpy as np
import pandas as pd 
#1\数据引入
df_train=pd.read_csv('data/titanic/train.csv')
df_train=df_train.drop(['Name','Ticket','Cabin'],axis=1)
df_test=pd.read_csv('data/titanic/test.csv')
df_test=df_test.drop(['Name','Ticket','Cabin'],axis=1)

对缺失值进行处理,age和fare的缺失值比较多,我用平均值填充,而上船港口有两个缺失值,就直接删除了。

#2、缺失值处理
    df_train['Age']=df_train['Age'].fillna(df_train['Age'].mean())
    df_train['Fare']=df_train['Fare'].fillna(df_train['Fare'].mean())
    df_train=df_train.dropna()
    df_test['Age']=df_test['Age'].fillna(df_test['Age'].mean())
    df_test['Fare']=df_test['Fare'].fillna(df_test['Fare'].mean())

特征值的归一化和标准化
由于性别和上船港口是字符串类型,我们需要将其转化为数值,用0、1、2代替。而其他的值我用归一化将其转化为0-1之间的数。

 #3、特征处理
    from sklearn.preprocessing import MinMaxScaler,StandardScaler
    from sklearn.preprocessing import LabelEncoder,OneHotEncoder
    from sklearn.preprocessing import LabelEncoder,OneHotEncoder
    scaler_list=[Age,Fare,Pclass,SibSp,Parch]
    column_list=['Age','Fare','Pclass','SibSp','Parch']
    for i in range(len(scaler_list)):
        if not scaler_list[i]:
            df_train[column_list[i]]=MinMaxScaler().fit_transform(df_train[column_list[i]].values.reshape(-1,1)).reshape(1,-1)[0]
            df_test[column_list[i]]=MinMaxScaler().fit_transform(df_test[column_list[i]].values.reshape(-1,1)).reshape(1,-1)[0]
        else:
            df_train[column_list[i]]=StandardScaler().fit_transform
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值