决策树学习算法,通常是递归地根据某一准则(信息增益或基尼系数)选择最优切分点/特征,并根据该特征对训练数据集进行分割,使得对各个子数据集有一个最好的分类的过程。

这一过程对应着特征空间的划分,也对应着决策树的构建,在子数据集上循环切割过程,直到所有训练数据子集被基本正确分类,或者没有合适的特征为止。

代码示例

构建测试数据

from sklearn.datasets import make_moons
data, target = make_moons(n_samples=2000, noise=0.3, random_state=42)

数据可视化

from matplotlib import pyplot as plt
plt.scatter(data[:,0], data[:,1], c=target)
plt.show()

拆分数据集

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.3)

训练模型

from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier()
classifier.fit(x_train, y_train)

测试准确率

score_train = classifier.score(x_train, y_train)
print(score_train)
score_test = classifier.score(x_test, y_test)
print(score_test)

output

1.0
0.8783333333333333

该分类模型的训练集准确率为1.0,说明过拟合了。下一篇文章,介绍通过剪枝,来抑制过拟合问题。

本文为 陈华 原创,欢迎转载,但请注明出处:http://edu.ichenhua.cn/read/254