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

网站建设域名什么意思网络公司最好的是哪个

网站建设域名什么意思,网络公司最好的是哪个,404网站怎么打开,专业的网站建设公司在机器学习的浩瀚星空中#xff0c;决策树作为一颗璀璨的星辰#xff0c;以其直观易懂、解释性强以及高效处理分类与回归任务的能力#xff0c;赢得了众多数据科学家与工程师的青睐。随着大数据时代的到来#xff0c;如何从海量数据中提炼出有价值的信息#xff0c;构建出…在机器学习的浩瀚星空中决策树作为一颗璀璨的星辰以其直观易懂、解释性强以及高效处理分类与回归任务的能力赢得了众多数据科学家与工程师的青睐。随着大数据时代的到来如何从海量数据中提炼出有价值的信息构建出既准确又可靠的预测模型成为了机器学习领域不断探索的热点。而决策树作为这一探索旅程中的重要工具其背后的超参数调整与优化策略更是直接关系到模型性能的优劣。 【第二篇章】的开启我们聚焦于“优秀的机器学习策略”旨在深入挖掘那些能够引领模型性能飞跃的关键要素。本篇章中我们将目光聚焦于决策树特别是其超参数的精妙调控这不仅是对模型内在机制的深刻理解更是向机器学习高峰攀登的一次重要尝试。期望读者能够深刻理解决策树背后的逻辑与智慧掌握超参数调整的艺术从而在机器学习的实践中更加游刃有余创造出更加精准、高效的预测模型。 调整决策树超参树 超参数不同于参数。在机器学习中模型被调整时参数也被调整。例如线性回归和逻辑回归中的权重就是构建阶段为了最小化误差而调整的参数。相比之下超参数是在构建阶段之前选择的如未选择则使用默认值。 决策树回归器 毛主席说过没有调研就没有发言权所以了解超参数的最佳途径就是实验。 尽管有关于超参数选择范围的理论但结果往往胜过理论。不同的数据集需要不同的超参数值才能获得改进。在选择超参数之前先通过使用DecisionTreeRegressor和cross_val_score找到一个基准评分具体步骤如下 import pandas as pd df_bikes pd.read_csv(bike_rentals_cleaned.csv) # 将数据集中的特征X和目标变量y分开。X_bikes包含除最后一列外的所有列y_bikes包含最后一列 X_bikes df_bikes.iloc[:,:-1] y_bikes df_bikes.iloc[:,-1] # 从sklearn.tree导入DecisionTreeRegressor类 from sklearn.tree import DecisionTreeRegressor # 从sklearn.model_selection导入cross_val_score函数用于评估交叉验证的分数 from sklearn.model_selection import cross_val_score # 初始化DecisionTreeRegressor对象设置随机种子为2以确保结果可复现 reg DecisionTreeRegressor(random_state2) # 使用cross_val_score函数对DecisionTreeRegressor进行交叉验证使用均方误差作为评分指标cv5表示5折交叉验证 # 注意scoringneg_mean_squared_error表示返回的是负均方误差因为sklearn的某些评分函数习惯返回最小化指标 scores cross_val_score(reg, X_bikes, y_bikes, scoringneg_mean_squared_error, cv5) # 由于返回的评分是负均方误差因此取负号并开方得到RMSE均方根误差 rmse np.sqrt(-scores) # 显示RMSE的平均值保留两位小数 print(RMSE mean: %0.2f % (rmse.mean()))上述代码执行结果如下 RMSE mean:1233.36 均方根误差为1233.36这比之前线性回归得到的972.06和XGBoost得到的887.31更糟。 接下来分析模型是否因为方差太大而过拟合数据。 这个问题可以通过观察决策树在训练集上预测的表现来解决。在对测试集进行预测之前以下代码检查训练集的误差率 from sklearn.linear_model import LinearRegression X_train, X_test, y_train, y_test train_test_split(X_bikes, y_bikes, random_state2)# 初始化DecisionTreeRegressor对象。如果不指定参数则使用默认参数。 reg DecisionTreeRegressor() # 使用训练集X_train和y_train来拟合训练DecisionTreeRegressor模型。 # 这意味着模型将学习如何从X_train的特征中预测y_train的值。 reg.fit(X_train, y_train) # 使用训练好的模型对训练集X_train进行预测得到预测值y_pred。 # 这一步通常用于评估模型在训练数据上的表现但需要注意的是过高的训练精度可能表明过拟合。 y_pred reg.predict(X_train) # 从sklearn.metrics导入mean_squared_error函数用于计算预测值和实际值之间的均方误差MSE。 from sklearn.metrics import mean_squared_error # 计算训练集上预测值y_pred和实际值y_train之间的均方误差MSE。 # MSE是衡量模型预测精度的一种常用指标值越小表示模型预测越准确。 reg_mse mean_squared_error(y_train, y_pred) # 计算均方根误差RMSE它是MSE的平方根。 # RMSE提供了与原始数据相同单位的误差度量便于理解模型性能。 # 类似于MSERMSE的值越小表示模型预测越准确。 reg_rmse np.sqrt(reg_mse) # 包含了模型在训练集上的RMSE值是衡量模型预测性能的一个重要指标。 reg_rmse结果为0.0 RMSE为0.0意味着该模型完美地拟合了每个数据点 结合1233.36的交叉验证误差这个完美的评分表明决策树对数据进行了高方差的过拟合。训练集拟合完美但测试集表现不佳。我们有了调查研究下面引入本篇的主题“超参数”。 一般超参数 max_depth 定义 max_depth 指的是决策树的最大深度即树中从根节点到最远叶子节点的最长路径上的节点数。通过限制树的最大深度我们可以控制模型的复杂度从而避免过拟合overfitting现象。 使用方法 在使用决策树模型时可以通过设置max_depth参数来限制树的最大深度。这个参数通常是一个整数表示从根节点到最远叶子节点的最长路径上的节点数。如果不设置max_depth在某些实现中可能是默认值None则决策树将一直生长直到满足其他停止条件如所有叶子节点都是纯的或者叶子节点包含的样本数少于某个阈值。 优点 设置max_depth可以有效地防止决策树模型过拟合。过拟合是指模型在训练数据上表现过于复杂以至于无法很好地泛化到新数据上。通过限制树的最大深度可以减少模型对训练数据中噪声和异常值的敏感度从而提高模型的泛化能力。较浅的决策树更容易被人类理解。每个节点都代表了一个简单的决策规则这使得模型的决策过程更加透明和可解释。这对于需要高度可解释性的应用场景如医疗诊断、金融风险评估等尤为重要。较深的决策树需要更多的计算资源来训练和预测。通过减小max_depth可以减少模型的复杂度和计算量从而降低训练和预测的时间成本。这对于处理大规模数据集或实时预测任务尤为重要。max_depth是一个灵活的参数可以根据具体问题和数据集的大小和复杂度进行调整。通过尝试不同的max_depth值可以找到最适合当前问题的模型配置。 GridSearchCV 定义 GridSearchCV是一种超参数优化技术用于搜索机器学习模型的超参数值的最佳组合。它是Python中scikit-learn库的一部分通过交叉验证来评估不同超参数组合下的模型性能从而找到最优的超参数设置。 使用方法 定义一个参数网格param_grid其中包含要搜索的超参数名称和对应的值列表。创建一个GridSearchCV对象将模型、参数网格、交叉验证的折数cv以及并行工作的数量n_jobs作为参数传递给GridSearchCV。使用训练数据拟合GridSearchCV对象它会自动搜索并评估所有超参数组合找到使模型性能最佳的超参数设置。使用最佳超参数设置下的模型进行预测。 优点 自动化程度高能够系统地搜索超参数空间。通过交叉验证评估模型性能结果更加可靠。 继续试验 # 导入GridSearchCV这是用于自动调参的工具可以在指定的参数范围内通过交叉验证来找到最优的模型参数 from sklearn.model_selection import GridSearchCV # 选择max_depth作为要优化的超参数并定义一个字典params其中包含max_depth可能取的值。None表示不限制深度其他是具体的深度值 params {max_depth:[None,2,3,4,6,8,10,20]} # 初始化回归模型DecisionTreeRegressor设置random_state为2以确保结果的可重复性。random_state用于控制随机数生成有助于复现结果 reg DecisionTreeRegressor(random_state2) # 初始化GridSearchCV对象grid_reg传入回归模型reg、要优化的参数params、评分指标scoring这里使用neg_mean_squared_error即负均方误差因为GridSearchCV默认寻找最大化评分的参数组合而均方误差越小越好所以使用其负值、交叉验证的折数cv为5即将数据集分成5份进行交叉验证、以及n_jobs-1表示使用所有可用的CPU核心进行并行计算 grid_reg GridSearchCV(reg, params, scoringneg_mean_squared_error, cv5, n_jobs-1) # 使用GridSearchCV对象grid_reg拟合训练数据X_train和y_train。这一步会进行交叉验证并尝试所有指定的max_depth值找到最优的参数组合 grid_reg.fit(X_train, y_train) # 从grid_reg中提取最佳参数组合 best_params grid_reg.best_params_ # 打印最佳的超参数组合 print(Best params:, best_params)上述代码输出结果如下Best params最佳参数: {‘max_depth’: 6} 由上面结果可知在训练集中max_depth值为6是最佳的交叉验证评分。 继续往下看训练得分 # 由于GridSearchCV使用neg_mean_squared_error作为评分指标这里需要先取负值因为GridSearchCV默认寻找最大化评分的参数组合 # 然后对结果开方因为均方误差MSE的平方根是均方根误差RMSE这是回归任务中常用的一个性能指标。 # grid_reg.best_score_存储了最佳参数组合下的评分即负均方误差所以我们需要先取反再开方得到RMSE。 best_score np.sqrt(-grid_reg.best_score_) # 打印出使用最佳参数组合在训练集上得到的评分这里实际上是均方根误差RMSE保留三位小数。 # 注意“Training score”实际上这个评分是在交叉验证过程中得到的是对模型泛化能力的一个估计 # 而不仅仅是训练集上的性能。 print(Training score: {:.3f}.format(best_score)) 训练评分为951.938 测试评分 # 从GridSearchCV对象中提取最佳模型。GridSearchCV在搜索过程中找到了最佳参数组合并训练了相应的模型。 # best_estimator_属性包含了这个最佳模型的实例。 best_model grid_reg.best_estimator_ # 使用最佳模型对测试集X_test进行预测得到预测结果y_pred。 # 这些预测结果是模型根据测试集特征所做出的目标值估计。 y_pred best_model.predict(X_test) # 从sklearn.metrics模块导入mean_squared_error函数该函数用于计算均方误差MSE。 # 导入计算MSE的函数并且稍后会用它来计算RMSE均方根误差。 from sklearn.metrics import mean_squared_error # 计算测试集上的均方根误差RMSE。首先使用mean_squared_error函数计算测试集真实值y_test和预测值y_pred之间的均方误差MSE。 # 然后通过取MSE的平方根得到RMSERMSE是回归任务中常用的一个性能指标它衡量了预测值与实际值之间的差异大小。 rmse_test mean_squared_error(y_test, y_pred)**0.5 # 打印出测试集上的RMSE值保留三位小数。这个值反映了模型在完全独立的测试集上的性能表现。 print(Test score: {:.3f}.format(rmse_test))测试评分为864.670方差较之前有所减少。 min_samples_leaf 定义 min_samples_leaf是决策树算法中的另一个重要超参数它限定了一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练样本否则分枝就不会发生。这个参数有助于防止模型过拟合提高模型的泛化能力。 影响 当min_samples_leaf设置得较小时决策树将更容易生成分支模型可能更加复杂容易过拟合。当min_samples_leaf设置得较大时决策树将更难生成分支模型将变得更加简单但可能欠拟合。 选择策略 通常需要根据数据集的大小和特征来选择合适的min_samples_leaf值。对于较小的数据集可以选择较小的值对于较大的数据集可以选择较大的值。可以通过实验和交叉验证来找到最佳的min_samples_leaf值使得模型在测试集上的表现最佳。 测试min_samples_leaf的一系列值需要进行与之前相同的过程。下面我们定义一个函数方面后续调用 # 定义一个名为grid_search的函数该函数接受两个参数params一个字典包含要优化的超参数及其候选值和reg一个回归树模型实例默认为DecisionTreeRegressor随机状态设置为2以确保结果可复现。 def grid_search(params, regDecisionTreeRegressor(random_state2)): # 实例化GridSearchCV对象grid_reg传入回归模型reg、要优化的参数params、评分指标scoring这里使用neg_mean_squared_error即负均方误差因为GridSearchCV默认寻找最大化评分的参数组合而均方误差越小越好所以使用其负值、交叉验证的折数cv为5、以及n_jobs-1表示使用所有可用的CPU核心进行并行计算。 grid_reg GridSearchCV(reg, params, scoringneg_mean_squared_error, cv5, n_jobs-1) # 使用GridSearchCV对象grid_reg拟合训练数据X_train和y_train。这一步会进行交叉验证并尝试所有指定的参数组合找到最优的参数组合。 grid_reg.fit(X_train, y_train) # 从grid_reg中提取最佳参数组合。 best_params grid_reg.best_params_ # 打印出最佳的超参数组合。 print(Best params:, best_params) # 计算最佳参数组合下的评分实际上是负均方误差的负值需要取反并开方得到均方根误差RMSE这里直接计算了RMSE作为训练集上的性能评估。 best_score np.sqrt(-grid_reg.best_score_) # 打印出训练集上的最佳性能评分均方根误差RMSE保留三位小数。 print(Training score: {:.3f}.format(best_score)) # 使用最佳模型即grid_reg内部训练好的最佳参数组合对应的模型对测试集X_test进行预测得到预测结果y_pred。 y_pred grid_reg.predict(X_test) # 计算测试集上的均方根误差RMSE即测试集真实值y_test和预测值y_pred之间的均方误差的平方根。 rmse_test mean_squared_error(y_test, y_pred)**0.5 # 打印出测试集上的RMSE值保留三位小数。这个值反映了模型在完全独立的测试集上的性能表现。 print(Test score: {:.3f}.format(rmse_test)) 需要注意的地方 选择超参数范围时了解构建模型的训练集大小是很必要的也就是行列数。 本次训练集548行调用之前定义好的函数传入参数 grid_search(params{min_samples_leaf:[1,2,4,6,8,10,20,30]})运行代码结果为 Best params: {‘min_samples_leaf’: 8} Training score: 896.083 Test score: 855.620 测试评分优于训练评分说明方差已经减小。 同时设置min_samples_leaf和max_depth代码如下 grid_search(params{max_depth:[None,2,3,4,6,8,10,20],min_samples_leaf:[1,2,4,6,8,10,20,30]})Best params: {‘max_depth’: 6, ‘min_samples_leaf’: 2} Training score: 870.396 Test score: 913.000 结果出人意料尽管训练评分已经提高但测试评分没有改善。 继续调整传入参数将min_samples_leaf限制为大于3的值 grid_search(params{max_depth:[5,6,7,8,9],min_samples_leaf:[3,5,7,9]})Best params: {‘max_depth’: 9, ‘min_samples_leaf’: 7} Training score: 888.905 Test score: 878.538 结果显示测试评分已经提高(越低越好)接下来将探讨决策树剩余的超参数但不进行测试一个好的模型太费时间了。 max_leaf_nodes 用途限制决策树的最大叶子节点数。当树达到最大叶子节点数时停止生长。 用法通过设置一个整数来指定最大叶子节点数。max_leaf_nodes10表示模型不能超过10个叶节点。 效果较小的值会导致较简单的树有助于防止过拟合但可能会增加欠拟合的风险。 max_features 用途在寻找最佳分割时要考虑的特征数量。这个参数在随机森林等集成方法中特别有用但在单个决策树中也可以用来减少计算量或引入随机性。 用法可以是整数、浮点数或字符串。整数表示要考虑的特征的绝对数量浮点数表示要考虑的特征比例例如0.5 表示考虑一半的特征字符串 “auto” “sqrt” log2表示自动选择特征数量“auto” 表示所有特征默认值“sqrt” 表示 sqrt(n_features)log2以2为底的特征总数的对数。 效果减少考虑的特征数量可以加速训练过程降低方差并可能通过引入随机性来减少过拟合。 min_samples_split 用途分割内部节点所需的最小样本数默认值为2因为两个样本可能会被分割各自成为单个叶节点如果限制增加到5则意味着对于具有5个或更少样本的节点不允许进一步分割。 用法设置一个整数。 效果增加这个值会导致树生长得更慢因为节点需要更多的样本来分裂。这有助于减少过拟合但也可能导致欠拟合。 splitter 用途用于在每个节点选择最佳分割的策略将splitter更改为random是防止过拟合和使树多样化的好方法。 用法可以是 “best” 或 “random”。“best” 表示选择最佳分割基于给定的标准而 “random” 表示随机选择分割。 效果“random” 可以增加模型的随机性有助于减少过拟合但可能会牺牲一些性能。 criterion 用途用于评估分割质量的函数。 用法对于分类问题通常是 “gini” 或 “entropy”对于回归问题通常是 “mse”均方误差或 “friedman_mse”弗里德曼均方误差。 效果不同的标准可能会导致不同的树结构和性能。 min_impurity_decrease 用途如果节点的分割导致杂质impurity大于或等于这个值默认值为0则节点将被分割。杂质是衡量每个节点预测纯度的指标。准确度为100%的树的杂质值为0。准确度为80%的树的杂质值为0.20。 用法设置一个浮点数。 效果这个参数用于控制树的生长较小的值允许树有更多的分支而较大的值则限制树的生长。 min_weight_fraction_leaf 用途一个叶子节点必须具有的总权重的最小比例用于加权样本。可以减少方差并防止过拟合。默认值为0.假设权重相等限制为1%表明500个样本中至少有5个应成为叶节点。 用法设置一个浮点数范围在 0 和 0.5 之间。 效果这个参数在处理加权样本时特别有用它允许用户指定叶子节点必须包含的最小样本权重比例。 ccp_alpha 用途成本复杂度剪枝的阈值。 用法设置一个非负浮点数。较大的值会导致更简单的树。 效果ccp_alpha 是一种新的剪枝策略称为成本复杂度剪枝Cost-Complexity Pruning。它通过比较树的不同子树的成本包括错误率和复杂度来选择最佳的剪枝点。 Tips: 理解数据 在开始调整超参数之前先彻底理解你的数据集。了解数据的特征、目标变量的分布、以及任何调整潜在的所有异常超值参数或。缺失相反值。应该逐个 逐步调整 不要一次性或成对地调整超参数并观察它们对模型性能的影响。 使用交叉验证 交叉验证是评估模型性能的重要工具。它可以帮助你了解模型在不同数据集上的表现并减少过拟合的风险。在调整超参数时应该使用交叉验证来评估每个设置的效果。 默认设置作为起点 大多数决策树实现都提供了合理的默认超参数设置。这些设置通常是基于广泛研究的并适用于许多常见情况。因此建议从默认设置开始并根据需要进行调整。 考虑问题的性质 决策树模型超参数的选择应该与你要解决的问题的性质相匹配。例如在分类问题中你可能更关心模型的分类准确率而在回归问题中你可能更关心模型的预测误差。 平衡过拟合和欠拟合 过拟合和欠拟合是决策树模型中常见的问题。通过调整超参数如max_depth、min_samples_split等你可以控制树的复杂度并在过拟合和欠拟合之间找到平衡。 使用网格搜索和随机搜索 网格搜索GridSearchCV和随机搜索RandomizedSearchCV是两种流行的超参数优化技术。它们可以自动地搜索超参数空间并找到最优的超参数组合。这些技术可以节省大量时间并帮助你找到更好的模型配置。 监控训练时间 决策树的训练时间可以随着超参数的变化而变化。例如增加max_depth或max_leaf_nodes可能会导致训练时间显著增加。因此在调整超参数时请务必监控训练时间并确保它在可接受的范围内。 考虑集成方法 如果你发现单个决策树模型的性能不够理想可以考虑使用集成方法如随机森林、梯度提升树等。这些方法通常通过组合多个决策树来提高模型的准确性和稳定性。 持续学习 机器学习是一个不断发展的领域。随着新算法和技术的出现你可能需要不断地学习新的知识和技能来优化你的决策树模型。因此请保持对最新研究的关注并持续学习新的技术和方法。 实际上决策树的超参数太多根本无法全部用到本文仅将常用的奉上现在已经学习了决策树和决策树超参数的基础知识是时候部署一个小项目了欲知后文如何请看下篇分解。
http://www.dnsts.com.cn/news/149428.html

