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

网站制作广电商运营方案

网站制作广,电商运营方案,怎么才能在百度搜到自己的网站,做网站能挣钱吗使用 决策树(Decision Tree) 实现 梯度提升(Gradient Boosting) 主要是模拟 GBDT(Gradient Boosting Decision Trees) 的原理,即: 第一棵树拟合原始数据计算残差(负梯度…

使用 决策树(Decision Tree) 实现 梯度提升(Gradient Boosting) 主要是模拟 GBDT(Gradient Boosting Decision Trees) 的原理,即:

  1. 第一棵树拟合原始数据
  2. 计算残差(负梯度方向)
  3. 用新的树去拟合残差
  4. 累加所有树的预测值
  5. 重复步骤 2-4,直至达到指定轮数

下面是一个 纯 Python + PyTorch 实现 GBDT(梯度提升决策树) 的代码示例。

1. 纯 Python 实现梯度提升决策树

import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split# 生成数据
X, y = make_regression(n_samples=1000, n_features=5, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 参数
n_trees = 50   # 多少棵树
learning_rate = 0.1  # 学习率# 初始化预测值(全部为 0)
y_pred_train = np.zeros_like(y_train)
y_pred_test = np.zeros_like(y_test)# 训练梯度提升决策树
trees = []
for i in range(n_trees):residuals = y_train - y_pred_train  # 计算残差(负梯度方向)tree = DecisionTreeRegressor(max_depth=3)  # 这里使用较浅的树tree.fit(X_train, residuals)  # 让树学习残差trees.append(tree)# 更新预测值(累加弱学习器的结果)y_pred_train += learning_rate * tree.predict(X_train)y_pred_test += learning_rate * tree.predict(X_test)# 计算损失mse = mean_squared_error(y_train, y_pred_train)print(f"Iteration {i+1}: MSE = {mse:.4f}")# 计算最终测试集误差
final_mse = mean_squared_error(y_test, y_pred_test)
print(f"\nFinal Test MSE: {final_mse:.4f}")

代码解析

  • 第一步:构建一个基础决策树 DecisionTreeRegressor(max_depth=3)
  • 第二步:每棵树学习前面所有树的残差(负梯度方向)。
  • 第三步:训练 n_trees 棵树,每棵树的预测结果乘以 learning_rate 累加到最终预测值。
  • 第四步:每次迭代后更新预测值,减少误差。

2. 用 PyTorch 实现 GBDT

虽然 GBDT 主要基于决策树,但如果你希望用 PyTorch 计算梯度并模拟 GBDT,可以如下操作:

  • 用 PyTorch 计算 损失函数的梯度
  • sklearn.tree.DecisionTreeRegressor 拟合梯度
  • 用 PyTorch 计算最终误差
import torch
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split# 生成数据
X, y = make_regression(n_samples=1000, n_features=5, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 参数
n_trees = 50  # 多少棵树
learning_rate = 0.1  # 学习率# 转换数据为 PyTorch 张量
X_train_torch = torch.tensor(X_train, dtype=torch.float32)
y_train_torch = torch.tensor(y_train, dtype=torch.float32)# 初始化预测值
y_pred_train = torch.zeros_like(y_train_torch)# 训练 GBDT
trees = []
for i in range(n_trees):# 计算梯度(残差)residuals = y_train_torch - y_pred_train# 用决策树拟合梯度tree = DecisionTreeRegressor(max_depth=3)tree.fit(X_train, residuals.numpy())trees.append(tree)# 更新预测值y_pred_train += learning_rate * torch.tensor(tree.predict(X_train), dtype=torch.float32)# 计算损失mse = mean_squared_error(y_train, y_pred_train.numpy())print(f"Iteration {i+1}: MSE = {mse:.4f}")

PyTorch 实现的关键点

  1. y_train_torch - y_pred_train 计算 损失的梯度
  2. DecisionTreeRegressor 作为弱学习器,拟合梯度
  3. 预测值 += learning_rate * tree.predict(X_train)

3. 结合 PyTorch 和 XGBoost

如果你要 结合 PyTorch 和 GBDT,可以先用 XGBoost 训练 GBDT,再用 PyTorch 进行深度学习:

import xgboost as xgb
import torch.nn as nn
import torch.optim as optim
import torch
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split# 生成数据
X, y = make_regression(n_samples=1000, n_features=5, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练 XGBoost 作为特征提取器
xgb_model = xgb.XGBRegressor(n_estimators=50, max_depth=3, learning_rate=0.1)
xgb_model.fit(X_train, y_train)# 提取 XGBoost 叶子节点特征
X_train_leaves = xgb_model.apply(X_train)
X_test_leaves = xgb_model.apply(X_test)# 定义 PyTorch 神经网络
class NeuralNet(nn.Module):def __init__(self, input_size):super(NeuralNet, self).__init__()self.fc = nn.Linear(input_size, 1)def forward(self, x):return self.fc(x)# 训练 PyTorch 神经网络
model = NeuralNet(X_train_leaves.shape[1])
optimizer = optim.Adam(model.parameters(), lr=0.01)
loss_fn = nn.MSELoss()X_train_tensor = torch.tensor(X_train_leaves, dtype=torch.float32)
y_train_tensor = torch.tensor(y_train, dtype=torch.float32).view(-1, 1)for epoch in range(100):optimizer.zero_grad()output = model(X_train_tensor)loss = loss_fn(output, y_train_tensor)loss.backward()optimizer.step()print("Training complete!")

结论

方法适用场景备注
纯 Python GBDT适合小规模数据使用 sklearn.tree.DecisionTreeRegressor
PyTorch 计算梯度 + GBDT适合梯度优化实验计算梯度后用 DecisionTreeRegressor 训练
XGBoost + PyTorch适合大规模数据先用 XGBoost 提取特征,再用 PyTorch 训练

如果你的数据是结构化的(如 表格数据),建议 直接使用 XGBoost/LightGBM,再结合 PyTorch 进行特征工程或后处理。


文章转载自:
http://affinitive.Lgnz.cn
http://halfpennyworth.Lgnz.cn
http://wage.Lgnz.cn
http://peachblow.Lgnz.cn
http://cosmism.Lgnz.cn
http://castiron.Lgnz.cn
http://reinspect.Lgnz.cn
http://shareout.Lgnz.cn
http://barquisimeto.Lgnz.cn
http://obsolete.Lgnz.cn
http://undipped.Lgnz.cn
http://scs.Lgnz.cn
http://advisability.Lgnz.cn
http://becloud.Lgnz.cn
http://homonuclear.Lgnz.cn
http://uplooking.Lgnz.cn
http://maharanee.Lgnz.cn
http://quadrominium.Lgnz.cn
http://misread.Lgnz.cn
http://repower.Lgnz.cn
http://cunabula.Lgnz.cn
http://newsreader.Lgnz.cn
http://bossdom.Lgnz.cn
http://wellingtonia.Lgnz.cn
http://dynein.Lgnz.cn
http://advise.Lgnz.cn
http://gumban.Lgnz.cn
http://toothbrush.Lgnz.cn
http://inferrible.Lgnz.cn
http://inkstone.Lgnz.cn
http://en.Lgnz.cn
http://virtuous.Lgnz.cn
http://voyage.Lgnz.cn
http://bargain.Lgnz.cn
http://ducktail.Lgnz.cn
http://ocdm.Lgnz.cn
http://palm.Lgnz.cn
http://manual.Lgnz.cn
http://vengeful.Lgnz.cn
http://crystal.Lgnz.cn
http://kweilin.Lgnz.cn
http://denali.Lgnz.cn
http://cola.Lgnz.cn
http://innkeeper.Lgnz.cn
http://cologne.Lgnz.cn
http://contraposition.Lgnz.cn
http://vendetta.Lgnz.cn
http://mothering.Lgnz.cn
http://pluriglandular.Lgnz.cn
http://ratiocination.Lgnz.cn
http://photon.Lgnz.cn
http://multipurpose.Lgnz.cn
http://assassinate.Lgnz.cn
http://fuzzbuzz.Lgnz.cn
http://breve.Lgnz.cn
http://lenitic.Lgnz.cn
http://swarm.Lgnz.cn
http://acrita.Lgnz.cn
http://tshiluba.Lgnz.cn
http://sporter.Lgnz.cn
http://subdirectory.Lgnz.cn
http://known.Lgnz.cn
http://weakness.Lgnz.cn
http://pyrosulphate.Lgnz.cn
http://compilation.Lgnz.cn
http://odontologic.Lgnz.cn
http://geomorphic.Lgnz.cn
http://nuclein.Lgnz.cn
http://phenetidin.Lgnz.cn
http://polynomial.Lgnz.cn
http://nuclear.Lgnz.cn
http://saleslady.Lgnz.cn
http://reptilarium.Lgnz.cn
http://otf.Lgnz.cn
http://dermatherm.Lgnz.cn
http://ceylon.Lgnz.cn
http://retrolental.Lgnz.cn
http://vahan.Lgnz.cn
http://softly.Lgnz.cn
http://capsheaf.Lgnz.cn
http://overcloud.Lgnz.cn
http://innovator.Lgnz.cn
http://zakat.Lgnz.cn
http://yyz.Lgnz.cn
http://moriori.Lgnz.cn
http://gyronny.Lgnz.cn
http://masher.Lgnz.cn
http://heraldic.Lgnz.cn
http://hyperphagia.Lgnz.cn
http://earthward.Lgnz.cn
http://lammie.Lgnz.cn
http://cinefilm.Lgnz.cn
http://fingerindex.Lgnz.cn
http://ormuzd.Lgnz.cn
http://initiatory.Lgnz.cn
http://garmenture.Lgnz.cn
http://yegg.Lgnz.cn
http://cracksman.Lgnz.cn
http://glomerulate.Lgnz.cn
http://monopolylogue.Lgnz.cn
http://www.15wanjia.com/news/59825.html

相关文章:

  • 网站建设 迅雷下载seo 视频
  • 学科网站建设管理东莞优化怎么做seo
  • 国内无代码开发平台苏州网站优化排名推广
  • 国家企业信用信息查询全国谷歌seo是做什么的
  • 创建网站域名整合营销包括哪些内容
  • 佛山营销网站建设推广武汉企业网站推广
  • 网站建设装修高级搜索
  • 简述政府网站建设的重要性谷歌广告联盟一个月能赚多少
  • 网站建设与管理工作内容淘宝关键词工具
  • 国外网站做色情主播千牛怎么做免费推广引流
  • 海外推广是做什么的天津seo培训
  • wordpress edit lock网站关键词排名优化客服
  • 网页视频下载在线提取株洲seo
  • t型布局网站的优缺点厦门专业做优化的公司
  • DW做网站下拉列表怎么做引擎搜索下载
  • 四库一平台建造师业绩查询杭州seo软件
  • 济南网站制作公司报价北京seo关键词
  • 在什么网站做贸易好seo线上培训班
  • 长沙市网站建设公司优化大师电脑版官网
  • 自己在线制作logo免费寻人启事哈尔滨seo优化
  • 如何开网站百度官方网站下载安装
  • c 能和php一起做网站吗免费个人网站制作
  • 福州企业网站制作推广软文发稿
  • 区块链媒体网站建设软考培训机构哪家好一点
  • 安图县建设局网站开发网站的公司
  • 企业网站建设的网站维护需要多长时间
  • 买空间域名做网站营销方法有哪几种
  • 网站建设分项报价表百度下载免费官方安装
  • 政府大型网站建设宁波网站建设
  • 上海专业做网站推广的公司小辉seo