R语言与机器学习(2)决策树算法

合集下载

r语言 二分类模型构建

r语言 二分类模型构建

r语言二分类模型构建二分类模型是在机器学习中常用的一种模型,用于将数据分为两个互斥的类别。

在R语言中,有多种方法可以构建二分类模型,包括逻辑回归、决策树、支持向量机等。

下面将以逻辑回归为例,详细介绍如何在R语言中构建二分类模型。

逻辑回归是一种经典的二分类模型,常用于预测一个事件发生的概率。

它基于线性回归模型的基础上,将目标变量映射到0和1之间的概率值。

在R语言中,我们可以使用glm()函数来构建逻辑回归模型。

首先,我们需要准备用于构建模型的数据。

通常,我们将数据分为训练集和测试集,用于模型的训练和评估。

假设我们有一个包含多个特征和目标变量的数据集,其中目标变量的取值为0和1。

我们可以使用以下代码将数据集划分为训练集和测试集:{r}# 加载数据data <- read.csv("data.csv")# 划分数据为训练集和测试集set.seed(123)train_index <- sample(1:nrow(data), round(0.7 * nrow(data)))train_data <- data[train_index, ]test_data <- data[-train_index, ]接下来,我们可以使用glm()函数构建逻辑回归模型。

glm()函数的第一个参数是一个公式,其形式为"目标变量~ 特征1 + 特征2 + ... + 特征n"。

下面的代码演示了如何使用glm()函数构建逻辑回归模型:{r}# 构建逻辑回归模型model <- glm(target ~ feature1 + feature2 + ..., data = train_data, family = "binomial")在上面的代码中,"target"是目标变量的名称,"feature1"、"feature2"等是特征的名称。

如何在R语言中使用随机森林进行数据分析(Ⅰ)

如何在R语言中使用随机森林进行数据分析(Ⅰ)

R语言是一种流行的统计分析和数据挖掘工具,其丰富的函数库和灵活的编程语言使其成为许多数据科学家和分析师的首选工具。

在R语言中,随机森林是一种强大的机器学习算法,可用于数据分类、回归和特征选择。

本文将介绍如何在R语言中使用随机森林进行数据分析。

一、什么是随机森林随机森林是一种集成学习方法,它由多个决策树组成,每个决策树都是用不同的子集数据进行训练。

在进行预测时,随机森林会将每棵树的预测结果进行整合,以得到最终的预测结果。

由于随机森林使用了多个决策树进行预测,因此它对于噪声的容忍度较高,且不容易过拟合。

二、数据准备在使用随机森林进行数据分析之前,首先需要准备好数据。

通常情况下,数据集需要包含一个目标变量和多个特征变量。

目标变量是我们要进行预测或分类的变量,而特征变量则是用来进行预测或分类的依据。

在R语言中,可以使用()函数读取CSV格式的数据文件,或者使用其他函数读取不同格式的数据文件。

三、数据预处理在进行数据分析之前,通常需要对数据进行预处理,以确保数据的质量和完整性。

数据预处理包括缺失值处理、异常值处理、数据标准化和特征选择等步骤。

在R语言中,可以使用()函数删除含有缺失值的行,使用scale()函数对数据进行标准化,使用cor()函数计算特征变量之间的相关性,并根据相关性选择合适的特征变量。

四、建立随机森林模型在数据准备和预处理完成后,就可以开始建立随机森林模型了。

在R语言中,可以使用randomForest包中的randomForest()函数来建立随机森林模型。

该函数的参数包括训练数据、目标变量和其他控制模型训练的参数,如树的数量、特征变量采样比例等。

建立模型后,可以使用summary()函数查看模型的总体信息和性能指标。

五、模型评估建立模型后,需要对模型进行评估,以了解模型的性能和泛化能力。

在R语言中,可以使用predict()函数对测试数据进行预测,然后使用confusionMatrix()函数计算混淆矩阵和其他性能指标,如准确率、召回率和F1分数等。

r语言随机森林筛选基因

r语言随机森林筛选基因

r语言随机森林筛选基因R语言是一种广泛使用的数据分析工具,而随机森林是一种基于决策树的机器学习算法。

在生物信息学领域,随机森林可以用于筛选基因,从而找到与特定疾病或生物过程相关的基因。

