2023年7月29日发(作者:)
决策树⼀、决策树算法基础1、决策树算法: NOTE:
决策树是⼀个贪⼼算法,每次选择划分数据的划分节点的时候,都是选择让损失函数变的更⼩的这个特征属性作为划 分节点,只考虑局部最优没有考虑全局最优。 在分类的时候,损失函数可以理解为信息熵;在回归的时候,损失函数可以理解为MSE。 只有基于决策树模型才能传⼊多个标签,其他的模型需要⽤多标签多类别的API去做,但实际⼯作中通常
⼀个⼀个标签的去做。2、决策树算法知识脉络: -1. 决策树算法是什么?你怎么理解决策树算法的? -2. 决策树算法的执⾏过程?你觉得为什么可以基于决策树做特征选择? -3. 决策树算法的优缺点?如何解决这个缺点? -4. 回归决策树的构建的思想?(以往MSE最⼩化的⽅向进⾏数据的划分) -5. 决策时过拟合⽋拟合的解决⽅案? -6. 简述⼀下ID3的优缺点,C4.5对于ID3解决了那些问题、CART对于C4.5解决了什么问题?1. 决策树算法是什么?你怎么理解决策树算法的? 1.1 决策树是⼀种贪⼼算法(局部最优),根据已知样本分布的概率来来进⾏划分数据的⼀种有监督学习⽅法,决策树是⼀种 解释性强、直观、准确度⾼的⼀种⽤于概率分析的树状结构的模型。2. 决策树算法的执⾏过程?你觉得为什么可以基于决策树做特征选择? 2.1 决策树算法的执⾏过程: 决策树算法⽣成思想:特征选择、决策树⽣成、剪枝(前项剪枝、后项剪枝)。 ① 特征选择:特征选择是指从训练数据中众多的特征中选择⼀个特征作为当前节点的分裂标准,如何选择特征有着很多 不同量化评估标准标准,从⽽衍⽣出不同的决策树算法。 ② 决策树⽣成: 根据选择的特征评估标准(ID3、C4.5、CART评估是什么?),从上⾄下递归地⽣成⼦节点,直到数据 集不可分或达到限制条件则停⽌决策树停⽌⽣长。 树结构来说,递归结构是最容易理解的⽅式。 ③ 剪枝:决策树容易过拟合,⼀般来需要剪枝,缩⼩树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。 2.2 为什么决策树可以进⾏数据划分? 决策树算法在进⾏根节点特征选择的时候是让数据尽可能的存,即条件熵最⼩,所以该跟节点是对数据局决策能⼒最⼤的 特征,循环该步骤,则决策树的特征划分从上到下特征重要性依次减⼩。3. 决策树算法的优缺点?如何解决这个缺点? 3.1 优点: ① 决策树是⼀种解释能⼒极强、直观、逻辑性强的树状算法 ② 可以同时处理类别型与数值型的数据 ⑤ 在合理的剪枝情况下,模型的准确度很⾼。 ③ 可以处理线性数据与⾮线性数据的分类、回归问题。 ④ 模型训练好以后,模型运⾏的速度⾮常快。 ⑤ 便于集成学习。 缺点: ① 决策树模型对噪声数据敏感,容易过拟合(可以通过剪枝缓解) ② 在处理特征关联型数据时表现效果不明显。 ③ 决策树是⼀种贪⼼算法,只考虑局部最优,没有考虑全局最优4. 回归决策树的构建的思想?(以往MSE最⼩化的⽅向进⾏数据的划分) 回归决策树是以训练数据MSE(回归决策树算法中MSE即⽅差)最⼩的特征作为划分节点,以各个叶节点的均值作为预测值。如 果特征是连续的情况,将连续的Y值从⼤到⼩进⾏排序,⽤Y分位点作为分割的⽅法。5. 决策时过拟合⽋拟合的解决⽅案? ⽋拟合: ① 增加树的深度 ② 利⽤集成学习Boosting的思想(Adaboost、GBDT、XGboost) 过拟合: ① 剪枝(减少树的深度、节点分割字节点的最⼩数据量 ....) ② 利⽤集成学习Bagging的思想(Bagging、RF ....)
6. 简述⼀下ID3的优缺点,C4.5对于ID3解决了那些问题、CART对于C4.5解决了什么问题? 6.1 ID3算法的优缺点: pass 6.2 C4.5对于ID3解决了那些问题 针对缺点1:ID3数据划分⽐较倾向于特征的分类⽐较多的特征属性 解决⽅案:C4.5⽤信息增益率代替信息增益。 针对缺点2:ID3决策树不能处理连续的特征 解决⽅案:寻找 point_split点进⾏分割离散化,⽤这些离散的分割点来进⾏数据划分。 针对缺点3:ID3算法不⽀持剪枝,因此容易过拟合 解决⽅案:C4.5 算法⽀持剪枝,缓解过拟合。 6.3 CART对于C4.5解决了什么问题? 针对问题1:ID3算法、C4.5算法计算复杂、多叉树问题 解决⽅案:CART是⼆叉分类回归树,它⽤ gini增益 来作为划分评估,减少了计算量。 针对问题2:ID3算法、C4.5算法⽆法解决回归问题? 解决⽅案:CART 以MSE作为划分评估,以叶节点的均值作为预测值。 1、信息熵(1)信息熵的计算⽅式(2)数据混乱程度与信息熵的关系 (3)条件熵 条件熵的计算⽅式 条件熵的性质
2、决策树(1)什么是决策树思想:决策树是⼀种基于历史数据的概率关系进⾏数据划分的⼀种算法。在对数据进⾏划分的时候,希望将数据可能的划分的⾜够 的“纯”,也就是最好是划分之后的数据集中只有⼀个类别的数据1、决策树的概念: 决策树是⼀种⾮常常⽤的有监督的分类(CART决策树也可以做回归)算法,决策树(Decision Tree)是在已知各种情况发⽣概 率的基础上,通过构建决策树来进⾏分析的⼀种⽅式,是⼀种直观应⽤概率分析的⼀种图解法;2、决策树的预测过程: 是从根节点开始,测试待分类项中对应的特征属性,并按照其 值选择输出分⽀,直到叶⼦节点,将叶⼦节点的存放的类别作为 决策结果。3、 决策树类别: 分类树和回归树,前者⽤于分类标签值,后者⽤于预测连续值, 常⽤算法有ID3(多叉分类)、C4.5(多叉分类)、CART(⼆ 叉分类回归树)等4、决策树的特点:• 决策树算法是⼀种“贪⼼”算法策略,只考虑在当前数据特征情况下的最好分割⽅式,不能进⾏回溯操作。• 对于整体的数据集⽽⾔,按照所有的特征属性进⾏划分操作,对所有划分操 作的结果集的“纯度”进⾏⽐较,选择“纯度”越⾼的 特征属性作为当前需 要分割的数据集进⾏分割操作,持续迭代,直到得到最终结果。决策树是通 过“纯度”来选择分割特 征属性点的。(2)决策树的构建⽅案1、信息熵 NOTE: 决策树会将决策能⼒强的特征属性放到决策树的根节点。 信息熵越⾼ --> 数据集中没有突出的类别存在; 信息熵越低 --> 数据集中有某⼀个类别出现的可能性⾮常的⼤; 条件熵 --> 多个数据集合的信息熵的加权均值,权重为每个数据集集合的数据占⽐。2、决策树划分策略 决策树划分策略 --> 选择让数据集更“纯”的特征属性进⾏划分 --> 也就是让划分之后的数据集的信息熵⾜够⼩,越⼩越好 --> 划分之后的数据是存在多个数据集,所以需要条件熵进⾏衡量3、决策树划分过程 选择条件熵最⼩(信息增益量最⼤)的特征属性作为划分特征 --> 表⽰基于这个特征划分之后的数据是⾜够纯的,也就是每个数 据集中尽可能的只有⼀个类别的数据 --> 也就是体现了在当前数据集上当前特征属性的决策能⼒⾮常强 --> 所以需要将这个特征 放到根节点 --> 基于决策树算法来讲,可以认为越靠近根节点的判断属性,决策能⼒越强 --> 决策树算法中最终可以通过属 性feature_importances_
(3)决策树特征属性类型对决策树构建的影响
(4)决策树量化纯度的⽅式:Gini系数、熵(Entropy)、 错误率 对于 ID3 算法(离散特征 多叉树分类算法) ------- 信息增益C4.5算法(离散、连续特征 多叉树分类算法) ------- 信息增益率 CART算法(离散、连续特征 ⼆叉树分类回归算法) ---------- gini增益率 CART回归决策树的纯度划分标准注意:以上的纯度划分标准是针对于分类决策树,回归决策树的纯度划分标准是 MSE最⼩(训练集⼦节点MSE最⼩)。(5)决策树算法的停⽌条件• 决策树构建的过程是⼀个递归的过程,所以必须给定停⽌条件, 否则过程将不会进⾏停⽌,⼀般情况有两种停⽌条件:
• 当每个⼦节点只有⼀种类型的时候停⽌构建
• 当前节点中样本数⼩于某个阈值,同时迭代次数达到给定值时,停⽌构建过程, 此时使⽤max(p(i))作为节点的对应类型
• NOTE:⽅式⼀可能会使树的节点过多,导致过拟合(Overfiting) 等问题;⽐较常⽤的⽅式是使⽤⽅式⼆作为停⽌条件。(6)决策树算法效果评估 分类决策树分类决策树评估⽅式:与传统的分类的评估⽅式相同。 回归决策树
回归决策树评估⽅式:与传统的回归的评估⽅式相同。(7)决策树算法LOSS函数决策树LOSS函数:决策树是⼀种贪婪算法,他只考虑当前情况的条件熵最⼩特征划分。
(8) 决策树预测策略1、分类树:分类树的 叶⼦节点的预测结果 是根据当前叶⼦节点训练数据的⽬标属性的 多票表决的⽅式决定2、回归树:回归树特征属性划分的标准是 MSE(决策树中MSE相当于训练数据的⽅差)最⼩,预测结果为 当前训练数据叶⼦节点的 均值。(9)决策树过拟合⽋拟合的解决⽅案决策树: 过拟合 --> ⼀般是由于决策树深度太深导致的,也就是决策树模型太复杂了。 解决⽅案: -1. 限制决策树的深度: 剪枝 -2. 利⽤随机森林集成学习解决过拟合 ⽋拟合 --> ⼀般是由于决策树的深度太浅导致的 解决⽅案: -1. 加深决策树的深度,也就是不做太严格的剪枝操作 -2. 利⽤GBDT、AdaBoost集成学习解决⽋拟合 (10)决策树例题三、决策树主要算法• 建⽴决策树的主要是以下三种算法
• ID3
• C4.5
• CART(Classification And Regression Tree)1、决策树模型的优缺点: 优点: ① 模型易构建,简单直观,具有很强的解释性,模型可以可视化 ② 应⽤范围⼴,可⽤于分类和回归,⽽且⾮常容易做多类别的分类 ③ 能够处理数值型和连续的样本特征(CART算法) ④ 在给定适当的剪枝技巧下,决策树模型泛化能⼒较强,异常样本不敏感。 缺点: ① 没有合理的剪枝约束下容易过拟合。 ② 决策树是基于启发式的贪⼼算法建⽴的,这种算法不能保证建⽴全局最优的决策树。Random Forest 引⼊随机能缓解 这个问题 ③ 忽略数据集中属性的相互关联。 ④ 对缺省数据处理较差。 ⑤ 需要将数据全部加载内存,适合⼩规模数据处理。 1、ID3算法
(1)ID3算法基础1、ID3算法(离散特征 多叉树分类算法) ------- 信息增益为纯度的划分规则
• 1. ID3算法只⽀持离散的特征属性,不⽀持连续的特征属性
• 2. ID3算法构建的是多叉树2、ID3算法:由于ID3算法使⽤信息增益最⼤的特征作为数据的划分标准,所以ID3算法⽐较倾向于特征值类别⽐较多的特征(特 征值类别较多的特征划分 多叉树条件熵⽐较低)(2)ID3算法的优缺点1、ID3算法的优缺点 优点: ① 模型易构建,简单直观,具有很强的解释性 缺点: ① 计算依赖于特征取值数⽬较多的特征,⽽属性值最多的属性并不⼀定最优 ② 只能处理离散特征值的分类问题,不能做回归预测 ③ 只适合⼩规模数据集,需要将数据放到内存中 ④ 抗噪性差(ID3算法不⽀持剪枝)
2、C4.5算法(1)C4.5算法基础1、C4.5算法(离散、连续特征 多叉树分类算法) ------- 信息增益率为纯度的划分规则
• 1. C4.5算法⽀持离散、连续的特征属性 • 2. C4.5算法构建的是多叉树 • 3. C4.5算法⽤信息增益率作为纯度标准,缓解了ID3算法倾向于特征属性类别较多的特征划分问题。2、C4.5算法: ① 在树的构造过程中会进⾏剪枝操作进⾏优化 ② 能够⾃动完成对连续属性的离散化 处理 ③ C4.5构建的是多分⽀的决策树(2)C4.5算法的优缺点• 优点:
• 模型易构建,简单直观,具有很强的解释性
• 准确率较⾼(它⽀持剪枝,抗燥性好)• 缺点:
• 对数据集需要进⾏多次顺序扫描和排序,所以效率较低
• 只适合⼩规模数据集,需要将数据放到内存中3、CART算法 ---- 基尼系数(分类回归树)sklearn库中只⽀持CART算法。(1)CART算法基础1、CART算法(离散连续特征 ⼆叉分类回归树) ---- GINI增益率 划分 1.1 CART算法使⽤GINI增益率作为分割属性选择的标准,选择GINI增益率最⼤的作为当前数据集的分割属性; 1.2 可⽤于分类和回归两类问题 1.3 CART构建 是⼆叉树。
(2)CART算法优缺点1、CART算法优缺点: 优点: ① 在⾯对诸如存在缺失值、变量数多等问题时CART 显得⾮常稳健 ② ⾮常灵活,允许有部分错分成本,还可指定先验概率分布,可使⽤⾃动剪枝来得到归纳性更强的树。 ② 决策树模型的基本优点。 缺点: ①4、ID3、C4.5、CART算法总结1、ID3、C4.5、CART算法的区别: ① CART算法构建的⼀定是⼆叉树,ID3和C4.5构建的不⼀定是⼆叉树。(主要区别) ② ID3算法:离散特征 多叉树分类算法,以信息增益为纯度的划分规则 C4.5算法:离散、连续特征 多叉树分类算法,以信息增益率为纯度的划分规则,⽀持剪枝 CART算法:离散、连续特征 ⼆叉树分类回归算法,以GINI增益率为纯度的划分规则,⽀持剪枝 ③ 当属性值取值⽐较多的时候,最好考虑C4.5、CART算法,ID3得出的效果会⽐较差,CART算法是三种算法中最常⽤的⼀种决 策树构建算法(sklearn中仅⽀持CART)
2、ID3、C4.5、CART算法的相同点: ① ID3、C4.5和CART算法均只适合在⼩规模数据集上使⽤(数据集必须可以完全加载 到内存中) ② ID3、C4.5和CART算法都是单变量决策树四、回归树 VS 分类树1、回归数与分类树的纯度划分策略2、回归数与分类树的预测结果策略3、回归树的预测结果 ---- 分段函数五、决策树优化策略1、决策树优化策略的原因:决策树在没有合理剪枝约束下,是极其容易造成过拟合。2、决策树优化的两个策略: • 剪枝优化
• 决策树过渡拟合⼀般情况是由于节点太多导致的,剪枝优化对决策树的正确率影响 是⽐较⼤的,也是最常⽤的⼀种优 化⽅式。
• Random Forest
• 利⽤训练数据随机产⽣多个决策树,形成⼀个森林。然后使⽤这个森林对数据进⾏ 预测,选取最多结果作为预测结果。 1、决策树的剪枝(1)前向剪枝 ----- sklearn 参数剪枝是前向剪枝• 前置剪枝: 在构建决策树的过程中,提前停⽌。结果是决策树⼀般⽐较⼩,实践证明 这种策略⽆法得到⽐较好的结果。(2)后向剪枝• 后置剪枝:在决策树构建好后,然后再开始裁剪,⼀般使⽤两种⽅式: 1)⽤单⼀叶⼦ 节点代替整个⼦树,叶节点的分类采⽤⼦树中最主要的分类; 2)将⼀个⼦树完全替代 另外⼀棵⼦树;后置剪枝的主要问题是计算效率问题,存在⼀定的浪费情况。
• 后剪枝总体思路(交叉验证):
• 由完全树T0开始,剪枝部分节点得到T1,在此剪枝得到T2.....直到仅剩树根的树Tk
• 在验证数据集上对这k+1个树进⾏评价,选择最优树Ta(损失函数最⼩的树)
六、决策树可视化1、决策树可视化要求的包 2、 决策树可视化的⽅式from sklearn import tree================================ 决策树可视化 ========================================导包:from sklearn import treeimport pydotplus--------------------------------------------------------------------------------------第⼀种⽅式: 输出dot⽂件,然后使⽤dot的命令将⽂件转换为图像的形式with open('', 'w') as writer: _graphviz(decision_tree=algo, out_file=writer)cmd命令下:dot -T⽂件路径名 -o输出⽂件路径名--------------------------------------------------------------------------------------第⼆种⽅式: 直接输出图像或者pdf⽂件dot_data = _graphviz(decision_tree=treeBest, out_file=None, feature_names=list('abcdefghijklmn'), rounded=True, filled=True, special_characters=True )'''decision_tree -------- 决策树的的对象名out_file -------- 不导出⽂件,选择 Nonefeature_names --------- 设定决策树根据某特征属性划分数据的 特征属性名rounded=True --------- 图形圆⾓化filled=True --------- 图像填充颜⾊special_characters=True -------- 格式化显⽰形式(作⽤不⼤)'''graph = _from_dot_data(dot_data) ------ 将dot对象 dot_data ⽣成图形对象_png("") ------------ 将图形对象写出_pdf("") ------------ 将图像对象写出--------------------------------------------------------------------------------------⽅式三:直接⽣成图⽚ ( jupter中实现)from sklearn import treefrom y import Imageimport pydotplusdot_data = _graphviz(treeBest, out_file=None, filled=True, rounded=True, special_characters=True)graph = _from_dot_data(dot_data)Image(_png())
七、决策树API
1、决策树分类onTreeClassifier
=============================== 决策树分类API ===========================================class onTreeClassifier(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)''' criterion="gini", 给定纯度的度量⽅式,可选值gini和entropy max_depth=None, 前置剪枝参数,⽤于限制决策树的深度,当决策树深度达到该值的时候,对数据不进⾏划分了。 min_samples_split=2,前置剪枝参数,当需要进⾏数据划分的时候,要求当前数据集中的样本数⽬⾄少为2个。 min_samples_leaf=1,前置剪枝参数,要求划分之后的数据集中的样本数⽬⾄少为该值。 max_leaf_nodes=None, 前置剪枝参数,⼀般不⽤,⽤于限制最多允许多少个叶⼦节点 min_weight_fraction_leaf=0., 需要在叶节点处的权重总和(所有输⼊样本)的最⼩加权分数。当未提供sample_wei- -ght时,样本具有相同的权重。 random_state=None,------------------------------------------------------------------------------------------ splitter="best", 防⽌过拟合⽤的....,与下⾯的 max_features 参数⼀起⽤,参数取值为 best/random,前者 是选取所有的特征训练,random 是随机部分特征进⾏训练,默认使⽤best,当数据量较⼤时,加快训练速度可以使⽤random max_features=None, 防⽌过拟合⽤的....
寻找最佳分割时要考虑的功能数量: 如果是int,则在每次拆分时考虑max_features功能。 如果为float,则max_features为百分⽐,并 在每次拆分时考虑int(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_features功能。
min_impurity_decrease=0., min_impurity_split=None, class_weight=None, presort=False'''pipeline = Pipeline([ ('poly',poly), ('dtree',dtree)])'''属性: feature_importances_:shape数组= [n_features] 功能重要性。功能越⾼,功能越重要。特征的重要性计算为该特征带来的标准的(标准化的)总减少量。它也被称为 基尼的重要性[R249]。⽅法:apply(X [,check_input]) 返回每个样本预测为的叶⼦的索引。decision_path(X [,check_input]) 返回树中的决策路径fit(X,y [,sample_weight,check_input,...]) 从训练集(X,y)构建决策树回归量。fit_transform(X [,y]) 适合数据,然后转换它。get_params([深]) 获取此估算⼯具的参数。predict(X [,check_input]) 预测X的类或回归值。score(X,y [,sample_weight]) 返回预测的确定系数R ^ 2。set_params( * * PARAMS) 设置此估算器的参数。
2、决策树回归onTreeRegressorclass onTreeRegressor(criterion='mse', 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,
presort=False)七、python决策树伪代码、代码、sklean库决策树1、基于python代码实现决策树....2、基于sklearn库决策树代码=============================== 决策树回归 ===========================================import re,os,warnings,pydotplusimport numpy as npimport pandas as pdimport as pltimport sklearnfrom import DecisionTreeRegressorfrom _model import Ridgefrom _selection import train_test_split,GridSearchCVfrom cessing import PolynomialFeaturesfrom ne import Pipelinefrom sklearn import treefrom s import r2_score,mean_squared_error,mean_absolute_warnings('ignore')# 观察导⼊数据df_data = _csv('./boston_',sep = 's+',header = None)# print(df_(),df_())# df_(data_format) 问题⼀: --------------------------------- apply函数报错# 数据清洗df_data = df_('float64')print(df_())# 提取特征和⽬标属性矩阵X = df_[:,:-1]Y = df_[:,-1]# 数据分割X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2,random_state=100)X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2,random_state=100)print(X_,Y_)# 特征⼯程poly = PolynomialFeatures(degree=2,include_bias = False)# 构建模型dtree = DecisionTreeRegressor(criterion='mse',max_depth=5,min_samples_split=6,min_samples_leaf=2)''' criterion="mse", 给定纯度的度量⽅式,可选值mse和mae splitter="best", 防⽌过拟合⽤的.... max_depth=None, 前置剪枝参数,⽤于限制决策树的深度,当决策树深度达到该值的时候,对数据不进⾏划分了。 min_samples_split=2,前置剪枝参数,当需要进⾏数据划分的时候,要求当前数据集中的样本数⽬⾄少为2个。 min_samples_leaf=1,前置剪枝参数,要求划分之后的数据集中的样本数⽬⾄少为该值。 min_weight_fraction_leaf=0., max_features=None, 防⽌过拟合⽤的.... random_state=None, max_leaf_nodes=None, 前置剪枝参数,⼀般不⽤,⽤于限制最多允许多少个叶⼦节点 min_impurity_decrease=0., min_impurity_split=None, class_weight=None, presort=False'''pipeline = Pipeline([ ('poly',poly), ('dtree',dtree)])'''特点:① 管道流内部集成fit和tranform⽅法,执⾏pipeline对象 .fit .predict 内部将⾃动进⾏特征⼯程转换,但要注意的是, 转化的数据不会覆盖原数据,即原数据的维度内容不会改变(相当于内部使⽤的是原数据的缓存数据)。'''# print(_params()['tree'])param_grid = { 'poly__degree':[1], 'dtree__criterion':['mse','mae'], 'dtree__max_depth':[3,4,6], 'dtree__min_samples_split':[10,6], 'dtree__min_samples_leaf':[3,2]}gridcv = GridSearchCV(estimator=pipeline,param_grid=param_grid,cv=3)'''estimator= algoparam_grid = param_grid
cv= 5注意:⽹格交叉验证不能接直接使⽤ GridSearchCV 中的模型调⽤内部参数,需要⽤⽹格交叉验证
_estimator_.get_params()['dtree'] 获取最优模型'''# 训练模型(X_train,Y_train)# 模型评估print('决策树回归预测训练集的r2值为:{}'.format((X_train,Y_train)))print('决策树回归预测测试集的r2值为:{}'.format((X_test,Y_test)))print('最优的决策树回归模型:{}'.format(_estimator_))feature_importances = _estimator_.get_params()['dtree'].feature_importances_treeBest = _estimator_.get_params()['dtree']print('最优的决策树回归模型:{}'.format(feature_importances))index = (len(feature_importances))index = index[feature_importances > 0.01]print(index)# 可视化Y_test_predict = t(X_test).reshape(-1,1)Y_test_true = (Y_test).reshape(-1,1)Y_test_true = (Y_test).reshape(-1,1)fig = ()(Y_test_predict,'r--',label= 'predict')(Y_test_true,'g-',label = 'true')()()# 决策树可视化⽂件⽣成X_ = [:,index]Y_ = Yprint(X_.head())X_train1,X_test1,Y_train1,Y_test1 = train_test_split(X_,Y_,test_size=0.2,random_state=100)print(X_())ridge = Ridge(alpha=1.0,fit_intercept=True,solver='sag',tol=1e-4)(X_train1,Y_train1)print('r2值:{}'.format((X_test1,Y_test1)))Y_test_predict1 = t(X_test1).reshape(-1,1)Y_test_true1 = (Y_test1).reshape(-1,1)fig = ()(Y_test_predict1,'r--',label= 'predict')(Y_test_true1,'g-',label = 'true')()()# 模型持久化
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690625178a380923.html
评论列表(0条)