返回
决策树算法的实战应用:Kaggle泰坦尼克号乘客生存率预测
人工智能
2023-11-08 13:34:06
机器学习实战:决策树算法在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%,能够较好地完成预测任务。通过模型调优,我们可以进一步提高模型的性能。