📜  skcikit 学习决策树 - Python (1)

📅  最后修改于: 2023-12-03 15:05:13.132000             🧑  作者: Mango

使用scikit-learn学习决策树 - Python

决策树是一种基本的分类和回归技术,在机器学习和数据挖掘中很常用。scikit-learn是Python中最流行的机器学习库之一,也实现了决策树算法。

本文中,我们将使用scikit-learn库来学习决策树,其中包含了以下主题:

  1. 决策树概述
  2. scikit-learn中的决策树
  3. 决策树的优化
  4. 决策树实例
决策树概述

决策树是一种基于树结构的机器学习模型,它可以用于分类和回归分析。在分类问题中,决策树将数据集分成子集,使得每个子集的数据都属于同一类别。在回归问题中,决策树可以预测连续型变量。

决策树由一系列节点组成,每个节点都包含一个特征和对应的阀值。在执行分类或回归过程时,数据将从根节点开始,按照每个节点的阀值进行匹配,直到达到叶子节点,此时数据点将被分配到相应的类别或预测值。

scikit-learn中的决策树

scikit-learn实现了多种决策树算法,包括ID3、C4.5和CART。在使用scikit-learn训练决策树分类器时,以下是一些常见的步骤:

  1. 准备数据集:将数据分成训练集和测试集,并对特征和目标标签进行编码。
  2. 训练决策树分类器:使用fit方法拟合模型。
  3. 进行预测:使用predict方法来进行分类或回归预测。

下面是一个使用scikit-learn训练决策树的简单示例:

from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 载入数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化决策树分类器
clf = DecisionTreeClassifier()

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

# 预测测试集
y_pred = clf.predict(X_test)

# 打印准确率
print("准确率:", accuracy_score(y_test, y_pred))
决策树的优化

决策树是一种高度可解释的模型,并且可以自动地进行特征选择。但是,由于过度拟合的风险,决策树经常需要进行优化。

以下是一些常见的决策树优化技术:

  1. 剪枝:限制树的深度,或在节点少于最小样本数时停止拆分。
  2. 指定节点分裂标准:例如基尼系数或信息增益等,以及最小的分裂增益。
  3. 随机化:例如使用随机分类器或选择随机样本子集来拆分节点。
决策树实例

以下是一个基于红酒品质数据的决策树实例:

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd

# 载入数据集
wine = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv', sep=';')
X = wine.iloc[:, :-1]
y = wine.iloc[:, -1]

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化决策树分类器
clf = DecisionTreeClassifier(max_depth=5, random_state=42)

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

# 预测测试集
y_pred = clf.predict(X_test)

# 打印准确率
print("准确率:", accuracy_score(y_test, y_pred))

在这个例子中,我们使用红酒品质数据集来训练一个决策树分类器。我们首先准备数据集,然后划分成训练集和测试集,之后使用scikit-learn的DecisionTreeClassifier来拟合模型并进行预测,在最后打印出准确率的结果。