相关文章:

  • 上海高端点网站建设制作公司有哪些?|网站建设江门网站建设方案策划
  • 品质好的女装品牌西安seo排名收费
  • 深圳外贸网站设计为自己家秘方做网站
  • 长久新开传奇网站高端建站网站
  • 成都学网站建设费用网站栏目 英文
  • 北京平台网站建设多少钱游戏外包平台
  • 有了域名如何建立网站王也为什么这么受欢迎
  • 家政公司网站的建设网站建设提高信息
  • wordpress制作网站教程视频俄语好网站设计
  • 阿里云域名备案网站建设方案书成都软件开发公司排名
  • 大型 交友 网站 建设 公司企网
  • 南昌有什么网站网站着陆页怎么做
  • 假冒网站能通过备案登记吗docker wordpress
  • 南充建设公司网站做淘宝客网站哪个好用
  • 做一个网站最低多少钱齐家网和土巴兔装修哪家好
  • 专业网站建设联系广州网站建设定制哪家口碑好
  • 最好玩的网站猎头公司找的工作怎么样
  • 如何拿qq空间做网站网页空间申请
  • 房产中介网站模板自主网站建设
  • 网站主题怎么介绍编程代码网站
  • 重庆网站开发解决方案宝安网站设计网站建设哪家快
  • 企业网站的功能可分为前台和后台两个部分微信不能分享wordpress
  • 没固定ip怎么做网站wordpress get_page_link
  • 备案网站建设方案书模板赣州酷学网络科技有限公司
  • 电子商务网站的建设视频安卓app上架费用
  • 网上做期末试卷的网站做外贸哪个网站可以接单
  • 厦门网站seo优化wordpress调用首页标签
  • 高端网站设计杭州免费建设网站制作
  • 淮南公司网站建设多少费用在什么网站可以做外贸出口劳保鞋
  • 如何给给公司建立网站宁夏网站设计