了解Python中的决策树算法

2023-04-14 00:00:00 python 算法 决策树

决策树算法是一种常见的监督学习算法,可用于分类和回归问题。其主要思想是通过构建树形结构来对数据进行划分,每个节点代表一个属性或特征,每个分支代表对该属性的不同取值,最终的叶子节点代表一个分类或回归结果。

Python中的决策树算法主要依赖于scikit-learn库。下面是一个示例,使用决策树算法来进行分类。

首先,我们需要导入相关库:

from sklearn import tree
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

接着,加载一个数据集,这里我们使用的是经典的鸢尾花数据集:

iris = load_iris()
X = iris.data
y = iris.target

数据集包括了四个属性和一个类别标签,我们可以通过以下代码查看属性的名称:

print(iris.feature_names)

输出结果为:

['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

然后,将数据集划分为训练集和测试集:

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

这里我们将30%的数据作为测试集,随机种子为42。

接下来,初始化一个决策树分类器,并训练它:

clf = tree.DecisionTreeClassifier()
clf.fit(X_train, y_train)

现在,我们可以使用训练好的模型对测试集进行预测,并计算其精度:

accuracy = clf.score(X_test, y_test)
print('accuracy:', accuracy)

这里我们得到的精度为0.9556,即95.56%。

最后,我们可以使用graphviz库将决策树可视化出来:

import graphviz 
dot_data = tree.export_graphviz(clf, out_file=None,
                      feature_names=iris.feature_names,  
                      class_names=iris.target_names,  
                      filled=True, rounded=True,  
                      special_characters=True)  
graph = graphviz.Source(dot_data)  
graph.render("iris") 

这里我们将可视化结果保存为iris.pdf文件。

总之,Python中的决策树算法非常简单易用,只需要几行代码就可以进行分类或回归任务。

相关文章