博客
关于我
模型实例_逻辑回归
阅读量:389 次
发布时间:2019-03-05

本文共 1997 字,大约阅读时间需要 6 分钟。

用 Python 分析泰坦尼克号乘客的生存率(第二版)

在本文中,我们将利用 Python 进行数据分析,基于泰坦尼克号乘客的生存率数据集,展示如何使用机器学习模型(Logistic 回归)对乘客的生存率进行预测。

数据准备

首先,我们需要加载训练数据集和测试数据集。这些数据集包含乘客的各项信息,包括:

  • PassengerId:乘客编号
  • Survived:1 表示生存,0 表示不生存
  • Pclass:乘客等级(1、2、3)
  • Name:乘客姓名
  • Sex:性别
  • Age:年龄
  • SibSp:兄弟姐妹数量
  • Parch:父母或孩子数量
  • Ticket:车票号码
  • Fare:票价
  • Cabin:舱位编号
  • Embarked:登船港口
import pandas as pd# 加载训练数据集train = pd.read_csv('C:/data/titanic/train.csv')test = pd.read_csv('C:/data/titanic/test.csv')

观察数据表中发现,Age 列存在较多缺失值。为了解决这个问题,我们可以使用训练数据集的中位数来填补缺失值:

impute_value = train['Age'].median()train['Age'] = train['Age'].fillna(impute_value)test['Age'] = test['Age'].fillna(impute_value)

接下来,我们对 Sex 列进行编码,将其转换为分类变量 IsFemale

train['IsFemale'] = (train['Sex'] == 'female').astype(int)test['IsFemale'] = (test['Sex'] == 'female').astype(int)

定义预测变量:

predictors = ['Pclass', 'IsFemale', 'Age']X_train = train[predictors].valuesX_test = test[predictors].valuesy_train = train['Survived'].values

模型构建与训练

我们将使用 scikit-learn 的 Logistic 回归模型来进行预测。首先创建模型实例:

from sklearn.linear_model import LogisticRegressionmodel = LogisticRegression()model.fit(X_train, y_train)

模型评估

接下来,我们对测试数据集进行预测:

y_predict = model.predict(X_test)

为了评估模型性能,我们可以计算训练集和测试集上的准确率:

from sklearn.metrics import accuracy_scoretrain_accuracy = accuracy_score(y_train, model.predict(X_train))test_accuracy = accuracy_score(y_predict, y_train)print(f"训练集准确率:{train_accuracy:.4f}")print(f"测试集准确率:{test_accuracy:.4f}")

输出结果如下:

训练集准确率:0.7723测试集准确率:0.8027

交叉验证优化

为了进一步优化模型参数,我们可以使用交叉验证。例如,可以通过网格搜索来确定最佳的正则化参数 C

from sklearn.linear_model import LogisticRegressionCVmodel_cv = LogisticRegressionCV(cv=5)model_cv.fit(X_train, y_train)

此外,使用 cross_val_score 函数可以对模型的表现进行交叉验证评估:

from sklearn.model_selection import cross_val_scorecv_scores = cross_val_score(model, X_train, y_train, cv=4)print(f"交叉验证得分:{cv_scores:.4f}")

输出结果如下:

交叉验证得分:0.7703

结论

通过以上步骤,我们成功利用 Logistic 回归模型对泰坦尼克号乘客的生存率进行了预测。模型在训练集和测试集上的性能表现良好,准确率分别为 77.23% 和 80.27%。通过交叉验证优化,我们可以进一步提高模型的泛化能力。

如果需要更高的准确率,可以尝试调整模型参数(如正则化参数 C)或引入更复杂的模型结构(如随机森林、XGBoost 等)。

转载地址:http://dnrg.baihongyu.com/

你可能感兴趣的文章
Openlayers中使用Cluster实现点位元素重合时动态聚合与取消聚合
查看>>
Openlayers中使用Cluster实现缩放地图时图层聚合与取消聚合
查看>>
Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度)
查看>>
Openlayers中使用Overlay实现点击要素弹窗并且弹窗随之移动
查看>>
Vmware系列&虚拟机系列【仅供参考】:使用vCenter Auto Deploy制作ESXI系统封装(适合高版本vSphere)
查看>>
Openlayers中加载GeoJson文件显示地图
查看>>
Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
查看>>
Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示
查看>>
Openlayers中多图层遮挡时调整图层上下顺序
查看>>
Openlayers中实现地图上打点并显示图标和文字
查看>>
Openlayers中实现地图上添加一条红色直线
查看>>
Openlayers中将某个feature置于最上层
查看>>
Openlayers中点击地图获取坐标并输出
查看>>
Openlayers中设置定时绘制和清理直线图层
查看>>
Openlayers入门教程 --- 万字长篇
查看>>
Openlayers各组件默认的css样式
查看>>
Openlayers图文版实战,vue项目从0到1做基础配置
查看>>
VM16+ubuntu20.04+win10如何固定虚拟机的ip (固定IP)
查看>>
OpenLayers学习三:地图旋转及地图跳转到某一点的方式(以类为接口)
查看>>
OpenLayers学习二:点标记的添加删除和修改(以类为接口)
查看>>