决策树(Decision tree,DT)算法笔记(二)-scikit-learn

写在前面的话:哈喽,大家早安、午安、晚安喽,欢迎大家指点,也希望我的内容可以温暖、帮助同在学习路上的人们~

正文开始~~


上一篇,基于分类决策树的原理,用Python初步实现决策分类的函数,详情见决策树(Decision tree,DT)算法笔记(一)-Python。今天将基于scikit-learn来实现决策分类。

scikit-learn的决策树类型主要是来源于sklearn.tree,主要分为决策树分类DecisionTreeClassifier和决策树回归模型DecisionTreeRegressor。今天主要分析决策树分类模块DecisionTreeClassifier

1、首先来研究下DecisionTreeClassifier模块中的参数列表

DecisionTreeClassifier(criterion='gini',splitter='best',max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=None,random_state=None,max_leaf_nodes=None,min_impurity_split=1e-07,class_weight=None,presort=False)

oh,我的天哪,这么多,眼花了,请给我来瓶六神花露水~`~马上开启正经脸

criterion->表示在基于特征划分数据集合时,选择特征的标准。默认是’gini‘,即'Gini impurity'(Gini不纯度),还可以是criterion='entropy'

Gini不纯度表示该Gini度量是指随机选择集合中的元素,根据集合中label的分布将该元素赋予分类,该元素分类错误的几率;entropy则表示采用信息增益来选择特征

splitter->表示在构造树时,选择结点的原则,默认是splitter='best',即选择最好的特征点分类,比如基于信息增益分类时,则选择信息增益最大的特征点,还可以是'random'

max_features->这个参数表示在划分数据集时考虑的最多的特征值数量,根据数据类型表示的意义也不同:int值->在每次split时,最大特征数;float->表示百分数,即(max_features * n_features);'auto'->max_features=sqrt(n_features);'sqrt'->max_features=sqrt(n_features);

'log2'->max_features=log2(n_features);'None'->max_features=n_features

max_depth->int,default=None,表示数的最大深度

min_samples_split->int,float,optional(default=2),表示在分解内部结点时最少的样本数

min_samples_leaf->int,float,optional(default=1),表示每个叶结点最小的样本数目

min_weight_fraction_leaf->float,optional(default=0),如果设置为0,则表示所有样本的权重是一样的

max_leaf_nodes->int,None,optional(default=None),主要是在最优分类中考虑

class_weight->dict,list of dicts,'balanced',None,optional(default=None),主要是考虑每个类的权重{class_label: weight}

random_state->int, RandomState instance or None, optional (default=None)

min_impurity_split->float, optional (default=1e-7),树增长停止阈值,仅仅当他的impurity超过阈值时才会继续向下分解,否则会成为叶结点

presort->bool,optional(default=False),表示在进行拟合前,是否预分数据来加快数的构建。对于数据集非常庞大的分类,presort=true将导致整个分类变的缓慢;当数据集较小,且数的深度有限制,presort=true才会加速分类

剩下的就是该模型的一些属性,比如classes_,feature_importances_,max_features_,n_classes_,n_features_, n_outputs_,tree_

基于DecisionTreeClassifier模型进行决策分类

1)获取数据,将数据分为训练集和测试集,同时利用sklearn.preprocessing模块中的函数来对原始数据进行标准化,因为在一个范围内的数据会有效提高分类的准确性,代码见图1

其中,一些基本的标准化数据的方法有:包括preprocessing.scale(X)、preprocessing.StandardScaler().fit(X)、preprocessing.MinMaxScaler().fit_transform(X_train)、preprocessing.MaxAbsScaler().fit_transform(X),其中X是np.array类的数组

图1 数据标准化与分类

2)利用DecisionTreeClassifier来训练数据

图2 训练决策树模型

3)检测模型的有效性

图3 检测决策树模型的有效性,准确率为0.966...

4)预测输入级的类别

图4 基于决策树模型预测输出类别

5)获取模型的相关参数

(1)获取各个特征值的重要性,通过feature_importances_属性,取值越大越重要


图5 特征的重要性

从结论来看,第4个特征值的区分度最大,第1个和第2个特征对数据集的区分度较小,其实从属性的分布来看,也证实了这点,见图6、图7

图6 左右图分别为训练集与测试集中,第1个和第2个属性的分布
图7 左右图分别为训练集与测试集中,第3个和第4个属性的分布

(2)获取标签的类型,通过classes_

图8 获取标签类型


以上就是基于scikit-learn的DecisionTreeClassifier模型进行的分类决策树运算,随着算法复杂度的增加,scikit-learn的便利性更加明显。

好哒,谢谢大家,请大牛拍砖,也希望自己的内容对大家有所帮助~~剧情透露,下集学习朴素贝叶斯啦~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容