python 决策树建立 泰坦尼克号

1. 决策树模型介绍

决策树是一种基于树结构的分类模型,其基本思想是通过对数据进行分类,将数据集划分为一些小的子集,每个子集对应于一个树节点。在实际应用中,决策树模型常被用来进行数据挖掘和机器学习的任务。在此基础上,我们将利用Python编程实现一个决策树算法,并利用泰坦尼克号数据集进行验证。

2. 泰坦尼克号数据集介绍

泰坦尼克号数据集是一个经典的自然灾害数据集之一,其记录了当时泰坦尼克号发生沉船时的一些相关数据,包括乘客的姓名、年龄、性别、仓位等信息。我们将使用这个数据集来构建一个决策树模型,以便预测乘客是否能够生还。

2.1 数据集预处理

在进行模型训练之前,我们需要对数据集进行预处理。包括处理缺失值、对定性数据进行数值编码等。具体处理步骤如下:

Step1:导入相关库和数据集

import pandas as pd

import numpy as np

train_data = pd.read_csv('train.csv')

Step2:处理缺失值

train_data['Age'].fillna(train_data['Age'].mean(), inplace=True)

train_data['Embarked'].fillna('S', inplace=True)

train_data['Cabin'].fillna('U', inplace=True)

Step3:对数据进行数值编码

train_data['Sex'] = train_data['Sex'].map({'female': 0, 'male': 1}).astype(int)

train_data['Embarked'] = train_data['Embarked'].map({'S': 0, 'C': 1, 'Q': 2}).astype(int)

train_data['Cabin'] = train_data['Cabin'].apply(lambda x: x[0])

train_data['Cabin'] = train_data['Cabin'].map({'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'T': 7, 'U': 8}).astype(int)

3. 决策树模型建立

在处理完数据后,我们将构建一个决策树模型。具体的实现步骤如下:

Step1:导入相关库

from sklearn.tree import DecisionTreeClassifier

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score

Step2:准备训练特征和标签

features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Cabin', 'Embarked']

X = train_data[features]

y = train_data['Survived']

Step3:划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Step4:构建决策树

clf = DecisionTreeClassifier()

clf.fit(X_train, y_train)

4. 模型评估与优化

在构建好一个决策树模型后,我们需要对其进行评估和优化。主要关注的指标包括准确率和召回率。对于分类模型来说,准确率是指被正确分类的样本数占总样本数的比例。召回率是指真正例的样本被正确预测为正例的比例。

4.1 模型评估

我们使用测试集来评估训练好的模型。具体实现如下:

y_pred = clf.predict(X_test)

score = accuracy_score(y_test, y_pred)

print("Accuracy:", score)

该模型在测试集上的准确率为 0.821229,较为理想。

4.2 模型优化

为了进一步提高模型的准确率,我们可以使用一些技巧对其进行优化,比如交叉验证、剪枝等。

Step1:使用交叉验证对模型进行优化

from sklearn.model_selection import cross_val_score

clf = DecisionTreeClassifier()

scores = cross_val_score(clf, X, y, cv=10, scoring='accuracy')

print("Scores:", scores)

print("Mean:", scores.mean())

print("Standard Deviation:", scores.std())

结果表明,通过交叉验证,我们得出的模型准确率可以达到 0.808 左右。

Step2:使用剪枝技巧对模型进行优化

clf = DecisionTreeClassifier(max_depth=4, criterion='entropy')

clf.fit(X_train, y_train)

y_pred = clf.predict(X_test)

score = accuracy_score(y_test, y_pred)

print("Accuracy:", score)

经过剪枝之后,模型的准确率可以提高到 0.837 左右。

5. 总结

决策树是一种基于树结构的分类模型,其基本思想是通过对数据进行分类,将数据集划分为一些小的子集,每个子集对应于一个树节点。在本文中,我们利用Python编程实现了一个决策树算法,并利用泰坦尼克号数据集进行验证。通过预处理数据、构建模型、评估模型和优化模型的过程,我们得出了一个较为理想的决策树模型,可以用于预测乘客是否能够生还。

后端开发标签