sklearn之决策树

‘‘‘    决策树:        基本算法原理:            核心思想:相似的输入必会产生相似的输出。例如预测某人薪资:                    年龄:1-青年,2-中年,3-老年                    学历:1-本科,2-硕士,3-博士                    经历:1-出道,2-一般,3-老手,4-骨灰                    性别:1-男性,2-女性

                    | 年龄 | 学历  | 经历  | 性别 | ==>  | 薪资        |                    | ---- | ---- | ---- | ---- | ---- | -----------|                    | 1    | 1    | 1    | 1    | ==>  | 6000(低)  |                    | 2    | 1    | 3    | 1    | ==>  | 10000(中) |                    | 3    | 3    | 4    | 1    | ==>  | 50000(高) |                    | ...  | ...  | ...  | ...  | ==>  | ...        |                    | 1    | 3    | 2    | 2    | ==>  | ?          |

                    为了提高搜索效率,使用树形数据结构处理样本数据:先按照年龄分三棵子树,再按照学历往下分,知直到所有特征都分完                    这样便得到叶级子表,叶级子表中便保存了所有特征值完全相同的样本。

            首先从训练样本矩阵中选择第一个特征进行子表划分,使每个子表中该特征的值全部相同,            然后再在每个子表中选择下一个特征按照同样的规则继续划分更小的子表,不断重复直到所有的特征全部使用完为止,            此时便得到叶级子表,其中所有样本的特征值全部相同。对于待预测样本,根据其每一个特征的值,选择对应的子表,            逐一匹配,直到找到与之完全匹配的叶级子表,用该子表中样本的输出,通过平均(回归)或者投票(分类)为待预测样本提供输出。            随着子表的划分,信息熵(信息的混乱程度)越来越小,信息越来越纯,数据越来越有序。

    决策树回归器模型相关API:                import sklearn.tree as st                # 创建决策树回归器模型  决策树的最大深度为4                model = st.DecisionTreeRegressor(max_depth=4)                # 训练模型                # train_x: 二维数组样本数据                # train_y: 训练集中对应每行样本的结果                model.fit(train_x, train_y)                # 测试模型                pred_test_y = model.predict(test_x)

    决策树模型优化:        1.工程优化:不必用尽所有的特征,叶级子表中允许混杂不同的特征值,以此降低决策树的层数,在精度牺牲可接受的前提下,                    提高模型的性能。通常情况下,可以优先选择使信息熵减少量最大的特征作为划分子表的依据。        2.集合算法:根据多个不同模型给出的预测结果,利用平均(回归)或者投票(分类)的方法,得出最终预测结果。基于决策树的集合算法,                    就是按照某种规则,构建多棵彼此不同的决策树模型,分别给出针对未知样本的预测结果,                    最后通过平均或投票得到相对综合的结论。---一棵树片面,多棵树综合起来,泛化模型            1>正向激励:首先为样本矩阵中的样本随机分配初始权重,由此构建一棵带有权重的决策树,                        在由该决策树提供预测输出时,通过加权平均或者加权投票的方式产生预测值。                        将训练样本代入模型,预测其输出,对那些预测值与实际值不同的样本,提高其权重,                        由此形成第二棵决策树。重复以上过程,构建出不同权重的若干棵决策树。---一棵树片面,多棵树综合起来,泛化模型                正向激励相关API:                    import sklearn.tree as st                    import sklearn.ensemble as se       # 集合算法模块                    # model: 决策树模型(一颗),即单棵决策树模型                    model = st.DecisionTreeRegressor(max_depth=4)                    # 自适应增强决策树回归模型                    # n_estimators:构建400棵不同权重的决策树(需要多少棵树),训练模型                    model = se.AdaBoostRegressor(model, n_estimators=400, random_state=7)                    # 训练模型                    model.fit(train_x, train_y)                    # 测试模型                    pred_test_y = model.predict(test_x)

    案例:预测波士顿地区房屋价格。        步骤:            1.读取数据,打乱原始数据集,划分测试与训练集            2.‘‘‘import numpy as npimport matplotlib.pyplot as mpimport sklearn.tree as stimport sklearn.datasets as sd  # sklearn提供的数据集import sklearn.utils as su  # 可以把数据集按照行进行打乱import sklearn.metrics as smimport sklearn.ensemble as se

