当前位置: 首页 > news >正文

做360pc网站排名首页外贸网站建设需要注意什么

做360pc网站排名首页,外贸网站建设需要注意什么,建站技术分享,asp网站怎么搭建文章目录 一、决策树算法简介决策树的结构分类和回归树 (CART)决策树算法术语决策树算法直觉 二、属性选择度量信息增益熵 基尼指数计算分割基尼指数的步骤 三、决策树算法中的过度拟合避免过度拟合的方法 四、导入库和数据可视化探索性数据分析重命名列名查看数据集的总结信息… 文章目录 一、决策树算法简介决策树的结构分类和回归树 (CART)决策树算法术语决策树算法直觉 二、属性选择度量信息增益熵 基尼指数计算分割基尼指数的步骤 三、决策树算法中的过度拟合避免过度拟合的方法 四、导入库和数据可视化探索性数据分析重命名列名查看数据集的总结信息变量值的频率分布 五、处理特征向量和目标变量六、特征工程编码分类变量 七、使用基尼系数的决策树分类器比较训练集和测试集的准确性可视化决策树 八、使用熵的决策树分类器比较训练集和测试集的准确性可视化决策树 九、混淆矩阵十、分类报告十一、结果和结论 一、决策树算法简介 决策树算法是最流行的机器学习算法之一。它使用树状结构及其可能的组合来解决特定问题。它属于监督学习算法类可用于分类和回归任务。 决策树的结构 决策树是一种包含根节点、分支和叶节点的结构。每个内部节点表示对属性的测试每个分支表示测试的结果每个叶节点都包含一个类标签。树中最顶端的节点是根节点。 在实施决策树算法时我们做出了一些假设 整个训练集一开始被视为根。特征值需要是分类的。如果值是连续的则在构建模型之前将它们离散化。记录根据属性值递归分布。使用某种统计方法将属性放置为树的根或内部节点。 后面的部分将描述决策树的术语。 分类和回归树 (CART) 如今决策树算法以其现代名称 CART 而闻名代表分类和回归树。分类和回归树或 CART 是 Leo Breiman 引入的一个术语指的是可用于分类和回归建模问题的决策树算法。 CART 算法为其他重要算法如袋装决策树、随机森林和增强决策树提供了基础。在本文中我们将解决一个分类问题因此称该算法为决策树分类问题。 决策树算法术语 在决策树算法中有一个树状结构其中每个内部节点代表对属性的测试每个分支代表测试的结果每个叶节点代表类标签。从根节点到叶节点的路径代表分类规则。 以下是决策树算法中涉及的一些术语 根节点它代表整个总体或样本。这进一步分为两个或多个同质集。 分裂这是将节点分为两个或多个子节点的过程。 决策节点当子节点分裂成进一步的子节点时它被称为决策节点。 叶节点/终端节点不分裂的节点称为叶节点或终端节点。 修剪当我们删除决策节点的子节点时此过程称为修剪。它是分裂的反过程。 分支/子树整个树的子部分称为分支或子树。 父节点和子节点分为子节点的节点称为子节点的父节点子节点是父节点的子节点。 决策树算法直觉 对于数据集中的每个属性决策树算法形成一个节点。最重要的属性放在根节点。 为了评估手头的任务我们从根节点开始然后按照符合条件或决策的相应节点沿着树向下工作。 此过程持续到到达叶节点。叶节点包含决策树的预测或结果。 二、属性选择度量 决策树实施中的主要挑战是确定我们认为是根节点和每个级别的属性。此过程称为属性选择。有不同的属性选择度量来识别可被视为每个级别的根节点的属性。 有两种流行的属性选择度量信息增益和基尼指数。 信息增益 我们以信息增益为标准尝试估计每个属性所包含的信息。要理解信息增益的概念我们需要了解另一个概念即熵。 熵 熵衡量给定数据集中的杂质。在物理学和数学中熵是指随机变量 X \mathbf{X} X 的随机性或不确定性。在信息论中它指的是一组示例中的杂质。信息增益是熵的减少。信息增益根据给定的属性值计算数据集分割前的熵与分割后的平均熵之间的差值。 熵由以下公式表示 H ( X ) − ∑ i 1 c p i log ⁡ 2 ( p i ) \mathbf{H}(\mathbf{X}) - \sum_{i1}^{c} \mathbf{p_i} \log_2 (\mathbf{p_i}) H(X)−i1∑c​pi​log2​(pi​) 其中 c \mathbf{c} c 是类别的数量 p i \mathbf{p_i} pi​是与第 i 个类别相关的概率。 ID3迭代二分法决策树算法使用熵来计算信息增益。因此通过计算每个属性的熵度量的减少我们可以计算它们的信息增益。信息增益最高的属性被选为节点的分割属性。 基尼指数 CART分类和回归树使用的另一个属性选择度量是基尼指数。它使用基尼方法创建分割点。 基尼指数可以用下图表示 G i n i ( X ) 1 − ∑ i 1 c p i 2 \mathbf{Gini}(\mathbf{X}) 1 - \sum_{i1}^{c} \mathbf{p_i}^2 Gini(X)1−i1∑c​pi​2 其中 c \mathbf{c} c 是类别的数量 p i \mathbf{p_i} pi​是与第 i 个类别相关的概率。 基尼指数表示如果我们从总体中随机选择两个项目它们必须属于同一类如果总体是纯的则概率为 1。 基尼指数适用于分类目标变量“成功”或“失败”。它仅执行二元分割。基尼值越高同质性越高。CART分类和回归树使用基尼方法来创建二元分割。 计算分割基尼指数的步骤 使用成功和失败概率平方和公式 p 2 q 2 \mathbf{p}^2 \mathbf{q}^2 p2q2计算子节点的基尼指数。使用分割的每个节点的加权基尼分数计算分割的基尼指数。对于离散值属性选择具有最小基尼指数的子集作为分割属性。对于连续值属性策略是选择每对相邻值作为可能的分割点并选择基尼指数较小的点作为分割点。选择基尼指数最小的属性作为分裂属性。 三、决策树算法中的过度拟合 过度拟合是构建决策树模型时的一个实际问题。当算法继续深入以减少训练集误差但导致测试集误差增加时就会考虑过度拟合问题。因此我们模型的预测准确性会下降。这通常发生在我们由于数据中的异常值和不规则性而构建许多分支时。 避免过度拟合的方法 可用于避免过度拟合的两种方法如下 预修剪在预修剪中我们会提前停止树的构建。如果节点的优度测量低于阈值我们宁愿不拆分节点。但很难选择合适的停止点。 后修剪在后修剪中我们深入树的深处以构建完整的树。如果树显示出过度拟合问题则修剪将作为后修剪步骤进行。我们使用交叉验证数据来检查修剪的效果。使用交叉验证数据我们测试扩展节点是否会导致改进。如果它显示出改进那么我们可以继续扩展该节点。但如果它显示准确度降低则不应扩展它。因此应将节点转换为叶节点。 四、导入库和数据可视化 在Python环境中导入必要的库以进行数据分析和可视化。 import numpy as np # 线性代数 import pandas as pd # 数据处理CSV文件输入输出例如 pd.read_csv import matplotlib.pyplot as plt # 数据可视化 import seaborn as sns # 统计数据可视化 %matplotlib inline处理警告信息以保持输出的整洁 import warnings warnings.filterwarnings(ignore)导入数据集 data ./car_evaluation.csv df pd.read_csv(data, headerNone)探索性数据分析 对数据集进行初步探索以获得数据的基本信息。 查看数据集的维度 df.shape # (1728, 7)数据集包含1728个实例和7个变量。 查看数据集的前5行 df.head()输出结果为 重命名列名 数据集当前的列名为0, 1, 2等。我们需要为这些列指定有意义的名称 col_names [buying, maint, doors, persons, lug_boot, safety, class] df.columns col_names再次查看数据集的前5行以确认列名已正确更新 df.head()输出结果为 查看数据集的总结信息 df.info()输出结果为 变量值的频率分布 for col in col_names:print(df[col].value_counts())输出结果显示各个分类变量的频数分布如下 buying 和 maint每个类别vhigh, high, med, low都有432个实例。doors类别为2、3、4和5more每个类别都有432个实例。persons类别为2、4和more每个类别有576个实例。lug_boot类别为small、med和big每个类别有576个实例。safety类别为low、med和high每个类别有576个实例。class类别为unacc1210个实例、acc384个实例、good69个实例和vgood65个实例。 五、处理特征向量和目标变量 将特征向量X和目标变量y从数据集中分离 X df.drop([class], axis1) y df[class]将数据集划分为训练集和测试集 使用train_test_split将特征向量和目标变量划分为训练集和测试集 from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test train_test_split(X, y, test_size0.33, random_state42)查看训练集和测试集的形状 X_train.shape, X_test.shape # ((1157, 6), (571, 6))六、特征工程 特征工程是将原始数据转换为有用特征的过程这些特征有助于我们更好地理解模型并提高其预测能力。我将对不同类型的变量进行特征工程。 首先我将再次检查变量的数据类型。 # 检查 X_train 中变量的数据类型 X_train.dtypes编码分类变量 # 导入类别编码器 import category_encoders as ce# 使用序数编码对变量进行编码 encoder ce.OrdinalEncoder(cols[buying, maint, doors, persons, lug_boot, safety]) X_train encoder.fit_transform(X_train) X_test encoder.transform(X_test)X_train.head()现在已经准备好用于模型构建的训练集和测试集。 七、使用基尼系数的决策树分类器 # 导入 DecisionTreeClassifier from sklearn.tree import DecisionTreeClassifier# 使用标准基尼系数实例化 DecisionTreeClassifier 模型 clf_gini DecisionTreeClassifier(criteriongini, max_depth3, random_state0)# 训练模型 clf_gini.fit(X_train, y_train) # 预测测试集结果 y_pred_gini clf_gini.predict(X_test)# 检查使用基尼系数的准确性评分 from sklearn.metrics import accuracy_score print(Model accuracy score with criterion gini index: {0:0.4f}.format(accuracy_score(y_test, y_pred_gini)))# Model accuracy score with criterion gini index: 0.8021这里y_test 是测试集中真实的类别标签 y_pred_gini是预测的类别标签。 比较训练集和测试集的准确性 y_pred_train_gini clf_gini.predict(X_train) print(Training-set accuracy score: {0:0.4f}.format(accuracy_score(y_train, y_pred_train_gini)))# Training-set accuracy score: 0.7865检查是否存在过拟合或欠拟合 # 打印训练集和测试集的得分 print(Training set score: {:.4f}.format(clf_gini.score(X_train, y_train))) print(Test set score: {:.4f}.format(clf_gini.score(X_test, y_test))) Training set score: 0.7865 Test set score: 0.8021这里训练集准确度得分为 0.7865而测试集准确度得分为 0.8021。这两个值相当。因此没有过度拟合的迹象。 可视化决策树 plt.figure(figsize(12,8)) from sklearn import tree tree.plot_tree(clf_gini.fit(X_train, y_train))八、使用熵的决策树分类器 # 使用熵标准实例化 DecisionTreeClassifier 模型 clf_en DecisionTreeClassifier(criterionentropy, max_depth3, random_state0)# 训练模型 clf_en.fit(X_train, y_train) # 预测测试集结果 y_pred_en clf_en.predict(X_test)# 检查使用熵标准的准确性评分 from sklearn.metrics import accuracy_score print(Model accuracy score with criterion entropy: {0:0.4f}.format(accuracy_score(y_test, y_pred_en)))# Model accuracy score with criterion entropy: 0.8021比较训练集和测试集的准确性 y_pred_train_en clf_en.predict(X_train) print(Training-set accuracy score: {0:0.4f}.format(accuracy_score(y_train, y_pred_train_en)))# Training-set accuracy score: 0.7865检查是否存在过拟合或欠拟合 # 打印训练集和测试集的得分 print(Training set score: {:.4f}.format(clf_en.score(X_train, y_train))) print(Test set score: {:.4f}.format(clf_en.score(X_test, y_test))) Training set score: 0.7865 Test set score: 0.8021可以看到训练集和测试集得分与使用基尼系数的情况相同。训练集准确度得分为 0.7865而测试集准确度得分为 0.8021。这两个值相当。因此没有过度拟合的迹象。 可视化决策树 plt.figure(figsize(12,8)) from sklearn import tree tree.plot_tree(clf_en.fit(X_train, y_train))九、混淆矩阵 混淆矩阵是一种总结分类算法性能的工具。混淆矩阵将为我们清晰地展示分类模型的性能以及模型产生的错误类型。它为我们提供了按每个类别细分的正确和错误预测的摘要。摘要以表格形式表示。 在评估分类模型性能时可能出现四种类型的结果。这四种结果如下所述 真阳性 (TP) – 当我们预测观察结果属于某个类别并且观察结果实际上属于该类别时就会出现真阳性。真阴性 (TN) – 当我们预测观察结果不属于某个类别并且观察结果实际上不属于该类别时就会出现真阴性。假阳性 (FP) – 当我们预测某个观察结果属于某个类别但该观察结果实际上并不属于该类别时就会出现假阳性。这种类型的错误称为 I 类错误。假阴性 (FN) – 当我们预测某个观察结果不属于某个类别但该观察结果实际上属于该类别时就会出现假阴性。这是一种非常严重的错误称为 II 类错误。 下面给出的混淆矩阵总结了这四种结果。 # 打印混淆矩阵并将其分成四部分 from sklearn.metrics import confusion_matrix cm confusion_matrix(y_test, y_pred_en) print(Confusion matrix\n\n, cm)# [[ 73 0 56 0]# [ 20 0 0 0]# [ 12 0 385 0]# [ 25 0 0 0]]十、分类报告 分类报告是评估分类模型性能的另一种方法。它显示模型的准确率、召回率、f1 和支持率分数。我们可以按如下方式打印分类报告 from sklearn.metrics import classification_report print(classification_report(y_test, y_pred_en))我们可以看到模型的分类报告显示了四个类别acc、good、unacc、vgood中每个类别的准确率、召回率、f1-score 和支持率。 在这种情况下类 “good” 和 “vgood” 的准确率、召回率和 f1-score 都为 0。这意味着模型无法正确预测这些类别。这可能是由于类别样本不均衡导致的。类 “unacc” 的准确率和召回率都很高表明模型在预测这个类别时表现得相对较好。 十一、结果和结论 在这个项目中我建立了一个决策树分类器模型来预测汽车的安全性。模型分为两种一种使用标准“基尼指数”另一种使用标准“熵”。两种模型的性能都非常出色准确率均为 0.8021。 标准“基尼指数”模型 在使用“基尼指数”标准的模型中训练集的准确率得分为 0.7865而测试集的准确率得分为 0.8021。这两个值相当接近没有过度拟合的迹象。 标准“熵”模型 类似地在使用“熵”标准的模型中训练集的准确度得分为 0.7865而测试集的准确度得分为 0.8021。这与使用“基尼指数”标准的模型结果相同因此也没有过度拟合的迹象。 数据集大小的影响 在这两种情况下训练集和测试集的准确度得分相同这可能是由于数据集较小导致的结果。 混淆矩阵和分类报告 模型的混淆矩阵和分类报告显示了非常好的性能。以下是模型的混淆矩阵 # [[ 73 0 56 0]# [ 20 0 0 0]# [ 12 0 385 0]# [ 25 0 0 0]]从混淆矩阵中可以看到 对于类别 a c c \mathbf{acc} acc模型正确预测了 73 个样本但有 56 个样本被错误预测为 u n a c c \mathbf{unacc} unacc。对于类别 g o o d \mathbf{good} good没有样本被正确预测所有样本被错误预测为其他类别。对于类别 u n a c c \mathbf{unacc} unacc模型正确预测了 385 个样本但有 12 个样本被错误预测为 a c c \mathbf{acc} acc。对于类别 v g o o d \mathbf{vgood} vgood没有样本被正确预测所有样本被错误预测为 a c c \mathbf{acc} acc。 这些结果表明模型在预测某些类别时有较高的准确性但在某些类别上有改进空间。 总结 总体而言本项目中的决策树分类器在使用“基尼指数”和“熵”标准时均表现出了良好的性能。尽管数据集较小可能影响了模型的泛化能力但模型的准确率和混淆矩阵表明其具有较好的分类能力。未来的工作可以考虑扩大数据集规模以进一步提升模型的性能和泛化能力。 参考Decision-Tree Classifier Tutorial 中文版代码放在我的github欢迎follow
http://www.dnsts.com.cn/news/252203.html

