网站一定也做数据库吗中核二三公司是国企还是央企
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:22
当前位置: 首页 > news >正文
网站一定也做数据库吗,中核二三公司是国企还是央企,专业小程序开发,宁夏城乡住房建设厅网站目录 关于1 基本流程2 划分属性的选择2.1 方法一#xff1a;依据信息增益选择2.2 方法二#xff1a;依据增益率选择2.3 方法三#xff1a;依据基尼指数选择 3 剪枝处理#xff1a;防止过拟合3.1 预剪枝3.2 后剪枝 4 连续与缺失值4.1 连续值处理4.2 缺失值处理 5 多变量决策… 目录 关于1 基本流程2 划分属性的选择2.1 方法一依据信息增益选择2.2 方法二依据增益率选择2.3 方法三依据基尼指数选择 3 剪枝处理防止过拟合3.1 预剪枝3.2 后剪枝 4 连续与缺失值4.1 连续值处理4.2 缺失值处理 5 多变量决策树X 案例代码X.1 分类任务X.1.1 源码X.1.2 数据集 鸢尾花数据集X.1.3 模型效果 X.2 回归任务X.2.1 源码X.2.2 数据集糖尿病数据集X.2.3 模型效果 关于
本文是基于西瓜书第四章的学习记录。讲解决策树的重要概念划分属性的选择、剪枝处理、连续值和缺失值的处理、多变量决策树等、核心流程附Python分类和回归实现代码。西瓜书电子版百度网盘分享链接
1 基本流程
决策树是一种模仿人类决策过程的机器学习算法它通过树状结构来进行决策。
决策树结构 根节点每个结点包含的样本集合根据属性测试的结果被划分到子结点中根结点包含样本全集。内部节点代表属性测试。叶节点对应决策结果。 决策过程从根节点开始通过一系列的测试属性值的判断到达叶节点完成决策。算法流程 决策树的生成是一个递归过程有三种情形会导致递归返回 当前结点包含的样本全属于同一类别无需划分当前属性集为空或是所有样本在所有属性上取值相同无法划分当前结点包含的样本集合为空不能划分
2 划分属性的选择
在决策树学习中选择最优的划分属性是关键这有助于提高样本集合的纯度即分支结点所包含的样本尽可能属于同一类别。下面是三种常见的划分属性选择方法
2.1 方法一依据信息增益选择 简述 首先计算数据集D的信息熵然后对于每个属性a考虑将其作为划分属性划分后得到的各个子集计算各子集的信息熵然后利用下面的信息增益公式计算依据属性a划分的信息增益最后选择增益最大的属性进行划分然后进行下一轮选择如果不结束。 重要概念 信息熵衡量样本集合D纯度的指标计算公式为 E n t ( D ) − ∑ k 1 ∣ D ∣ p k log 2 p k Ent(D) -\sum_{k1}^{|D|} p_k \log_2 p_k Ent(D)−k1∑∣D∣pklog2pk其中 p k pk pk是第k类样本所占的比例。 E n t ( D ) Ent(D) Ent(D)值越小纯度越高。信息增益使用属性a进行划分所获得的纯度提升计算公式为 G a i n ( D , a ) E n t ( D ) − ∑ v 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D, a) Ent(D) - \sum{v1}^{V} \frac{|D_v|}{|D|} Ent(D_v) Gain(D,a)Ent(D)−v1∑V∣D∣∣Dv∣Ent(Dv)其中 D v Dv Dv是在属性a上取值为v的样本子集。ID3算法以信息增益为准则选择划分属性是决策树学习的经典算法之一。 案例
2.2 方法二依据增益率选择
简述方法一的信息增益准则对可取值数目较多的属性有所偏好所以考虑不直接使用信息增益而是使用“增益率”来选择最优划分属性。其实就在每个属性的信息增益基础上除以 I V ( a ) IV(a) IV(a)得到的结果就是增益率基于此选择但是增益率又会偏好可取值数目少的属性所以先从候选划分属性中找出信息增益高于平均水平的属性再从中选择增益率最高的。重要概念 增益率减少信息增益对可取值数目较多属性的偏好计算公式为 G a i n R a t i o ( D , a ) G a i n ( D , a ) I V ( a ) GainRatio(D, a) \frac{Gain(D, a)}{IV(a)} GainRatio(D,a)IV(a)Gain(D,a)其中 I V ( a ) IV(a) IV(a)是属性a的固有值计算公式如下。 I V ( a ) IV(a) IV(a)这是属性a的固有值a的可能取值越多该值越大起计算公式如下 I V ( a ) − ∑ v 1 V ∣ D v ∣ ∣ D ∣ log 2 ∣ D v ∣ ∣ D ∣ \mathrm{IV}(a)-\sum{v1}^V\frac{|D^v|}{|D|}\log2\frac{|D^v|}{|D|} IV(a)−v1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣C4.5算法使用增益率选择最优划分属性是ID3算法的改进版。
2.3 方法三依据基尼指数选择
简述流程和方法一一致但是选择的指标是基尼指数重要概念 基尼指数度量数据集纯度的指标反映了从数据集D 中随机抽取两个样本其类别标记不一致的概率.因此,Gini(D)越小则数据集D 的纯度越高计算公式为 G i n i ( D ) 1 − ∑ k 1 ∣ D ∣ p k 2 Gini(D) 1 - \sum{k1}^{|D|} pk^2 Gini(D)1−k1∑∣D∣pk2 属性a划分后的基尼指数计算公式为 G i n i I n d e x ( D , a ) ∑ v 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) . \mathrm{GiniIndex}(D,a)\sum{v1}^V\frac{|D^v|}{|D|}\mathrm{Gini}(D^v) . GiniIndex(D,a)v1∑V∣D∣∣Dv∣Gini(Dv).CART算法使用基尼指数选择划分属性适用于分类和回归任务。
3 剪枝处理防止过拟合
剪枝是决策树学习中对付过拟合的主要手段通过剪枝可以降低过拟合的风险。剪枝策略有预剪枝和后剪枝两种
3.1 预剪枝 预剪枝在生成过程中对每个结点在划分前先进行估计若当前结点的划分不能带来决策树泛化性能提升则停止划分优点这不仅降低了过拟合的风险还显著减少了决策树的训练时间开销和测试时间开销缺点预剪枝基于“贪心”本质禁止这些分支展开给预剪枝决策树带来了欠拟合的风险决策树桩只有一层划分的决策树
3.2 后剪枝 后剪枝先从训练集生成一棵完整的决策树然后自底向上地对非叶结点进行考察若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升则将该子树替换为叶结点。后剪枝决策树通常比预剪枝决策树保留了更多的分支.优点后剪枝决策树的欠拟合风险很小泛化性能往往优于预剪枝决策树缺点但后剪枝过程是在生成完全决策树之后进行的并且要自底向上地对树中的所有非叶结点进行逐一考察因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多.
4 连续与缺失值
4.1 连续值处理
必要性现实学习任务中常会遇到连续属性有必要讨论如何在决策树学习中使用连续属性.连续属性离散化使用二分法处理连续属性按照某个划分点的值将连续属性的值划分为两个子集选择最优的划分点以最大化信息增益。划分点的选择对于包含n个不同值的某个属性可以得到n-1个划分点根据划分点可以将取值范围划分为两个区间核心逻辑得到某个属性的划分点集合之后就可以按照信息增益的大小选择出最合适的划分点构造一个划分节点。连续数据划分点和离散数据的区别与离散属性不同若当前结点划分属性为连续属性该属性还可作为其后代结点的划分属性示例
4.2 缺失值处理
必要性一部分样本得属性缺少值直接丢弃会造成信息丢失要解决的问题 如何在属性值缺失的情况下进行划分属性选择给定划分属性——将前文的信息增益公式推广后执行类似流程。若样本在该属性上的值缺失,如何对样本进行划分——同时划分到子节点不过进行权重调整直观地看就是将同一个样本以不同的概率划分到不同的子节点去 权重调整对缺失值样本进行权重调整后进行划分确保模型能够从不完整样本中学习。
5 多变量决策树 背景 分类意味着找到分类边界决策树分类边界的特点由若干个与坐标轴平行的分段组成 优点可解释性强缺点需要很多段学习代价大 多变量决策树 优点能够实现斜划分使用属性的线性组合进行测试允许分类边界不是轴平行的简化模型复杂度。改变在非叶节点上实现斜划分不再是寻找一个最优划分属性而是试图建立一个合适的线性分类器
X 案例代码
X.1 分类任务
X.1.1 源码
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import confusion_matrix, accuracy_score, classification_report
import seaborn as sns# 1. 加载数据集
iris load_iris()
X, y iris.data, iris.target
print(此时Xy的数据类型为, type(X), type(y), \n)# 2. 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)
print(此时X_trainy_train的数据类型为, type(X_train), type(y_train), \n)
print(X_train的前10条数据展示)
print(pd.DataFrame(X_train).head(10).to_string(indexFalse, justifyleft), \n)# 3. 构建并训练决策树分类模型
model DecisionTreeClassifier(random_state42)
model.fit(X_train, y_train)# 4. 预测测试集上的目标变量
y_pred model.predict(X_test)# 5. 评估模型性能
accuracy accuracy_score(y_test, y_pred)
print(模型准确率, accuracy)print(分类报告)
print(classification_report(y_test, y_pred))# 6. 绘制混淆矩阵
conf_matrix confusion_matrix(y_test, y_pred)
plt.figure(figsize(8, 6))
sns.heatmap(conf_matrix, annotTrue, fmtd, cmapBlues, xticklabelsiris.target_names, yticklabelsiris.target_names)
plt.xlabel(Predicted Labels)
plt.ylabel(True Labels)
plt.title(Confusion Matrix for Iris Dataset)
plt.tight_layout()
plt.show()# 可选将结果保存到DataFrame中以便进一步分析
results pd.DataFrame({Actual: y_test,Predicted: y_pred
})
print(模型预测结果)
print(results.head())
X.1.2 数据集 鸢尾花数据集 鸢尾花数据集是机器学习领域中最著名的数据集之一常被用于分类算法的测试和演示。 概览 样本数量150个样本特征数量4个特征标签种类数量3个类别每个类别有50个样本 特征描述 萼片长度 (sepal length)花萼的长度单位为厘米。萼片宽度 (sepal width)花萼的宽度单位为厘米。花瓣长度 (petal length)花瓣的长度单位为厘米。花瓣宽度 (petal width)花瓣的宽度单位为厘米。 目标变量是鸢尾花的种类共有三种 Iris setosaIris versicolorIris virginica 使用 可以使用 sklearn.datasets.load_iris() 函数来加载这个数据集并查看其详细信息。
X.1.3 模型效果 X.2 回归任务
X.2.1 源码
import pandas as pd
from matplotlib import pyplot as plt
from sklearn import datasets
from sklearn.tree import DecisionTreeRegressor, export_text
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score# 加载糖尿病数据集
diabetes datasets.load_diabetes()# 提取特征和标签
X diabetes.data
y diabetes.target
print(此时Xy的数据类型为, type(X), type(y), \n)# 划分训练集和测试集
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)
print(此时X_trainy_train的数据类型为, type(X_train), type(y_train), \n)
print(X_train的前10条数据展示)
print(pd.DataFrame(X_train).head(10).to_string(indexFalse, justifyleft), \n)# 创建决策树回归模型
regressor DecisionTreeRegressor(random_state42)# 训练模型
regressor.fit(X_train, y_train)# 进行预测
y_pred regressor.predict(X_test)# 计算均方误差
mse mean_squared_error(y_test, y_pred)
r2 r2_score(y_test, y_pred)print(f均方误差(MSE): {mse})
print(f决定系数(R^2): {r2}, \n)# 查看决策树的结构
tree_rules export_text(regressor, feature_namesdiabetes.feature_names)
print(tree_rules)# 绘制实际值和预测值的折线图
plt.figure(figsize(12, 6))
plt.plot(y_test, labelActual, markero, colorblue)
plt.plot(y_pred, labelPredicted, markerx, colorred, linestyle–)
plt.title(Actual vs Predicted Values)
plt.xlabel(Sample Index)
plt.ylabel(Target Value)
plt.legend()
plt.tight_layout()
plt.show()
X.2.2 数据集糖尿病数据集 糖尿病数据集包含442名患者的10项生理特征目标是预测一年后疾病水平的定量测量值。这些特征经过了标准化处理使得每个特征的平均值为零标准差为1。 概览 样本数量442个样本特征数量10个特征目标变量1个目标变量一年后疾病水平的定量测量值 特征描述 年龄 (age)患者年龄已标准化性别 (sex)患者性别已标准化体质指数 (bmi)身体质量指数已标准化血压 (bp)平均动脉压已标准化S1血清测量值1已标准化S2血清测量值2已标准化S3血清测量值3已标准化S4血清测量值4已标准化S5血清测量值5已标准化S6血清测量值6已标准化 目标变量 一年后疾病水平的定量测量值这是模型需要预测的目标变量。 使用 可以使用 sklearn.datasets.load_diabetes() 函数来加载这个数据集并查看其详细信息。
X.2.3 模型效果
- 上一篇: 网站一般在哪里找烟台开发区建设业联合网站
- 下一篇: 网站一年得多少钱网络布局设计
相关文章
-
网站一般在哪里找烟台开发区建设业联合网站
网站一般在哪里找烟台开发区建设业联合网站
- 技术栈
- 2026年03月21日
-
网站一般用什么数据库wordpress实现登录注册
网站一般用什么数据库wordpress实现登录注册
- 技术栈
- 2026年03月21日
-
网站一般需要怎么推广自己做网站能否赚钱6
网站一般需要怎么推广自己做网站能否赚钱6
- 技术栈
- 2026年03月21日
-
网站一年得多少钱网络布局设计
网站一年得多少钱网络布局设计
- 技术栈
- 2026年03月21日
-
网站一直没收录为什么我自己做的网站百度不到
网站一直没收录为什么我自己做的网站百度不到
- 技术栈
- 2026年03月21日
-
网站一直没有收录做营销网站的企业
网站一直没有收录做营销网站的企业
- 技术栈
- 2026年03月21日
