返回

决策树算法的实战应用:Kaggle泰坦尼克号乘客生存率预测

人工智能

机器学习实战:决策树算法在Kaggle泰坦尼克号生存预测中的应用

引言

机器学习在各个领域都有着广泛的应用,而决策树算法作为一种经典的机器学习分类算法,在实践中发挥着重要的作用。本文将以Kaggle泰坦尼克号乘客生存率预测竞赛为案例,介绍如何使用决策树算法构建预测模型,并对模型的性能进行评估。

背景介绍

Kaggle泰坦尼克号乘客生存率预测竞赛是一个经典的机器学习竞赛。参赛者需要根据泰坦尼克号乘客的个人信息,如年龄、性别、舱位等,预测其是否在沉船事故中存活。

数据探索

在构建预测模型之前,我们首先需要对数据进行探索和预处理。泰坦尼克号数据集包含891个乘客的信息,其中包括年龄、性别、舱位、船票价格等特征。

import pandas as pd
import numpy as np

# 读取数据
data = pd.read_csv('titanic.csv')

# 数据预处理
# 填充缺失值
data['Age'].fillna(data['Age'].mean(), inplace=True)
# 处理类别型特征
data['Sex'] = data['Sex'].astype('category')
data['Cabin'] = data['Cabin'].astype('category')

特征工程

在数据预处理之后,我们可以进行特征工程,对原始特征进行转换和组合,以提高模型的预测能力。

# 创建新特征
data['FamilySize'] = data['SibSp'] + data['Parch'] + 1
data['IsAlone'] = (data['FamilySize'] == 1).astype(int)

模型构建

我们使用scikit-learn库中的决策树分类器来构建预测模型。

from sklearn.tree import DecisionTreeClassifier

# 决策树参数设置
tree = DecisionTreeClassifier(max_depth=5)

# 模型训练
tree.fit(X_train, y_train)

模型评估

我们使用交叉验证的方法来评估模型的性能。

from sklearn.model_selection import cross_val_score

# 交叉验证
scores = cross_val_score(tree, X, y, cv=5)

# 打印平均准确率
print("平均准确率:", np.mean(scores))

结果分析

交叉验证的平均准确率约为80%,说明决策树模型能够较好地预测乘客的生存率。

模型调优

为了进一步提高模型的性能,我们可以对模型进行调优。

# 调整决策树深度
max_depths = range(1, 10)
scores = []

for max_depth in max_depths:
    tree = DecisionTreeClassifier(max_depth=max_depth)
    scores.append(np.mean(cross_val_score(tree, X, y, cv=5)))

# 获取最佳深度
best_depth = max_depths[np.argmax(scores)]

# 重新训练模型
tree = DecisionTreeClassifier(max_depth=best_depth)
tree.fit(X_train, y_train)

结论

通过使用决策树算法,我们构建了一个能够预测泰坦尼克号乘客生存率的模型。该模型的平均准确率约为80%,能够较好地完成预测任务。通过模型调优,我们可以进一步提高模型的性能。