# 加载波士顿房屋地区房屋价格boston = sd.load_boston()# [‘CRIM‘,‘ZN‘,‘INDUS‘,‘CHAS‘,‘NOX‘,‘RM‘,‘AGE‘,‘DIS‘,‘RAD‘,‘TAX‘,‘PTRATIO‘,‘B‘,‘LSTAT‘]# [‘犯罪率‘,‘住宅地比例‘,‘商业用地比例‘,‘是否靠河‘,‘空气质量‘,‘房间数‘,‘房屋年限‘,‘距市中心的距离‘,‘路网密度‘,‘房产税‘,‘师生比‘,‘黑人比例‘,‘低地位人口比例‘]print(boston.feature_names)  # 特征名print(boston.data.shape)  # 数据的输入print(boston.target.shape)  # 数据的输出

# 划分测试集与训练集---二八分,80%用于训练,20%用于测试# random_state称为随机种子,若打乱时使用的随机种子相同,则得到的结果相同x, y = su.shuffle(boston.data, boston.target, random_state=7)  # 按行打乱数据集train_size = int(len(x) * 0.8)train_x, test_x, train_y, test_y = x[:train_size], x[train_size:], y[:train_size], y[train_size:]print(train_x.shape)print(test_x.shape)

# 基于决策树建模-->训练模型-->测试模型-----单棵决策树model = st.DecisionTreeRegressor(max_depth=4)model.fit(train_x, train_y)pred_test_y = model.predict(test_x)

# 模型评估---单棵决策树print(sm.r2_score(test_y, pred_test_y))print(‘=======================‘)

# 基于正向激励预测房屋价格model = se.AdaBoostRegressor(model, n_estimators=400, random_state=7)model.fit(train_x, train_y)pred_test_y = model.predict(test_x)# 正向激励的模型评分print(sm.r2_score(test_y, pred_test_y))

输出结果:[‘CRIM‘ ‘ZN‘ ‘INDUS‘ ‘CHAS‘ ‘NOX‘ ‘RM‘ ‘AGE‘ ‘DIS‘ ‘RAD‘ ‘TAX‘ ‘PTRATIO‘ ‘B‘ ‘LSTAT‘](506, 13)(506,)(404, 13)(102, 13)0.8202560889408635=======================0.9068598725149652

原文地址:https://www.cnblogs.com/yuxiangyang/p/11184003.html

时间: 2024-10-16 06:06:59

sklearn之决策树的相关文章

再探决策树算法之利用sklearn进行决策树实战

sklearn模块提供了决策树的解决方案,不用自己去造轮子了(不会造,感觉略复杂): 下面是笔记: Sklearn.tree参数介绍及使用建议 参数介绍及使用建议官网: http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html class sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best'

基于sklearn 实现决策树(含最简代码,复杂源码:预测带不带眼镜)

最简代码: 1 #简单的决策树分类 2 from sklearn import tree 3 features = [[300,2],[450,2],[200,8],[150,9]] 4 labels = ['apple','apple','orange','orange'] 5 clf = tree.DecisionTreeClassifier() 6 clf = clf.fit(features,labels) 7 print(clf.predict([[400,6]])) 预测代码: 数据

使用sklearn构建含有标量属性的决策树

