一、决策树
1.决策树的介绍
决策树是一种常见的分类模型,在金融分控、医疗辅助诊断等诸多行业具有较为广泛的应用。决策树的核心思想是基于树结构对数据进行划分,这种思想是人类处理问题时的本能方法。例如在婚恋市场中,女方通常会先看男方是否有房产,如果有房产再看是否有车产,如果有车产再看是否有稳定工作……最后得出是否要深入了解的判断。
2.决策树的优点
- 具有很好的解释性,模型可以生成可以理解的规则。
- 可以发现特征的重要程度。
- 模型的计算复杂度较低。
3.决策树的缺点
- 模型容易过拟合,需要采用减枝技术处理。
- 不能很好利用连续型特征。
- 预测能力有限,无法达到其他强监督模型效果。
- 方差较高,数据分布的轻微改变很容易造成树结构完全不同。
二、Demo实践
- Step1:库函数导入
- Step2:模型训练
- Step3:数据和模型可视化
- Step4:模型预测
2.1 库函数导入
2.2 训练模型
2.3 数据和模型可视化(需要用到graphviz可视化库)
运行结果:
运行结果:
‘pengunis.pdf’
2.4 模型预测
运行结果:
The New point 1 predict class:
[1]
The New point 2 predict class:
[0]
三、基于企鹅数据集的决策树实战
- Step1:库函数导入
- Step2:数据读取/载入
- Step3:数据信息简单查看
- Step4:可视化描述
- Step5:利用 决策树模型 在二分类上 进行训练和预测
- Step6:利用 决策树模型 在三分类(多分类)上 进行训练和预测
3.1 库函数导入
本次我们选择企鹅数据(palmerpenguins)进行方法的尝试训练,该数据集一共包含8个变量,其中7个特征变量,1个目标分类变量。共有150个样本,目标变量为 企鹅的类别 其都属于企鹅类的三个亚属,分别是(Adélie, Chinstrap and Gentoo)。包含的三种种企鹅的七个特征,分别是所在岛屿,嘴巴长度,嘴巴深度,脚蹼长度,身体体积,性别以及年龄。
3.2 数据读取/载入
3.3 数据信息简单查看
运行结果:
进行简单的数据查看,我们可以利用 .head() 头部.tail()尾部data.head()
运行结果:
data = data.fillna(-1)
data.tail()
运行结果:
其对应的类别标签为’Adelie Penguin’, ‘Gentoo penguin’, 'Chinstrap penguin’三种不同企鹅的类别。
data[‘Species’].unique()
利用value_counts函数查看每个类别数量
pd.Series(data[‘Species’]).value_counts()
对于特征进行一些统计描述
data.describe()
3.4 可视化描述
特征与标签组合的散点可视化
sns.pairplot(data=data, diag_kind=‘hist’, hue= ‘Species’)
plt.show()
运行结果:
从上图可以发现,在2D情况下不同的特征组合对于不同类别的企鹅的散点分布,以及大概的区分能力。
运行结果:
利用箱型图我们也可以得到不同类别在不同特征上的分布差异情况。
运行结果:
3.5 利用决策树模型在二分类上进行训练和预测
运行结果:
可视化:
运行结果:
‘penguins.pdf’
运行结果:
The accuracy of the Logistic Regression is: 0.9954545454545455
The accuracy of the Logistic Regression is: 1.0
The confusion matrix result:
[[31 0]
[ 0 25]]
我们可以发现其准确度为1,代表所有的样本都预测正确了。
3.6 利用逻辑回归模型在三分类(多分类)上进行训练和预测
运行结果:
运行结果:
运行结果:
The confusion matrix result:
[[30 1 0]
[ 0 23 0]
[ 2 0 13]]
1234
技术支持:Datawhale & 阿里云平台