本文将介绍如何使用R语言中的随机森林算法来筛选基因。

1. 准备数据在进行随机森林算法之前,需要准备好相应的数据集。

这个数据集应该包含关于每个基因的信息,例如表达量、突变状态等等。

同时,还需要有一个响应变量(也称为标签),用于指示每个样本是否属于感兴趣的类别(例如正常组织或癌症组织)。

在R语言中,可以使用read.table()函数读取数据集文件,并将其转换为数据框格式:```{r}data <- read.table("data.txt", header=TRUE, sep="\t")```其中,“data.txt”是包含数据集的文件名,“header=TRUE”表示第一行是列名,“sep="\t"”表示使用制表符分隔列。

2. 数据预处理在进行随机森林算法之前,需要对数据进行预处理。

这包括删除缺失值、标准化变量等。

删除缺失值:```{r}data <- na.omit(data)```标准化变量:```{r}data[,1:ncol(data)-1] <- scale(data[,1:ncol(data)-1])```其中,“na.omit()”函数可以删除包含缺失值的行。

而“scale()”函数可以将每个变量的均值设为0,标准差设为1。

3. 划分训练集和测试集在使用随机森林算法之前,需要将数据集划分为训练集和测试集。

训练集用于构建随机森林模型,而测试集用于评估模型的性能。

```{r}library(caTools)set.seed(123)split <- sample.split(data$label, SplitRatio=0.7)train <- data[split==TRUE,]test <- data[split==FALSE,]```其中,“caTools”包含了一个名为“sample.split()”的函数,可以将数据集按照指定比例划分为训练集和测试集。

决策树、支持向量机、logistic、随机森林分类模型的数学公式

决策树、支持向量机、logistic、随机森林分类模型的数学公式

决策树、支持向量机、logistic、随机森林分类模型的数学公式决策树(Decision Tree)是一种基于树状结构进行决策的分类和回归方法。

决策树的数学公式可以表示为:对于分类问题:f(x) = mode(Y), 当节点为叶子节点f(x) = f_left, 当 x 属于左子树f(x) = f_right, 当 x 属于右子树其中,mode(Y) 表示选择 Y 中出现最频繁的类别作为预测结果,f_left 和 f_right 分别表示左子树和右子树的预测结果。

对于回归问题:f(x) = Σ(y_i)/n, 当节点为叶子节点f(x) = f_left, 当 x 属于左子树f(x) = f_right, 当 x 属于右子树其中,Σ(y_i) 表示叶子节点中所有样本的输出值之和,n 表示叶子节点中样本的数量,f_left 和 f_right 分别表示左子树和右子树的预测结果。

支持向量机(Support Vector Machine,简称 SVM)是一种非概率的二分类模型,其数学公式可以表示为:对于线性可分问题:f(x) = sign(w^T x + b)其中,w 是超平面的法向量,b 是超平面的截距,sign 表示取符号函数。

对于线性不可分问题,可以使用核函数将输入空间映射到高维特征空间,公式变为:f(x) = sign(Σα_i y_i K(x_i, x) + b)其中,α_i 和 y_i 是支持向量机的参数,K(x_i, x) 表示核函数。

Logistic 回归是一种常用的分类模型,其数学公式可以表示为:P(Y=1|X) = 1 / (1 + exp(-w^T x))其中,P(Y=1|X) 表示给定输入 X 的条件下 Y=1 的概率,w 是模型的参数。

随机森林(Random Forest)是一种集成学习方法,由多个决策树组成。

对于分类问题,随机森林的数学公式可以表示为:f(x) = mode(Y_1, Y_2, ..., Y_n)其中,Y_1, Y_2, ..., Y_n 分别是每个决策树的预测结果,mode 表示选择出现最频繁的类别作为预测结果。

r语言机器算法代码

r语言机器算法代码

