数据集采用经典的iris数据集,分类方法使用基于基尼系数的决策树。
首先引入需要的包和数据集
from sklearn.datasets import load_iris
#加载iris数据集
from sklearn.model_selection import train_test_split
#这个包可以将数据集划分为训练集和测试集
import matplotlib.pyplot as plt
#用于画图
from sklearn.tree import DecisionTreeClassifier
#用来进行决策树构造
from sklearn.tree import plot_tree
#用于绘制决策树
加载数据集并对数据集进行分类
iris = load_iris()
X = iris.data
# data是所有的4个特征数据的值
y = iris.target
# y是标签
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=40)
#划分函数中,test_size是训练集占整个数据集的比例,random_state是随机数种子,该值不同时随机划分的结果不同
构造最大深度为2的决策树,函数中可以指定criterion='entropy' 或 'gini' 未输入默认使用基尼系数。
clf=DecisionTreeClassifier(max_depth=2)
clf.fit(X_train,y_train)
查看决策树在训练集和测试集上的分类准确度
print("the precision in train set is {:.4f}".format(clf.score(X_train, y_train)))
print("the precision in test set is {:.4f}".format(clf.score(X_test, y_test)))
结果如下:
the precision in train set is 0.9524
the precision in test set is 0.9333
对构造的决策树进行绘制:
plt.figure()
clf = DecisionTreeClassifier(max_depth=2).fit(X_train, y_train)
plot_tree(clf, filled=True)
plt.title("Decision tree trained on train set")
plt.show()
结果如下: