谷歌、百度或许搜到了很多关于决策树的文章(回归又可以分类的)。好吧,不喜欢看那些公式的朋友请看这里:
这就是一个决策树,一颗可以根据策略将数据集分成类别的树。。。。。。(这个解释是low点哈)
附上一个简单实例的代码实现:
from sklearn.datasets import load_iris,load_breast_cancer
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import export_graphviz
import pydotplus
iris = load_iris( )
clf = DecisionTreeClassifier( )
clf_iris = clf.fit(iris.data,iris.target)
dot_Data = export_graphviz(clf_iris,out_file=None)
graph_iris = pydotplus.graph_from_dot_data(dot_Data)
graph_iris.write_pdf("./load_iris.pdf")
结果如下:
决策树比较官方的解释是:决策树是广泛用于分类和回归任务的模型。本质上,它从一层层的if/else问题中进行学习,并得出结论。决策树有两个优点:一是得到的模型很容易可视化,非专家也很容易理解(至少对于较小的树而言)。二是算法完全不受数据缩放的影响。由于每个特征被单独处理,而且数据的划分也不依赖于缩放,因此决策树算法不需要特征预处理,比如归一化或标准化。特别是特征的尺度完全不一样时或者二元特征和连续特征同时存在时,决策树的效果很好。决策树的主要缺点在于,即使做了预剪枝,它也经常会过拟合,泛化性能很差。因此,在大多数应用中,往往使用集成方法来替代单棵决策树。下面解释过拟合和预剪枝。
过拟合:通俗的理解就是生成的决策树(模型)对训练数据集的依赖性很高,当这样一个完全针对某一训练集而生成的模型面对训练数据时的准确度是完全可以达到100%的,但是如果面对其他测试集可能错误率也会很高,比如下图:
上面的模型确实可以非常完美的将圆形和三角形完全的分开(模型其实就是那些直线),但是这种模型很显然是对训练数据依赖性很高的。再看另外一幅图片。
很显然这个模型并没有把所有的数据完美的区分开,但是对于其它测试数据而言&#