机器学习第四章决策树
4.1 基本流程
分而治之
递归返回:
-
当前结点包含的样本全属于同一类别,无需划分
-
当前属性集为空,或是所有样本在所有属性上取值相同,无法划分
(当前结点为叶节点,设置为所含样本最多的类别)
-
当前结点包含的样本集为空,不能划分
(当前结点设为叶结点,类别设定为其父节点所含样本最多的类别)
4.2 划分选择
信息熵
信息增益
增益率
基尼指数
4.3 剪枝处理
预剪枝
后剪枝
一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但后剪枝过程是在生成完全决策树之后进行的.并且要自底向上地对树中的所有非叶结点进行逐一考察.因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多
随机森林不需要进行剪枝处理
随机森林不需要像传统决策树那样进行剪枝。这是因为随机森林是通过聚合多个决策树构建的,每个决策树都是使用特征和训练样本的随机子集构建的。特征选择和引导训练数据的随机性有助于减少过度拟合并提高泛化性能,而无需修剪。但是,您仍然可以调整随机森林模型的超参数,例如单个树的最大深度,以控制模型的复杂度并避免过度拟合。
决策树代码
# importing the necessary libraries
from sklearn.datasets import load_iris
from sklearn.tree import decisiontreeclassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# loading the iris dataset
iris = load_iris()
# splitting the dataset into training and testing sets
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=0)
# creating the decision tree classifier
clf = decisiontreeclassifier()
# fitting the classifier to the training data
clf.fit(x_train, y_train)
# predicting on the testing data
y_pred = clf.predict(x_test)
# calculating the accuracy of the classifier
accuracy = accuracy_score(y_test, y_pred)
print("accuracy:", accuracy)
发表评论