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

太原建设局网站同城推广有什么平台

太原建设局网站,同城推广有什么平台,郑州网站建设zzwzjs,wordpress登录页面模板下载目录前言数据加载数据转换模型定义模型训练模型评估模型保存与加载完整代码讨论参考文献前言 大多数数据科学家以往经常常是利用传统的机器学习框架sklearn搭建多元回归模型#xff0c;随着深度学习和强化学习越来越普及#xff0c;很多数据科学家尝试使用深度学习框架来进行… 目录前言数据加载数据转换模型定义模型训练模型评估模型保存与加载完整代码讨论参考文献前言 大多数数据科学家以往经常常是利用传统的机器学习框架sklearn搭建多元回归模型随着深度学习和强化学习越来越普及很多数据科学家尝试使用深度学习框架来进行多元回归实验下面来做一个利用PyTorch深度学习框架做一个完整的多元回归数据科学实验。从该实验你将学到一下内容并通过这一篇博客成功运用深度学习框架PyTorch进行多元回归模型搭建。 如何加载数据如何转换数据如何定义模型如何评估模型如何验收模型如何保存模型和加载模型 一个典型的PyTorch建模过程往往包含了一下几个过程 #mermaid-svg-RtLB1mAx7OQ9F74P {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-RtLB1mAx7OQ9F74P .error-icon{fill:#552222;}#mermaid-svg-RtLB1mAx7OQ9F74P .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-RtLB1mAx7OQ9F74P .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-RtLB1mAx7OQ9F74P .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-RtLB1mAx7OQ9F74P .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-RtLB1mAx7OQ9F74P .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-RtLB1mAx7OQ9F74P .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-RtLB1mAx7OQ9F74P .marker{fill:#333333;stroke:#333333;}#mermaid-svg-RtLB1mAx7OQ9F74P .marker.cross{stroke:#333333;}#mermaid-svg-RtLB1mAx7OQ9F74P svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-RtLB1mAx7OQ9F74P .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-RtLB1mAx7OQ9F74P .cluster-label text{fill:#333;}#mermaid-svg-RtLB1mAx7OQ9F74P .cluster-label span{color:#333;}#mermaid-svg-RtLB1mAx7OQ9F74P .label text,#mermaid-svg-RtLB1mAx7OQ9F74P span{fill:#333;color:#333;}#mermaid-svg-RtLB1mAx7OQ9F74P .node rect,#mermaid-svg-RtLB1mAx7OQ9F74P .node circle,#mermaid-svg-RtLB1mAx7OQ9F74P .node ellipse,#mermaid-svg-RtLB1mAx7OQ9F74P .node polygon,#mermaid-svg-RtLB1mAx7OQ9F74P .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-RtLB1mAx7OQ9F74P .node .label{text-align:center;}#mermaid-svg-RtLB1mAx7OQ9F74P .node.clickable{cursor:pointer;}#mermaid-svg-RtLB1mAx7OQ9F74P .arrowheadPath{fill:#333333;}#mermaid-svg-RtLB1mAx7OQ9F74P .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-RtLB1mAx7OQ9F74P .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-RtLB1mAx7OQ9F74P .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-RtLB1mAx7OQ9F74P .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-RtLB1mAx7OQ9F74P .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-RtLB1mAx7OQ9F74P .cluster text{fill:#333;}#mermaid-svg-RtLB1mAx7OQ9F74P .cluster span{color:#333;}#mermaid-svg-RtLB1mAx7OQ9F74P div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-RtLB1mAx7OQ9F74P :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}数据加载数据重构模型定义模型训练模型评估模型保存与加载接下来我们就严格按照上面步骤来一步一步进行。 数据加载 数据加载是指将将本地或者服务器云端的数据读取进来并进行必要的预处理包括填充空值去掉异常值编码格式转换数据分裂成训练集和测试集这一步骤可以利用我们熟悉的pandas库处理。 store pd.read_csv(rD:\项目\商简智能\回归预测题目\store.csv) train pd.read_csv(rD:\项目\商简智能\回归预测题目\train.csv) train_df pd.merge(lefttrain, rightstore, left_on商店ID, right_on商店ID, howleft) train_df train_df.query(周销量0) train_df.dropna(howany, inplaceTrue) train_df[商店ID] train_df[商店ID].astype(float64) train_df[年] train_df[年].astype(float64) train_df[周] train_df[周].astype(float64) train_df[节日A] train_df[节日A].astype(float64) train_df[节日B] train_df[节日B].astype(float64) train_df[节日C] train_df[节日C].astype(float64) train_df[商店模式] LabelEncoder() .fit_transform(train_df[商店模式] ) #编码 train_df[商店级别] LabelEncoder() .fit_transform(train_df[商店级别] ) #编码 train_df train_df[[商店ID, 年, 周, 营业天数, 打折天数, 非节日, 节日A, 节日B, 节日C, 商店模式, 商店级别, 竞争者最近距离, 周销量]] X, y train_df.drop([周销量], axis1), train_df.周销量 #特征和目标 X_train, X_test, y_train, y_test train_test_split(X, y, test_size 0.3, shuffleTrue, random_state0) #划分训练测试集 print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)通过上面代码可以看到本次实验是读取本地数据具体数据格式和解读参见这篇文章并将数值型变量统一转化为float64型将类别型变量编码定义出特征列和标签列并利用train_test_split将数据集分裂成训练集和测试集可以打印出训练集和测试集的形状大小以检验数据分割的正确与否 (51300, 12) (21987, 12) (51300,) (21987,)数据转换 经过数据加载步骤后数据没有刺头了变得规规矩矩了哪一块就是哪一块但是都是numpyseriesdataframe等数据格式而深度学习框架只认识张量(tensor)数据格式在PyTorch的世界不管是模型的输入输出还是模型的参数都是由tensor来编码的所以我们需要将之前得到的dataframe转化为tensor并适当的分组(batch)以便输入模型进行小批量(minibatch)训练PyTorch提供了两种原生的数据处理方法torch.utils.data.DataLoader 和 torch.utils.data.DatasetDataset 使得你可以使用一些预置数据和自己的数据经过Dataset的数据存储了样本和其对应的标签而DataLoader 可以把Dataset的样本打包成一个一个小组形成迭代器使得在模型训练的时候可以只对这些迭代器进行循环训练。 X_train, X_test X_train.values, X_test.values y_train, y_test y_train.values.reshape(-1, 1), y_test.values.reshape(-1, 1) X_train torch.from_numpy(X_train).type(torch.FloatTensor) X_test torch.from_numpy(X_test).type(torch.FloatTensor) y_train torch.from_numpy(y_train).type(torch.FloatTensor) y_test torch.from_numpy(y_test).type(torch.FloatTensor) training_data TensorDataset(X_train, y_train) test_data TensorDataset(X_test, y_test) train_dataloader DataLoader(training_data, batch_size64) test_dataloader DataLoader(test_data, batch_size64)模型定义 模型定义是指定义好深度学习的网络结构俗称神经网络神经网络由一些模型和层构成数据在这些结构上进行各种各样的运算在PyTorch里每一个模型都继承 nn.Module我们可以搭建和管理各种风格和各种样子的神经网络。 class Net(nn.Module): def __init__(self, features):super(Net, self).__init__() self.h1 nn.Linear(features, 30, bias True)self.a1 nn.ReLU()self.h2 nn.Linear(30, 10)self.a2 nn.ReLU()self.regression nn.Linear(10, 1)def forward(self, x): x self.h1(x)x self.a1(x)x self.h2(x)x self.a2(x)y_pred self.regression(x)return y_pred通过上面代码我们搭建了一个名为Net的神经网络该网络继承了nn.Module并定义了初始化化和向前传播路径网络由2个Linear层和2个ReLU激活函数组成输入层的参数是特征数(features)30隐藏层是3010输出层是10*1最后返回一个预测值我们可以实例化该网络打印出网络结构 Net((h1): Linear(in_features12, out_features30, biasTrue)(a1): ReLU()(h2): Linear(in_features30, out_features10, biasTrue)(a2): ReLU()(regression): Linear(in_features10, out_features1, biasTrue) )模型训练 深度学习的模型训练首先是向前传播得到预测值其次在给定的损失函数前提下计算损失的梯度不断更新模型里面的参数同时可以记录训练集的损失函数值和测试集的损失函数值以便后续可视化两者变化曲线。 train_loss [] test_loss []epochs 201 for epoch in range(epochs):model.train()for xb, yb in train_dataloader:pred model(xb)loss criterion(pred, yb)loss.requires_grad_(True) optimizer.zero_grad()loss.backward()optimizer.step()if epoch%100:model.eval()with torch.no_grad():train_epoch_loss sum(criterion(model(xb), yb) for xb, yb in train_dataloader)test_epoch_loss sum(criterion(model(xb), yb) for xb, yb in test_dataloader)train_loss.append(train_epoch_loss.data.item() / len(train_dataloader))test_loss.append(test_epoch_loss.data.item() / len(test_dataloader))template (epoch:{:2d}, 训练损失:{:.5f}, 验证损失:{:.5f})print(template.format(epoch, train_epoch_loss.data.item() / len(train_dataloader), test_epoch_loss.data.item() / len(test_dataloader))) print(训练完成)模型评估 模型评估是指对训练好的模型进行某些指标的评估由于在模型训练的时候我们保存了训练集和测试集的损失值可以在这里直接画出来。 fig plt.figure(figsize (6,4)) plt.plot(range(len(train_loss)), train_loss, label train_loss) plt.plot(range(len(test_loss)), test_loss, label test_loss) plt.legend() plt.show()模型保存与加载 辛辛苦苦训练出来并通过相关指标评估的模型自然希望能够保存下来以便下次能够在此利用PyTorch提供2中模型保存和加载策略一个是只存储模型中的参数该方法速度快占用空间少官方推荐使用一个是存储整个模型这里采用前者。 torch.save(model.state_dict(), .\model_parameter.pth) #保存模型parameter torch.load(.\model_parameter.pth) #加载模型 model.load_state_dict(parameter)完整代码 # -*- encoding: utf-8 -*-Project : sales Desc : 基于pytorch的深度学习销量预测 Time : 2023/02/07 16:30:14 Author : 帅帅de三叔,zengbowengood163.com import math import torch from torch import nn import numpy as np import pandas as pd import matplotlib.pyplot as plt from torch.utils.data import TensorDataset from torch.utils.data import DataLoader from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # 数据标准化store pd.read_csv(rD:\项目\商简智能\回归预测题目\store.csv) train pd.read_csv(rD:\项目\商简智能\回归预测题目\train.csv) train_df pd.merge(lefttrain, rightstore, left_on商店ID, right_on商店ID, howleft) train_df train_df.query(周销量0) train_df.dropna(howany, inplaceTrue) train_df[商店ID] train_df[商店ID].astype(float64) train_df[年] train_df[年].astype(float64) train_df[周] train_df[周].astype(float64) train_df[节日A] train_df[节日A].astype(float64) train_df[节日B] train_df[节日B].astype(float64) train_df[节日C] train_df[节日C].astype(float64) train_df[商店模式] LabelEncoder() .fit_transform(train_df[商店模式] ) #编码 train_df[商店级别] LabelEncoder() .fit_transform(train_df[商店级别] ) #编码 train_df train_df[[商店ID, 年, 周, 营业天数, 打折天数, 非节日, 节日A, 节日B, 节日C, 商店模式, 商店级别, 竞争者最近距离, 周销量]] X, y train_df.drop([周销量], axis1), train_df.周销量 #特征和目标 X_train, X_test, y_train, y_test train_test_split(X, y, test_size 0.3, shuffleTrue, random_state0) #划分训练测试集 print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)X_train, X_test X_train.values, X_test.values y_train, y_test y_train.values.reshape(-1, 1), y_test.values.reshape(-1, 1) X_train torch.from_numpy(X_train).type(torch.FloatTensor) X_test torch.from_numpy(X_test).type(torch.FloatTensor) y_train torch.from_numpy(y_train).type(torch.FloatTensor) y_test torch.from_numpy(y_test).type(torch.FloatTensor) training_data TensorDataset(X_train, y_train) test_data TensorDataset(X_test, y_test) train_dataloader DataLoader(training_data, batch_size64) test_dataloader DataLoader(test_data, batch_size64)class Net(nn.Module): def __init__(self, features):super(Net, self).__init__() self.h1 nn.Linear(features, 30, bias True)self.a1 nn.ReLU()self.h2 nn.Linear(30, 10)self.a2 nn.ReLU()self.regression nn.Linear(10, 1)def forward(self, x): x self.h1(x)x self.a1(x)x self.h2(x)x self.a2(x)y_pred self.regression(x)return y_predclass CustomLoss(nn.Module): #自定义损失函数def __init__(self):super(CustomLoss, self).__init__()def forward(self, x, y):loss torch.sqrt(torch.sum(torch.pow((x-y)/x, 2))/len(x))return lossmodel Net(featuresX_train.shape[1]) print(model)model Net(featuresX_train.shape[1]) criterion CustomLoss() optimizer torch.optim.Adam(model.parameters(), lr1e-3)train_loss [] test_loss []epochs 101 for epoch in range(epochs):model.train()for xb, yb in train_dataloader:pred model(xb)loss criterion(pred, yb)# loss.requires_grad_(True) optimizer.zero_grad()loss.backward()optimizer.step()if epoch%100:model.eval()with torch.no_grad():train_epoch_loss sum(criterion(model(xb), yb) for xb, yb in train_dataloader)test_epoch_loss sum(criterion(model(xb), yb) for xb, yb in test_dataloader)train_loss.append(train_epoch_loss.data.item() / len(train_dataloader))test_loss.append(test_epoch_loss.data.item() / len(test_dataloader))template (epoch:{:2d}, 训练损失:{:.5f}, 验证损失:{:.5f})print(template.format(epoch, train_epoch_loss.data.item() / len(train_dataloader), test_epoch_loss.data.item() / len(test_dataloader))) print(训练完成)fig plt.figure(figsize (6,4)) plt.plot(range(len(train_loss)), train_loss, label train_loss) plt.plot(range(len(test_loss)), test_loss, label test_loss) plt.legend() plt.show()torch.save(model.state_dict(), .\model_parameter.pth) #保存模型parameter torch.load(.\model_parameter.pth) #加载模型 model.load_state_dict(parameter)讨论 对于结构化的数据深度学习不一定就比传统机器学习强还需具体问题具体分析不可一概而论。 参考文献 1https://pytorch.org/tutorials/beginner/basics/quickstart_tutorial.html 2https://shenzl.blog.csdn.net/article/details/128632831 3https://sanhangkc.blog.csdn.net/article/details/128818696
http://www.dnsts.com.cn/news/1000.html

