📜  Scikit学习-决策树(1)

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

Scikit学习-决策树

简介

决策树(decision tree)是一种基本的分类和回归方法,它是一种树形结构,其中每个内部节点表示一个特征属性,每个子节点代表一个属性值,而每个叶节点代表一种类别。

Scikit-learn是Python中一个广泛使用的机器学习库,其中就包含了决策树的实现。

本文将介绍Scikit-learn中的决策树模型的使用方法。

安装Scikit-learn

Scikit-learn的安装非常简单,可以通过pip进行安装:

pip install -U scikit-learn
准备数据

在学习决策树模型之前,需要准备数据进行训练和测试。在本文中,我们将使用鸢尾花数据集。

鸢尾花数据集包含150个样本,每个样本有4个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。每个样本属于三种不同的鸢尾花:Setosa、Versicolour和Virginica。

Scikit-learn提供了方便的方法,可以从网络上获取鸢尾花数据集。可以使用以下代码来加载数据集:

from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target
划分训练集和测试集

在训练决策树模型之前,需要划分训练集和测试集以评估模型的性能。可以使用Scikit-learn中的train_test_split函数来划分数据集:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
训练模型

有了训练集和测试集之后,可以开始训练决策树模型了。可以使用Scikit-learn中的DecisionTreeClassifier来训练模型:

from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier(max_depth=3)
model.fit(X_train, y_train)

在这里,我们选择max_depth=3,最大深度为3。这意味着决策树的深度最多为3层。

预测测试集

有了训练好的模型,可以用它来预测测试集的标签:

y_pred = model.predict(X_test)
评估模型

在完成对测试集的预测后,需要评估模型的性能。可以使用Scikit-learn中的accuracy_score函数计算模型的准确率:

from sklearn.metrics import accuracy_score

accuracy_score(y_test, y_pred)
可视化决策树

我们可以使用graphviz和Scikit-learn的导出函数export_graphviz来可视化决策树。

首先需要安装graphviz和pydotplus:

pip install graphviz pydotplus

然后可以使用以下代码导出决策树:

from sklearn.tree import export_graphviz
from IPython.display import Image
import pydotplus

dot_data = export_graphviz(model, out_file=None,
                     feature_names=iris.feature_names,
                     class_names=iris.target_names,
                     filled=True, rounded=True,
                     special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
总结

本文介绍了Scikit-learn中决策树模型的使用方法。需要注意的是,决策树模型容易过拟合,因此需要进行参数调节和模型优化来提高模型的性能。