相关文章:

  • 房屋设计软件app自己设计画图乐陵seo公司
  • wordpress资源站主题wordpress集成ckplayer
  • 求推荐专业的网站建设开发江苏网站建设价格
  • 高端行业网站建设中国的网络营销公司
  • 云南南网站开发wordpress 3.7.1
  • 南京市玄武区建设局网站seo推广专员
  • 电器网站制作价格诸暨有哪些好网站制作公司
  • 如何制作自己的网站链接视频wordpress快速建站视频教程
  • 平阳网站建设江苏赛华建设监理有限公司网站
  • 专注高端网站设计网站怎么做快照
  • 织梦电影网站源码施工企业的主要负责人是本单位的
  • 监察部门网站建设方案wordpress 插件目录
  • 建行购物网站wordpress 5.0编辑器很难用
  • 黑蜘蛛网站引领网站
  • 怎么做类似淘宝的网站闭站保护对网站影响
  • 乔拓云智能建站免费注册网页制作实训个人总结
  • 网站开发与维护招聘阿里云登录
  • 17网站一起做网店好不好阿里云个人不能开网站
  • 绍兴市越城区建设局网站百度收录刷排名
  • 上海网站建设空间app软件开发公司
  • 广州站是不是广州火车站wordpress以前版本
  • 做网站好用的软件工作牌
  • 网站制作用的软件有哪些wordpress数据库修改登陆密码
  • 网站开发直播软件搜索热度和搜索人气
  • 网站主机租用多少钱淘宝客户自己做网站怎么做
  • 网站开发待遇福鼎网站建设培训
  • 湖南众诚建设网站东莞网站建设网站推广价钱
  • 厦门做网站的公司有哪些google国际版
  • 网站开发使用什么工具奉新网站制作
  • 网站关键词可以做几个3m网站源码