决策树算法——拟合优化
一、决策树算法原理
上一篇文章简单、直接、粗暴的使用了决策树算法对鸢尾花数据集进行分类,关于决策树算法的原理,以我的理解:就是用能最大概率的区分不同类别标签的特征值作为分裂节点。
常用的算法是:CART 和 ID3 算法。
CART 算法采用gini系数
最小的来决定使用哪种特征来进行分裂;
ID3算法采用信息增益
最大的特征来决定使用哪种特征来进行分裂;
二、决策树的最优参数
这次的数据集使用稍微复杂一点的泰坦尼克号预测生死的数据。
重复的代码不啰嗦,直接上
import numpy as np
import pandas as pd
import matplotlib.pyplot as pltdata=pd.read_csv(r'data.csv',index_col=0)
data.drop(['Cabin','Name','Ticket','Embarked'],inplace=True,axis=1)
data['Age']=data['Age'].fillna(data['Age'].mean())
data=data.dropna()
data['Sex']=data['Sex'].replace(to_replace=['female','male'],value=[1,0])
初步完成了缺失值的填充和删除处理,以及将性别替换成哑变量。
接下来,将数据集分成特征值和标签值。
x=data.iloc[:,1:]
y=data.iloc[:,0]
切分训练集和测试集
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifierxtrain,xtest,ytrain,ytest=train_test_split(x,y,test_size=0.3,random_state=25)
这里有两种方式找到最优参数,一种是自己写代码,找到最优参数。
还有一种是调用别人写好的函数。
1、自己写代码找最优参数
计算不同深度下决策树的训练集和测试集的得分
xs=np.arange(1,11)
depth_no=[]
for x in xs:clf=DecisionTreeClassifier(max_depth=x,random_state=25)clf.fit(xtrain,ytrain)cte=clf.score(xtest,ytest)ctr=clf.score(xtrain,ytrain)depth_no.append([x,cte,ctr])
使用matplotlib画出正确率的曲线图
depth_no=pd.DataFrame(data=depth_no)plt.plot(depth_no[0],depth_no[1],label='test_score')
plt.plot(depth_no[0],depth_no[2],label='train_score')
plt.legend()
plt.show()
决策树最容易出现的就是过拟合问题,随着树的深度越来越深,训练集的正确率越来越高,但是测试集的效果反而下降。
由图可以看出,树的深度在3的时候,拟合效果较好。
2、调用别人写好的函数
导包
from sklearn.model_selection import GridSearchCV
给参数
para={'max_depth':[*range(1,10)],'min_samples_leaf':[*range(1,50,5)],'min_impurity_decrease':[*np.linspace(0,0.5,20)]
}
给定决策树算法,填入训练集,自动给出最优参数。
clf=DecisionTreeClassifier(criterion='entropy')
GS=GridSearchCV(clf,para,cv=10)
GS=GS.fit(xtrain,ytrain)
GS.best_params_
这里给出的最优深度是3,和作图得到的结果是一致的。
最后就是将得到的最优参数带入到算法中
clf=DecisionTreeClassifier(max_depth=3,min_impurity_decrease=0,min_samples_leaf=1,random_state=25)
clf.fit(xtrain,ytrain)
想看决策树的样子,和之前的一样
import graphviz
from sklearn import treedot_data=tree.export_graphviz(clf,out_file=None,feature_names=x.columns,class_names=['死亡','生存'],filled=True,rounded=True)graph=graphviz.Source(dot_data)
graph
决策树算法——拟合优化相关推荐
- 决策树算法原理(ID3,C4.5)
决策树算法原理(CART分类树) CART回归树 决策树的剪枝 决策树可以作为分类算法,也可以作为回归算法,同时特别适合集成学习比如随机森林. 1. 决策树ID3算法的信息论基础 1970年昆兰找 ...
- 独家 | 手把手教你推导决策树算法
作者:Arun Mohan 翻译:杨毅远 校对:王琦 本文长度为2000字,建议阅读5分钟 本文为大家介绍了机器学习中常用的决策树算法以及相关术语,并基于天气数据集进行决策树算法(ID3.CART算法 ...
- 决策树算法介绍及应用
机器学习概念 机器学习 (Machine Learning) 是近 20 多年兴起的一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科. 机器学习理论主要是设计和分析一些 ...
- 最常用的决策树算法(一):ID3、C4.5、CART
决策树是一个非常常见并且优秀的机器学习算法,它易于理解.可解释性强,其可作为分类算法,也可用于回归模型.本文将分三篇介绍决策树,第一篇介绍基本树(包括 ID3.C4.5.CART),第二篇介绍 Ran ...
- ID3和C4.5分类决策树算法 - 数据挖掘算法(7)
(2017-05-18 银河统计) 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来判断其可行性的决策分析方法,是直观运用概率分析的一种图解法.由于这种决策分支画 ...
- Python:以鸢尾花数据为例,介绍决策树算法
文章参考来源: https://www.cnblogs.com/yanqiang/p/11600569.html https://www.cnblogs.com/baby-lily/p/1064622 ...
- python决策树原理_关于决策树算法最通俗的一次Python学习教程,你肯定得看
一. 概述 前面的一篇 有一点得先说一下,决策树在优化过程中,有3个经典的算法,分别是ID3,C4.5,和CART.后面的算法都是基于前面算法的一些不足进行改进的,我们这次的Python学习教程就先跟 ...
- 决策树算法原理(上)
决策树算法在机器学习中算是很经典的一个算法系列了.它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林.本文就对决策树算法原理做一个总结,上篇对ID3, C4.5的算法思想做了 ...
- Python+sklearn决策树算法使用入门
封面图片:<Python程序设计实验指导书>,董付国编著,清华大学出版社 =========== 在学习决策树算法之前,首先介绍几个相关的基本概念. 决策树算法原理与sklearn实现 简 ...
最新文章
- Thonny开发环境中显示数据曲线
- SQL 2008升级SQL 2008 R2完全教程或者10.00.1600升级10.50.1600
- oracle 批量修改表结构,关于Oracle批量修改表结构相关内容的整理
- 为了找到你,CTO 和你唠唠研发都做啥?
- superviseddescent (SDM C++11实现)环境配置
- matlab 三维核密度图_Matlab精彩画图示例:三维网状图和三维曲面图
- Android官方开发文档Training系列课程中文版:通知用户之更新或移除通知
- 在电脑上显示未知发布者怎么办_笔记本电脑显示器花屏怎么办?电脑屏幕花屏的解决方法...
- 5_数据分析—数据可视化
- c++ 哈希_Redis源码解析十一--Hash键实现Redis 哈希键命令实现(t_hash)
- 【react】 flux 的数据修改流程,类似与vuex那样,但是又有区别
- Oracle Spatial操作教程
- 预警:Mac木马出新招,利用俄罗斯太空计划作诱饵
- ARKit入门到精通-0.0-史小川-专题视频课程
- 阿里云邮箱企业版产品知识库
- 淘宝首页和详情页的规范
- Android项目实践(二)——日记本APP(V2)
- Java开发必备技巧
- PTA 7-191 百钱百鸡
- 牛客每日练习----一个背包问题,判断奥运年,沃老师学生的成绩