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

蛋糕店的网站建设咋写加强三农网站建设的意义

蛋糕店的网站建设咋写,加强三农网站建设的意义,网站运营与管理的含义,如何选择制作网站公司集成学习是一种机器学习方法#xff0c;旨在提高单个模型的性能和鲁棒性。它基于这样一个假设#xff1a;通过结合多个模型的预测结果#xff0c;可以获得更好的预测性能#xff0c;因为每个模型都可能从数据中提取不同的信息#xff0c;因此他们的错误也可能是不同的旨在提高单个模型的性能和鲁棒性。它基于这样一个假设通过结合多个模型的预测结果可以获得更好的预测性能因为每个模型都可能从数据中提取不同的信息因此他们的错误也可能是不同的通过整合他们的预测结果可以减少这种错误的影响。 集成学习可以分为两类bagging和boosting。 Bagging是bootstrap aggregating的缩写即自举汇聚法。它通过从原始数据集中进行有放回的随机抽样来创建多个训练集每个训练集都用于训练一个独立的模型。这些模型的预测结果被组合起来例如通过平均以生成最终的集成模型的预测结果。Bagging可以用于降低模型方差因为通过使用不同的训练集训练多个模型我们可以减少模型对特定训练集的敏感性。 Boosting是一种迭代算法它通过逐步改善模型的预测能力来构建一个强大的集成模型。每个迭代的模型都是在先前模型的基础上构建的即每个模型都尝试学习之前模型的错误。通过这种方式Boosting可以减少模型偏差因为它们能够逐步拟合训练数据中更复杂的模式。 除了Bagging和Boosting还有其他类型的集成学习方法例如Stacking和Blending。Stacking通过训练多个不同类型的基本模型并使用第二个元模型或叫做“超级学习器”来组合它们的预测结果。Blending是一种类似于Stacking的技术它在训练数据集上训练多个不同的模型并使用一个加权平均来组合它们的预测结果。 集成学习可以提高预测性能和鲁棒性但需要更多的计算资源和时间。它适用于大型数据集和需要高度精确的预测的情况。 使用pytorch分别实现bagging、boosting、stacking和blending 下面是使用PyTorch实现集成学习的例子 首先我们需要准备数据。这里我们使用PyTorch的MNIST数据集作为例子。我们将训练集和测试集分别加载进来 import torch import torch.nn as nn import torch.optim as optim import torchvision.datasets as datasets import torchvision.transforms as transforms# 定义数据转换 transform transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,), (0.3081,)) ])# 加载数据集 train_dataset datasets.MNIST(root./data, trainTrue, downloadTrue, transformtransform) test_dataset datasets.MNIST(root./data, trainFalse, downloadTrue, transformtransform)# 定义数据加载器 train_loader torch.utils.data.DataLoader(train_dataset, batch_size64, shuffleTrue) test_loader torch.utils.data.DataLoader(test_dataset, batch_size64, shuffleFalse) 接下来我们可以定义基本模型这里使用简单的卷积神经网络 class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()self.conv1 nn.Conv2d(1, 10, kernel_size5)self.conv2 nn.Conv2d(10, 20, kernel_size5)self.dropout nn.Dropout2d()self.fc1 nn.Linear(320, 50)self.fc2 nn.Linear(50, 10)def forward(self, x):x self.conv1(x)x nn.functional.relu(nn.functional.max_pool2d(x, 2))x self.conv2(x)x nn.functional.relu(nn.functional.max_pool2d(self.dropout(x), 2))x x.view(-1, 320)x nn.functional.relu(self.fc1(x))x self.dropout(x)x self.fc2(x)return nn.functional.log_softmax(x, dim1) 现在我们可以使用这个基本模型来构建集成学习模型。 bagging 首先是Bagging。在Bagging中我们通过随机抽样训练集数据来构建多个基本模型。每个模型都是独立训练的我们可以将它们的预测结果平均得到集成模型的输出。 # Bagging n_models 5 models [] for i in range(n_models):model CNN()optimizer optim.Adam(model.parameters(), lr0.01)criterion nn.CrossEntropyLoss()for epoch in range(10):for batch_idx, (data, target) in enumerate(train_loader):optimizer.zero_grad()output model(data)loss criterion(output, target)loss.backward()optimizer.step()models.append(model)# 预测 def bagging_predict(models, data):outputs torch.zeros(data.shape[0], 10)for model in models:output torch.exp(model(data))outputs outputreturn outputs.argmax(dim1)# 评估 correct 0 total 0 with torch.no_grad():for data, target in test_loader:outputs bagging_predict(models, data)total target.size(0)correct (outputs target).sum().item() print(fAccuracy: {100 * correct / total:.2f}%) boosting 下一步是Boosting。在Boosting中我们构建多个基本模型每个模型都在前一个模型训练的基础上进行训练。每个模型的训练都会依据之前模型的预测结果进行加权以便更好地捕获错误分类的样本。 # Boosting n_models 5 models [] train_dataset_boost list(train_dataset) for i in range(n_models):model CNN()optimizer optim.Adam(model.parameters(), lr0.01)criterion nn.CrossEntropyLoss()for epoch in range(10):for batch_idx, (data, target) in enumerate(train_loader):if i 0:weights torch.ones(len(train_dataset))else:outputs torch.exp(models[-1](data))weights torch.zeros(len(train_dataset))for j, (d, t) in enumerate(train_dataset_boost):if t outputs.argmax(dim1)[j]:weights[j] 1 / (outputs[j][t] 1e-6)weights weights / weights.sum()sampler torch.utils.data.sampler.WeightedRandomSampler(weights, len(weights), replacementTrue)train_loader_boost torch.utils.data.DataLoader(train_dataset_boost, batch_size64, samplersampler)optimizer.zero_grad()output model(data)loss criterion(output, target)loss.backward()optimizer.step()models.append(model)# 更新训练集权重outputs torch.exp(model(torch.stack([d for d, t in train_dataset_boost])))weights torch.zeros(len(train_dataset))for j, (d, t) in enumerate(train_dataset_boost):if t outputs.argmax(dim1)[j]:weights[j] 1 / (outputs[j][t] 1e-6)weights weights / weights.sum()train_dataset_boost list(zip(train_dataset, weights))train_dataset_boost [(d, t, w) for (d, t), w in train_dataset_boost]# 预测 def boosting_predict(models, data):outputs torch.zeros(data.shape[0], 10)for model in models:output torch.exp(model(data))outputs outputreturn outputs.argmax(dim1)# 评估 correct 0 total 0 with torch.no_grad():for data, target in test_loader:outputs boosting_predict(models, data)total target.size(0)correct (outputs target).sum().item() print(fAccuracy: {100 * correct / total:.2f}%) stacking 下一个集成方法是Stacking。在Stacking中我们首先将训练集分成两部分第一部分用于训练一组基本模型第二部分用于为最终模型生成预测。对于第一部分我们使用多个基本模型对其进行训练。对于第二部分我们使用第一部分的基本模型的预测结果来训练一个最终的元模型该元模型将基本模型的预测结果作为输入并输出最终的预测结果。 # Stacking n_models 5 models [] train_dataset_base, train_dataset_meta torch.utils.data.random_split(train_dataset, [50000, 10000]) for i in range(n_models):model CNN()optimizer optim.Adam(model.parameters(), lr0.01)criterion nn.CrossEntropyLoss()for epoch in range(10):for batch_idx, (data, target) in enumerate(train_loader):optimizer.zero_grad()output model(data)loss criterion(output, target)loss.backward()optimizer.step()models.append(model)# 构建元数据集 meta_data [] with torch.no_grad():for data, target in train_loader:outputs []for model in models:outputs.append(model(data))outputs torch.stack(outputs, dim1)meta_data.append((outputs, target))# 构建元模型 class MetaModel(nn.Module):def __init__(self):super().__init__()self.fc1 nn.Linear(5*10, 100)self.fc2 nn.Linear(100, 10)def forward(self, x):x x.view(x.shape[0], -1)x F.relu(self.fc1(x))x self.fc2(x)return xmeta_model MetaModel() optimizer optim.Adam(meta_model.parameters(), lr0.01) criterion nn.CrossEntropyLoss()# 元训练 for epoch in range(10):for data, target in meta_data:optimizer.zero_grad()output meta_model(data.view(data.shape[0], -1))loss criterion(output, target)loss.backward()optimizer.step()# 预测 def stacking_predict(models, meta_model, data):outputs []with torch.no_grad():for model in models:output model(data)outputs.append(output)outputs torch.stack(outputs, dim1)meta_output meta_model(outputs.view(outputs.shape[0], -1))return meta_output.argmax(dim1)# 评估 correct 0 total 0 with torch.no_grad():for data, target in test_loader:outputs stacking_predict(models, meta_model, data)total target.size(0)correct (outputs target).sum().item() print(fAccuracy: {100 * correct / total:.2f}%) blending 最后一个集成方法是Blending。Blending类似于Stacking但它只使用一部分训练数据进行元模型的训练而不是使用训练集的全部数据。在Blending中我们首先将训练集分成两部分第一部分用于训练多个基本模型第二部分用于为最终模型生成预测。对于第二部分我们使用第一部分的基本模型的预测结果来训练一个最终的元模型该元模型将基本模型的预测结果作为输入并输出最终的预测结果。 # Blending n_models 5 models [] train_dataset_base, train_dataset_blend torch.utils.data.random_split(train_dataset, [50000, 10000]) for i in range(n_models):model CNN()optimizer optim.Adam(model.parameters(), lr0.01)criterion nn.CrossEntropyLoss()for epoch in range(10):for batch_idx, (data, target) in enumerate(train_loader):if batch_idx len(train_loader) // 2:optimizer.zero_grad()output model(data)loss criterion(output, target)loss.backward()optimizer.step()else:breakmodels.append(model)# 生成元数据 meta_data [] with torch.no_grad():for data, target in train_loader:outputs []for model in models:output model(data)outputs.append(output)meta_data.append((torch.cat(outputs, dim1), target))# 构建元模型 class MetaModel(nn.Module):def __init__(self):super().__init__()self.fc1 nn.Linear(5*10, 100)self.fc2 nn.Linear(100, 10)def forward(self, x):x x.view(x.shape[0], -1)x F.relu(self.fc1(x))x self.fc2(x)return xmeta_model MetaModel() optimizer optim.Adam(meta_model.parameters(), lr0.01) criterion nn.CrossEntropyLoss()# 元训练 for epoch in range(10):for data, target in meta_data:optimizer.zero_grad()output meta_model(data.view(data.shape[0], -1))loss criterion(output, target)loss.backward()optimizer.step()# 预测 def blending_predict(models, meta_model, data):outputs []with torch.no_grad():for model in models:output model(data)outputs.append(output)meta_output meta_model(torch.cat(outputs, dim1))return meta_output.argmax(dim1)# 评估 correct 0 total 0 with torch.no_grad():for data, target in test_loader:outputs blending_predict(models, meta_model, data)total target.size(0)correct (outputs target).sum().item() print(fAccuracy: {100 * correct / total:.2f}%)这就是如何使用PyTorch实现Bagging、Boosting、Stacking和Blending的代码示例。这些集成方法是机器学习中非常有用的工具可以帮助我们提高模型的准确性和稳健性尤其是在处理大规模、高维度数据时。
http://www.hkea.cn/news/14461879/

