决策树是一种树形结构,为人们提供决策依据,决策树可以用来回答yes和no问题,它通过树形结构将各种情况组合都表示出来,每个分支表示一次选择(选择yes还是no),直到所有选择都进行完毕,最终给出正确答案。
决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。在实际构造决策树时,通常要进行剪枝,这时为了处理由于数据中的噪声和离群点导致的过分拟合问题。剪枝有两种:
先剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造。
后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。
import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor if __name__ == "__main__": n = 500 x = np.random.rand(n) * 8 - 3 x.sort() y = np.cos(x) + np.sin(x) + np.random.randn(n) * 0.4 x = x.reshape(-1, 1) reg = DecisionTreeRegressor(criterion='mse') # reg1 = RandomForestRegressor(criterion='mse') dt = reg.fit(x, y) # dt1 = reg1.fit(x, y) x_test = np.linspace(-3, 5, 100).reshape(-1, 1) y_hat = dt.predict(x_test) plt.figure(facecolor="w") plt.plot(x, y, 'ro', label="actual") plt.plot(x_test, y_hat, 'k*', label="predict") plt.legend(loc="best") plt.title(u'Decision Tree', fontsize=17) plt.tight_layout() plt.grid() plt.show()