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编程实现了一个决策树算法,并利用泰坦尼克号数据集进行验证。通过预处理数据、构建模型、评估模型和优化模型的过程,我们得出了一个较为理想的决策树模型,可以用于预测乘客是否能够生还。