相关文章:

  • 公司建设网站的报告制作网站软件排行榜
  • wap网站asp源码有些网站开发人员工具无反应
  • 企业网站改版项目描述网站角色管理
  • 朔州海外网络推广成都市seo网站公司
  • 商丘做网站推广的公司找项目网
  • 网站开发哪种专业外贸公司网站如何做推广
  • 长沙网站优化外包公司做网站的费用记什么会计科目
  • 做网站的公司 洛阳越南外贸平台
  • 长春网站排名优化友情链接交易平台源码
  • 磁力离心泵做网站求人做网站
  • 网站链接分析湛江有没有做网站的
  • 衡阳网站建设公司专业的佛山网站设计
  • 江门做公司网站荆州网站开发好招人吗
  • 贵阳手机网站开发江干网站建设
  • 网站网站制作wordpress主题哥
  • 福州网站制作官网昆山网络公司哪家比较好
  • 食品包装设计网站商城网站的搜索记录代码怎么做
  • 如何来建设网站游戏网站建设内容
  • 网站怎么做透明导航东莞优秀网站建设
  • 怎么制作网站布局摄影展示网站源码
  • 制作钓鱼网站教程源码网站制作多久
  • 衡水建设局网站首页移动和生活app下载安装最新版
  • 怎么样创办一个网站凡客生活
  • 网站建设公司哪个好点价格便宜的网站建设
  • 做第三方网站注意什么wordpress 重置密码链接
  • 网站的规划与建设课程设计班级网站设计wordpress
  • 招聘网站开发费用网站浮动条
  • 成都网站建设哪家公司好网站快速收录提交
  • 自助网站搭建系统上海企业网站设计公司电话
  • 西部数码里面如何建设自己的网站长沙网站制作合作商