网络上使用sklearn生成决策树的资料很多,这里主要说明遇见标量数据的处理. 经查验参考资料,sklearn并非使用了课上以及书上讲的ID3算法,而是选择了CART,该算法生成二叉树:scikit-learn使用了一种优化的CART算法,要求元数据为数值型(要能转换为np.float32类型的矩阵),因为该实现同时可以做回归分析.然而,题目数据中有天气等标量数据,所以还要进行转化,这里采用了sklearn中的LabelEncoder来将n个标量转化为1至n-1的整数.将数据训练完毕后,安装并使

决策树应用(一)

上一篇讲了ID3决策树原理,现在开始拿一个例子进行实战 一.python机器学习库 scikit-learn.sklearn是一个Python第三方提供的非常强力的机器学习库,它包含了从数据预处理到训练模型的各个方面.在实战使用scikit-learn中可以极大的节省我们编写代码的时间以及减少我们的代码量,使我们有更多的精力去分析数据分布,调整模型和修改超参.sklearn基本包含了所有机器学习的方式,如 Classification 分类,如SVM Regression 回归 ,如LR Clu

决策树(三)决策树与Jupyter小部件的交互式可视化

简介 决策树是广泛用于分类和回归任务的监督模型. 在本文中,我们将讨论决策树分类器以及如何动态可视化它们. 这些分类器在训练数据上构建一系列简单的if / else规则,通过它们预测目标值.  在本演示中,我们将使用sklearn_wine数据集,使用sklearn export_graphviz函数,我们可以在Jupyter中显示树. from sklearn.tree import DecisionTreeClassifier, export_graphviz from sklearn im

机器学习-决策树 Decision Tree

咱们正式进入了机器学习的模型的部分,虽然现在最火的的机器学习方面的库是Tensorflow, 但是这里还是先简单介绍一下另一个数据处理方面很火的库叫做sklearn.其实咱们在前面已经介绍了一点点sklearn,主要是在categorical data encoding那一块.其实sklearn在数据建模方面也是非常666的.一般常用的模型都可以用sklearn来做的.既然它都这么牛逼了,咱们为啥还要学TensorFlow呢?其实主要的原因有两个,一是因为Google在流量方面的强势推广,导致绝

挖掘建模

分类与预测 分类主要是预测分类标号(离散属性),预测是建立连续值函数模型,预测给定自变量的因变量的值. 常用的分类与预测算法 算法名称 算法简介 回归分析 回归分析是确定预测属性(数值型)与其他变量间相互依赖的定量关系最常用的统计学方法.包括线性回归,非线性回归,Logistic回归,岭回归,主成分回归,偏最小二乘回归等模型 决策树 决策树采用自顶向下的递归方式,在内部节点进行属性值的比较,并根据不同的属性值从该节点向下分支,最终得到的叶节点是学习划分的类 人工神经网络 人工神经网络是一种模仿大

用PMML实现机器学习模型的跨平台上线

在机器学习用于产品的时候,我们经常会遇到跨平台的问题.比如我们用Python基于一系列的机器学习库训练了一个模型,但是有时候其他的产品和项目想把这个模型集成进去,但是这些产品很多只支持某些特定的生产环境比如Java,为了上一个机器学习模型去大动干戈修改环境配置很不划算,此时我们就可以考虑用预测模型标记语言(Predictive Model Markup Language,以下简称PMML)来实现跨平台的机器学习模型部署了. 一.PMML概述 PMML是数据挖掘的一种通用的规范,它用统一的XML格

python分类预测模型的特点

模型 模型特点 位于 SVM 强大的模型,可以用来回归,预测,分类等,而根据选取不同的和函数,模型可以是线性的/非线性的 sklearn.svm 决策树 基于"分类讨论,逐步细化"思想的分类模型,模型直观,易解释 sklearn.tree 朴素贝叶斯 基于概率思想的简单有效的分类模型,能够给出容易理解的概率解释 sklearn.naive_bayes 神经网络 具有强大的拟合能力,可疑用于拟合,分类等,它有多个增强版本,如递神经网络,卷积神经网络,自编吗器等,这些是深度学习的模型基础