r语言机器算法代码以下是使用R语言实现常见的机器学习算法的示例代码:1. 线性回归(Linear Regression):```R# 使用lm函数进行线性回归model <- lm(y ~ x1 + x2, data=train_data)# 预测新数据点new_data <- data.frame(x1 = 5, x2 = 3) # 新数据点的特征值predicted <- predict(model, newdata=new_data)```2. 决策树(Decision Tree):```R# 使用rpart函数进行决策树构建model <- rpart(y ~ x1 + x2, data=train_data)# 预测新数据点new_data <- data.frame(x1 = 5, x2 = 3) # 新数据点的特征值predicted <- predict(model, newdata=new_data, type="class") ```3. 随机森林(Random Forest):```R# 使用randomForest包进行随机森林建模library(randomForest)# 构建随机森林模型model <- randomForest(y ~ x1 + x2, data=train_data)# 预测新数据点new_data <- data.frame(x1 = 5, x2 = 3) # 新数据点的特征值predicted <- predict(model, newdata=new_data)```4. K近邻算法(K-Nearest Neighbors):```R# 使用class包进行K近邻算法建模library(class)# 构建K近邻模型model <- knn(train = train_data[, c("x1", "x2")], test = test_data[, c("x1", "x2")], cl = train_data$y, k = 3)# 预测新数据点new_data <- data.frame(x1 = 5, x2 = 3) # 新数据点的特征值predicted <- knn(train = train_data[, c("x1", "x2")], test = new_data, cl = train_data$y, k = 3)```以上代码仅是示例,具体的实现可能需要根据实际数据和问题做相应的调整和修改。

用R语言实现对不平衡数据的四种处理方法

用R语言实现对不平衡数据的四种处理方法

用R语言实现对不平衡数据的四种处理方法在对不平衡的分类数据集进行建模时,机器学习算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带有误导性。

那么,这种结果是为何发生的呢?到底是什么因素影响了这些算法的表现?在不平衡的数据中,任一算法都没法从样本量少的类中获取足够的信息来进行精确预测。

因此,机器学习算法常常被要求应用在平衡数据集上。

那我们该如何处理不平衡数据集?本文会介绍一些相关方法,它们并不复杂只是技巧性比较强。

本文会介绍处理非平衡分类数据集的一些要点,并主要集中于非平衡二分类问题的处理。

一如既往,我会尽量精简地叙述,在文末我会演示如何用R中的ROSE包来解决实际问题。

什么是不平衡分类不平衡分类是一种有监督学习,但它处理的对象中有一个类所占的比例远远大于其余类。

比起多分类,这一问题在二分类中更为常见。

(注:下文中占比较大的类称为大类,占比较小的类称为小类)不平衡一词指代数据中响应变量(被解释变量)的分布不均衡,如果一个数据集的响应变量在不同类上的分布差别较大我们就认为它不平衡。

举个例子,假设我们有一个观测数为100000的数据集,它包含了哈佛大学申请人的信息。

众所周知,哈佛大学以极低的录取比例而闻名,那么这个数据集的响应变量(即:该申请人是否被录取,是为1,否为0)就很不平衡,大致98%的观测响应变量为0,只有2%的幸运儿被录取。

在现实生活中,这类例子更是不胜枚举,我在下面列举了一些实例,请注意他们的不平衡度是不一样的。

1.一个自动产品质量检测机每天会检测工厂生产的产品,你会发现次品率是远远低于合格率的。

2.某地区进行了居民癌症普查,结果患有癌症的居民人数也是远远少于健康人群。

3.在信用卡欺诈数据中,违规交易数比合规交易少不少。

4.一个遵循6δ原则的生产车间每生产100万个产品才会产出10个次品。

生活中的例子还有太多,现在你可以发现获取这些非平衡数据的可能性有多大,所以掌握这些数据集的处理方法也是每个数据分析师的必修课。

决策树代价复杂度剪枝算法介绍(全)

决策树代价复杂度剪枝算法介绍(全)

决策树代价复杂度剪枝算法介绍(全)转⾃ KPMG⼤数据挖掘决策树算法是数据挖掘中⼀种⾮常常⽤的算法,它不仅可以直接对个体进⾏分类,还可以预测出每个观测属于某⼀类别的可能性,因变量可以是⼆分变量,也可以有多种取值,因此该⽅法兼备了判别分析、⼆元logistic模型和多元logistic模型的功能。

由于这些特点,决策树算法还常被⽤作基分类器来进⾏集成学习,⽐如随机森林算法就是基于CART构建起来的。

决策树也可根据节点分裂规则不同⽽进⾏细分,⽐如CART、ID3和C4.5等。

⾸先,对应⽤⽐较⼴泛的CART算法中的代价复杂度剪枝进⾏理论探讨1. 为什么要剪枝?CART(classification and regression trees)实际上包括了两部分的内容,第⼀部分涉及因变量是离散变量的分类模型,也就是所谓的分类树;第⼆部分涉及了因变量是连续变量的回归模型,即回归树。

但第⼆部分内容在实际数据挖掘项⽬中应⽤的⽐较少,因此这⾥我们只介绍分类树的剪枝算法。

决策树建模属于有监督算法,因变量属于离散变量,⽽⾃变量可以是连续变量或离散变量。

⼀般来讲,只要决策树充分地⽣长,就可以将训练样本中的所有个体进⾏完美的分类,即每个终节点⾥⾯个体的因变量取值都是⼀样的。

但是我们都知道,现实世界中的数据总会存在不同程度的噪⾳,⽐如数据的错误、偶然以及冗余信息等,如果让模型完美拟合训练数据,实际应⽤时我们会受到噪⾳的误导。

因为这些噪⾳并不是真实的规律,将模型应⽤于验证数据时,模型的精度会出现⼤幅度的下降,即所谓的过拟合现象(overfitting)。

过拟合是很多机器学习算法中都必须考虑的问题,举⼀个例⼦,读中学的时候迫于考试压⼒,有的同学采取题海战术,甚⾄把题⽬背下来,但是⼀到考试,他就考得很差,因为考试时出现的题⽬与平时相⽐肯定经过了⼀些变化,他⾮常复杂地记住了每道题的做法,但却没有提炼出通⽤的、规律性的东西。

相反,背英语作⽂框架的同学往往会取得较⾼的分数,因为这些框架是通⽤的,是规律性的东西。

随机森林算法介绍及R语言实现

随机森林算法介绍及R语言实现

随机森林算法介绍及R语言实现随机森林算法介绍算法介绍:简单的说,随机森林就是用随机的方式建立一个森林,森林里面有很多的决策树,并且每棵树之间是没有关联的。

得到一个森林后,当有一个新的样本输入,森林中的每一棵决策树会分别进行一下判断,进行类别归类(针对分类算法),最后比较一下被判定哪一类最多,就预测该样本为哪一类。

随机森林算法有两个主要环节:决策树的生长和投票过程。

决策树生长步骤:1.从容量为N的原始训练样本数据中采取放回抽样方式(即bootstrap取样)随机抽取自助样本集,重复k(树的数目为k)次形成一个新的训练集N,以此生成一棵分类树;2.每个自助样本集生长为单棵分类树,该自助样本集是单棵分类树的全部训练数据。

设有M个输入特征,则在树的每个节点处从M个特征中随机挑选m(m < M)个特征,按照节点不纯度最小的原则从这m个特征中选出一个特征进行分枝生长,然后再分别递归调用上述过程构造各个分枝,直到这棵树能准确地分类训练集或所有属性都已被使用过。

在整个森林的生长过程中m将保持恒定;3.分类树为了达到低偏差和高差异而要充分生长,使每个节点的不纯度达到最小,不进行通常的剪枝操作。

投票过程:随机森林采用Bagging方法生成多个决策树分类器。

基本思想:1.给定一个弱学习算法和一个训练集,单个弱学习算法准确率不高,可以视为一个窄领域专家;2.将该学习算法使用多次,得出预测函数序列,进行投票,将多个窄领域专家评估结果汇总,最后结果准确率将大幅提升。

随机森林的优点:∙可以处理大量的输入变量;∙对于很多种资料,可以产生高准确度的分类器;∙可以在决定类别时,评估变量的重要性;∙在建造森林时,可以在内部对于一般化后的误差产生不偏差的估计;∙包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度;∙提供一个实验方法,可以去侦测 variable interactions;∙对于不平衡的分类资料集来说,可以平衡误差;∙计算各例中的亲近度,对于数据挖掘、侦测偏离者(outlier)和将资料视觉化非常有用;∙使用上述。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法二:决策树算法决策树定义首先,我们来谈谈什么是决策树。

我们还是以鸢尾花为例子来说明这个问题。

观察上图,我们判决鸢尾花的思考过程可以这么来描述:花瓣的长度小于2.4cm 的是setosa(图中绿色的分类),长度大于1cm的呢?我们通过宽度来判别,宽度小于1.8cm的是versicolor(图中红色的分类),其余的就是virginica(图中黑色的分类)我们用图形来形象的展示我们的思考过程便得到了这么一棵决策树:这种从数据产生决策树的机器学习技术叫做决策树学习, 通俗点说就是决策树,说白了,这是一种依托于分类、训练上的预测树,根据已知预测、归类未来。

前面我们介绍的k-近邻算法也可以完成很多分类任务,但是他的缺点就是含义不清,说不清数据的内在逻辑,而决策树则很好地解决了这个问题,他十分好理解。

从存储的角度来说,决策树解放了存储训练集的空间,毕竟与一棵树的存储空间相比,训练集的存储需求空间太大了。

决策树的构建一、KD3的想法与实现下面我们就要来解决一个很重要的问题:如何构造一棵决策树?这涉及十分有趣的细节。

先说说构造的基本步骤,一般来说,决策树的构造主要由两个阶段组成:第一阶段,生成树阶段。

选取部分受训数据建立决策树,决策树是按广度优先建立直到每个叶节点包括相同的类标记为止。

第二阶段,决策树修剪阶段。

用剩余数据检验决策树,如果所建立的决策树不能正确回答所研究的问题,我们要对决策树进行修剪直到建立一棵正确的决策树。

这样在决策树每个内部节点处进行属性值的比较,在叶节点得到结论。

从根节点到叶节点的一条路径就对应着一条规则,整棵决策树就对应着一组表达式规则。

问题:我们如何确定起决定作用的划分变量。

我还是用鸢尾花的例子来说这个问题思考的必要性。

使用不同的思考方式,我们不难发现下面的决策树也是可以把鸢尾花分成3类的。

为了找到决定性特征,划分出最佳结果,我们必须认真评估每个特征。

通常划分的办法为信息增益和基尼不纯指数,对应的算法为C4.5和CART。

关于信息增益和熵的定义烦请参阅百度百科,这里不再赘述。

直接给出计算熵与信息增益的R代码:1、计算给定数据集的熵calcent<-function(data){nument<-length(data[,1])key<-rep("a",nument)for(i in 1:nument)key[i]<-data[i,length(data)]ent<-0prob<-table(key)/numentfor(i in 1:length(prob))ent=ent-prob[i]*log(prob[i],2)return(ent)}我们这里把最后一列作为衡量熵的指标,例如数据集mudat(自己定义的)> mudatx y z1 1 1 y2 1 1 y3 1 0 n4 0 1 n5 0 1 n计算熵> calcent(mudat)10.9709506熵越高,混合的数据也越多。

得到熵之后,我们就可以按照获取最大信息增益的方法划分数据集2、按照给定特征划分数据集为了简单起见,我们仅考虑标称数据(对于非标称数据,我们采用划分的办法把它们化成标称的即可)。

R代码:split<-function(data,variable,value){result<-data.frame()for(i in 1:length(data[,1])){if(data[i,variable]==value)result<-rbind(result,data[i,-variable])}return(result)}这里要求输入的变量为:数据集,划分特征变量的序号,划分值。

我们以前面定义的mudat为例,以“X”作为划分变量,划分得到的数据集为:> split(mudat,1,1)y z1 1 y2 1 y3 0 n> split(mudat,1,0)y z4 1 n5 1 n3、选择最佳划分(基于熵增益)choose<-function(data){numvariable<-length(data[1,])-1baseent<-calcent(data)bestinfogain<-0bestvariable<-0infogain<-0featlist<-c()uniquevals<-c()for(i in1:numvariable){featlist<-data[,i]uniquevals<-unique(featlist)newent<-0for(jin 1:length(uniquevals)){subset<-split(data,i,uniquevals[j])prob<-length(subset[,1])/length(data[,1]) newent<-newent+prob*calcent(subset)}infogain<-baseent-newentif(infogain>bestinfogain){bestinfogain<-infogainbestvariable<-i}}return(bestvariable)}函数choose包含三个部分,第一部分:求出一个分类的各种标签;第二部分:计算每一次划分的信息熵;第三部分:计算最好的信息增益,并返回分类编号。