相关文章:

  • 织梦高清电影网站模板店铺推广方法
  • 昆明网站建设服务至上谷歌是如何运营的
  • 哈尔滨营销型网站制作软文推广公司有哪些
  • 中国最好网站建设公司百度站长电脑版
  • 温州哪里做网站比较好搜索引擎seo推广
  • 社旗网站设计长沙网红打卡地
  • 做推广一般那些网站比较好互联网营销师培训课程免费
  • 给网站做游戏视频怎么赚钱关键词搜索引擎又称为
  • 南通网站建设方案咨询新手怎么入行seo
  • 驻马店市做网站免费刷粉网站推广
  • 衢州在建工程优化搜索引擎营销
  • 徐州方案公示在哪个网站重庆seo招聘
  • 贵港住房城乡建设厅网站河南今日头条新闻
  • 个人做网站需要学什么只是网域名查询地址
  • 网站后缀cc东莞疫情最新通知
  • 太谷网站建设今日国家新闻
  • 做印刷品的素材网站口碑营销什么意思
  • 做网站做丝袜美女的能行吗seo网站推广专员
  • 济南wordpress 建站重庆seo排名优化
  • 做网站哪家比较好免费的推广软件下载
  • 荔湾区网站设计企业qq多少钱一年
  • flask公司网站开发2022近期重大新闻事件10条
  • 网站设计背景图片怎么做的百度搜索引擎首页
  • 食品网站模板百度推广投诉中心
  • 丰联汽配网站建设成本seo关键词推广渠道
  • 做自己的网站的一般步骤橙子建站官网
  • 精美手机网站模板安卓优化大师官网
  • 做服装批发必逛的网站线上产品推广方案
  • 南京企业网站设计建设app开发公司
  • 深圳网站建设东营网站发帖推广平台