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

dedecms 做微网站南昌网站建设

dedecms 做微网站,南昌网站建设,赚钱宝部署wordpress,免费网页app一键生成软件🌳 Python实现梯度提升树(GBDT):让决策树"代代进化"的魔法 梯度提升树就像一群小树苗在接力成长,每棵新树都专注于前辈们犯过的错误,最终长成一片预测能力强大的森林。下面我用Python展示这个强大的算法。 &#x1f9…

🌳 Python实现梯度提升树(GBDT):让决策树"代代进化"的魔法

梯度提升树就像一群小树苗在接力成长,每棵新树都专注于前辈们犯过的错误,最终长成一片预测能力强大的森林。下面我用Python展示这个强大的算法。

🧰 准备工具包

from sklearn.ensemble import GradientBoostingRegressor  # 回归问题用
from sklearn.ensemble import GradientBoostingClassifier  # 分类问题用
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, accuracy_score
import numpy as np
import matplotlib.pyplot as plt

🌲 梯度提升树四步曲

1. 创建模拟数据(回归问题示例)

# 生成一个有噪声的波浪形数据集
np.random.seed(42)
X = np.linspace(0, 10, 100).reshape(-1, 1)
y = np.sin(X).ravel() + np.random.normal(0, 0.1, X.shape[0])# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)plt.scatter(X_train, y_train, label='训练数据')
plt.title("原始数据")
plt.legend()
plt.show()

2. 训练GBDT模型

# 创建梯度提升树回归器
gbr = GradientBoostingRegressor(n_estimators=100,  # 100棵小树learning_rate=0.1, # 学习率max_depth=3,       # 每棵树的最大深度min_samples_split=2, random_state=42
)# 训练模型
gbr.fit(X_train, y_train)# 预测
y_pred = gbr.predict(X_test)# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print(f"测试集均方误差(MSE): {mse:.4f}")

3. 可视化预测效果

# 生成预测线
X_plot = np.linspace(0, 10, 1000).reshape(-1, 1)
y_plot = gbr.predict(X_plot)plt.scatter(X_train, y_train, label='训练数据')
plt.plot(X_plot, y_plot, color='red', linewidth=2, label='GBDT预测')
plt.title("梯度提升树回归效果")
plt.legend()
plt.show()

4. 查看训练过程(分类问题示例)

# 创建分类数据集
from sklearn.datasets import make_classification
X_clf, y_clf = make_classification(n_samples=1000, n_features=10, n_classes=2, random_state=42)# 分割数据
X_train_clf, X_test_clf, y_train_clf, y_test_clf = train_test_split(X_clf, y_clf, test_size=0.2, random_state=42)# 训练分类器
gbc = GradientBoostingClassifier(n_estimators=100, random_state=42)
gbc.fit(X_train_clf, y_train_clf)# 查看训练过程中准确率的变化
test_acc = [accuracy_score(y_test_clf, y_pred) for y_pred in gbc.staged_predict(X_test_clf)]plt.plot(range(1, 101), test_acc)
plt.xlabel("树的数量")
plt.ylabel("测试集准确率")
plt.title("GBDT分类器学习曲线")
plt.show()

🍎 通俗例子:预测水果价格

假设我们有3天的水果销售数据:

天数天气(1-5)周末(0/1)实际价格
13010元
25115元
3208元

GBDT的工作流程

  1. 第一棵树(基础模型):
    • 简单预测:所有水果均价11元
    • 残差(误差):[-1, +4, -3](实际-预测)
  2. 第二棵树
    • 学习目标:预测第一棵树的残差
    • 发现规则:如果是周末 → +3.5元,否则 → -2元
    • 新预测:11 + 3.5 = 14.5(周末), 11 - 2 = 9(非周末)
    • 新残差:[-1, +0.5, -1]
  3. 第三棵树
    • 继续学习剩余残差
    • 发现规则:好天气(>4) → +0.3元
    • 最终预测变得更为精准
  4. 最终预测
    • 综合所有树的预测结果
    • 例如第2天预测值 = 11 + 3.5 + 0.3 = 14.8元(接近实际15元)

💡 核心特点

  1. 残差学习:每棵树都试图修正前一棵树的错误,像不断改进的草稿
  2. 可调参数
    • learning_rate:控制每棵树的贡献(小步慢走更稳健)
    • n_estimators:树的数量(太多可能过拟合)
    • max_depth:每棵树的复杂度(通常3-5层足够)
  3. 适用广泛
    • 回归问题(预测房价)
    • 分类问题(判断邮件是否垃圾邮件)
    • 排序问题(搜索结果的排序)

记住:梯度提升树就像一群互相帮助的学生,每个新学生都特别关注班上做错题的同学,最终全班成绩越来越好!

http://www.dtcms.com/wzjs/359002.html

相关文章:

  • 个人备案网站做淘宝客可以用吗优秀网站设计网站
  • 付银行的网站建设费的会计科目app运营方案
  • 美国服务器购买网站百度指数的数据怎么导出
  • 成都网站建设 致尚北京培训seo哪个好
  • 网站建设管理职责刷关键词排名软件
  • 滨州正规网站建设公司黑马it培训班出来现状
  • 建站之星成品网站源码360免费建站
  • 五大门户网站分别是seo推广排名软件
  • 常州做网站找哪家好网络服务公司经营范围
  • 字幕如何做模板下载网站北京seo的排名优化
  • 淘宝联盟怎么做自己的网站seo专业培训需要多久
  • 电子商务网站建设教程免费的黄冈网站代码
  • 做视频网站该把视频文件传到哪seo谷歌外贸推广
  • 湖北网站建设 鄂 icp自媒体十大平台
  • 定制手机软件郑州网站seo外包公司
  • 中国最厉害的公关人seo伪原创工具
  • 建网站程序怎么写semen是什么意思
  • 网站建设 汇卓百度一下就知道
  • 太原关键词排名提升seo外链优化方法
  • 做论坛网站数据库需多大热搜词排行榜关键词
  • 专业营销型网站建设优化软件刷排名seo
  • 一般企业网站建设合同搜索引擎排名优化包括哪些方面
  • 哪种类型的网站比较难做经典广告
  • 郑州做网站优化郑州seo优化外包公司
  • 怎么做网站里的悬浮窗口郑州整站网站优化
  • 服务器关闭 网站被k网络营销的发展趋势
  • 手机网站建设yu名优网站关键词优化
  • 网站关键词检测南宁seo推广优化
  • 免费搭建企业网站电子商务seo名词解释
  • 杭州网站网络 科技公司厦门人才网招聘官网