我们以上面的简易例子mudat为例,计算划分,有:> choose(mudat)[1] 1也就是告诉我们,将第一个变量值为1的分一类,变量值为0的分为另一类,得到的划分是最好的。

4、递归构建决策树我们以脊椎动物数据集为例,这个例子来自《数据挖掘导论》,具体数据集已上传至百度云盘(点击可下载)我们先忽略建树细节,由于数据变量并不大,我们手动建一棵树先。

>animals<-read.csv("D:/R/data/animals.csv")>choose(animals)[1] 1这里变量1代表names,当然是一个很好的分类,但是意义就不大了,我们暂时的解决方案是删掉名字这一栏,继续做有:>choose(animals)[1] 4我们继续重复这个步骤,直至choose分类为0或者没办法分类(比如sometimes live in water的动物)为止。

得到最终分类树。

给出分类逻辑图(遵循多数投票法):至于最后的建树画图涉及R的绘图包ggplot,这里不再给出细节。

下面我们使用著名数据集——隐形眼镜数据集,利用上述的想法实现一下决策树预测隐形眼镜类型。

这个例子来自《机器学习实战》,具体数据集已上传至百度云盘(点击可下载)。

下面是一个十分简陋的建树程序(用R实现的),为了叙述方便,我们给隐形眼镜数据名称加上标称:age,prescript,astigmatic,tear rate.建树的R程序简要给出如下:bulidtree<-function(data){if(choose(data)==0)print("finish")else{print(choose(data))level<-unique(data[,choose(data)])if(level==1)print("finish")elsefor(i in1:length(level)){data1<-split(data,choose(data),level[i])if(length(data1)==1)print("finish")elsebulidtree(data1)}}}运行结果:>bulidtree(lenses)[1] 4[1]"finish"[1] 3[1] 1[1]"finish"[1]"finish"[1] 1[1]"finish"[1]"finish"[1] 2[1]"finish"[1] 1[1]"finish"[1]"finish"[1]"finish"这棵树的解读有些麻烦,因为我们没有打印标签,(程序的简陋总会带来这样,那样的问题,欢迎帮忙完善),人工解读一下:首先利用4(tear rate)的特征reduce,normal将数据集划分为nolenses(至此完全分类),normal的情况下,根据3(astigmatic)的特征no,yes分数据集(划分顺序与因子在数据表的出现顺序有关),no这条分支上选择1(age)的特征pre,young,presbyopic划分,前两个得到结果soft,最后一个利用剩下的一个特征划分完结(这里,由于split函数每次调用时,都删掉了一个特征,所以这里的1是实际第二个变量,这个在删除变量是靠前的情形时要注意),yes这条分支使用第2个变量prescript作为特征划分my ope划分完结,hyper利用age进一步划分,得到最终分类。

画图说明逻辑:这里并没有进行剪枝,可能出现过拟合情形,我们暂不考虑剪枝的问题,下面的问题我想是更加迫切需要解决的:在选择根节点和各内部节点中的分支属性时,采用信息增益作为评价标准。

信息增益的缺点是倾向于选择取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息。

那么如何处理这些问题,C4.5算法不失为一个较好的解决方案。

二、C4.5算法C4.5算法描述:(1) 创建根节点N;(2) IF T都属于同一类C,则返回N为叶节点,标记为类C;(3) IF T_attributelist为空或T中所剩的样本数少于某给定值则返回N为叶节点,标记为T中出现最多的类;(4) FOR each T_attributelist中的属性计算信息增益率information gain ratio;(5) N的测试属性test_attribute=T_attributelist中具有最高信息增益率的属性;(6) IF测试属性为连续型则找到该属性的分割阀值;(7) FOR each 由节点N长出的新叶节点{IF 该叶节点对应的样本子集T’为空则分裂该叶节点生成一个新叶节点,将其标记为T中出现最多的类;ELSE在该叶节点上执行C4.5formtree(T’,T’_attributelist),对它继续分裂;}(8) 计算每个节点的分类错误,进行树剪枝。

相关文档
最新文档