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

中国建设招聘网站甘肃分行推销什么企业做网站和app6

中国建设招聘网站甘肃分行,推销什么企业做网站和app6,找国外人做网站,wordpress 模版修改文章目录前言题目介绍人数分布预测首先建立字母词典#xff0c;加上时间特征数据预处理训练和预测函数保存模型函数位置编码模型及其参数设置模型训练以及训练曲线可视化预测人数分布难度分类预测总结前言 2023美赛选了C题#xff0c;应该很多人会选#xff0c;一看就好做加上时间特征数据预处理训练和预测函数保存模型函数位置编码模型及其参数设置模型训练以及训练曲线可视化预测人数分布难度分类预测总结前言 2023美赛选了C题应该很多人会选一看就好做一看拿奖也难没事注重过程就好。 题目介绍 能点开这篇博客的应该都知道题目吧…随便截点题目意思意思 这里主要对于二三问对于这个单词困难模式下的的人数分布百分比预测以及对这个单词的难度分类的预测。 首先看到他给的数据是这样的 第二问中有让我们预测EERIE这个单词的1-7try人数的百分比因此思路很简单单词特征作为输入人数百分比作为输出可以看作一个回归问题。 第三问中有让我们预测EERIE这个单词的难度等级那么首先需要对所有单词进行难度划分然后得到难度标签最后也是单词特征作为输入单词难度作为输出看作一个分类问题。 人数分布预测 这个问题思路很简单难点就是将单词向量化来表示如何寻找合适、有效的特征就是预测能不能做好的关键并且还需要将时间考虑进去因为问题里说对未来的某个时间的单词进行预测。 因为找特征确实是令人头大预测选择采用深度学习将字母向量表示通过BiLSTM编码为单词的向量表示然后进行分布的预测这样就不用找特征了。 当然我们第一问也找了些特征顺便一起放进去了 这里因为还需要考虑时间我直接灵机一动Transformer不就有个位置编码吗它那里每句话中每个词加上位置编码表示词的序列位置我这里就是每个词的特征加入位置编码用于表示每个词的出现时间不同。 ok因此我们的模型图如下 这里输出层经过softmax得到0-1之间的分布然后进行分布的损失计算损失函数使用MSELoss就是均方误差最小进行回归训练。 看得出训练误差能够不断减小。 先给出数据集部分展示 wordle4.0.csv: Date,Contest number,Word,Number of reported results,Number in hard mode,1 try,2 tries,3 tries,4 tries,5 tries,6 tries,7 or more tries (X),hard rate,commonality,letter_utilization,type_num,first_type,vowel_num,repeat_num 2022/1/7,202,slump,80630,1362,1,3,23,39,24,9,1,0.016891976,0.0221816151464392,0.2097406223034364,2,4,1,0 2022/1/8,203,crank,101503,1763,1,5,23,31,24,14,2,0.017368945,0.0746155017511801,0.3107710268514289,4,3,1,0 2022/1/9,204,gorge,91477,1913,1,3,13,27,30,22,4,0.02091236,0.0466981371503984,0.2672453174965737,4,3,2,1cluster.csv: Date,Contest number,Word,Number of reported results,Number in hard mode,1 try,2 tries,3 tries,4 tries,5 tries,6 tries,7 or more tries (X),hard rate,commonality,letter_utilization,commonality.1,letter_utilization.1,commonality.1.1,letter_utilization.1.1,w2v_tsne1,w2v_tsne2,dbscan,k 2022/1/7,202.0,slump,80630.0,1362.0,1.0,3.0,23.0,39.0,24.0,9.0,1.0,0.016891976,0.0221816151464392,0.2097406223034364,0.0221816151464392,0.2097406223034364,0.0221816151464392,0.2097406223034364,2.337936,-1.1862806,-1,4 2022/1/8,203.0,crank,101503.0,1763.0,1.0,5.0,23.0,31.0,24.0,14.0,2.0,0.017368945,0.0746155017511801,0.3107710268514289,0.0746155017511801,0.3107710268514289,0.0746155017511801,0.3107710268514289,-9.112271,-1.1925219,-1,3 2022/1/9,204.0,gorge,91477.0,1913.0,1.0,3.0,13.0,27.0,30.0,22.0,4.0,0.02091236,0.0466981371503984,0.2672453174965737,0.0466981371503984,0.2672453174965737,0.0466981371503984,0.2672453174965737,-4.010186,9.088285,-1,2代码实现 首先建立字母词典加上时间特征 import pandas as pd import numpy as np data pd.read_csv(wordle_4.0.csv) word data[Word].values dic {} ww [] for w in word:ww.extend(list(w)) ww set(ww) i 0 for w in ww:dic[i] wdic[w] ii 1 # 加上时间位置之后在位置编码取出对应的位置编码 data[date] data.index.values数据预处理 将单词向量化且取出每个单词额外抽取的特征。 因为单词固定5个字母长度而且也就只有26个字母因此处理起来会简单一些。 import torch device cuda if torch.cuda.is_available() else cpu import random import math import osseed 1314 random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) # CPU torch.cuda.manual_seed(seed) # GPU torch.cuda.manual_seed_all(seed) # All GPU os.environ[PYTHONHASHSEED] str(seed) # 禁止hash随机化 torch.backends.cudnn.deterministic True # 确保每次返回的卷积算法是确定的 torch.backends.cudnn.benchmark False # True的话会自动寻找最适合当前配置的高效算法来达到优化运行效率的问题。False保证实验结果可复现 import torch.utils.data.dataloader as dataloader from torch.utils.data import TensorDataset import torch.nn as nn from torch.autograd import Variablefrom sklearn.model_selection import train_test_splitdata_addition pd.read_csv(cluster.csv) data_addition data_addition[[w2v_tsne1,w2v_tsne2]]data_word data[[Word, date, commonality, letter_utilization, type_num, vowel_num, repeat_num]] data_word pd.concat([data_word, data_addition], axis1)data_word data_word.values data_label data[[1 try,2 tries,3 tries,4 tries,5 tries,6 tries,7 or more tries (X)]] * 0.01 X_train, X_test, y_train, y_test train_test_split(data_word, data_label, test_size0.2, random_state42)# device cpudef char2vec(data):data_vec np.zeros((data.shape[0], 5))i 0for word in data:data_vec[i] np.array([dic[w] for w in list(word)])i 1return data_vecx_train_vec char2vec(X_train[:, 0]) x_test_vec char2vec(X_test[:, 0]) y_label_train y_train.values y_label_test y_test.valuesdef get_dataloader(data, X, label):print(X[0])train_data torch.from_numpy(data).to(torch.float32).to(device)train_label torch.from_numpy(label).to(torch.float32).to(device)X torch.from_numpy(X.astype(np.float32)).to(torch.float32).to(device)train_data torch.cat((train_data, X), dim-1)dataset TensorDataset(train_data, train_label)train_loader dataloader.DataLoader(datasetdataset, shuffleFalse, batch_size16) # return train_loadertrain_loader get_dataloader(x_train_vec, X_train[:, 1:], y_label_train) test_loader get_dataloader(x_test_vec, X_test[:, 1:], y_label_test)训练和预测函数 def run_epoch(model, train_iterator, optimzer, loss_fn): # 训练模型:param model:模型:param train_iterator:训练数据的迭代器:param optimzer: 优化器:param loss_fn: 损失函数losses []model.train()for i, batch in enumerate(train_iterator):if torch.cuda.is_available():input batch[0].cuda()label batch[1]else:input batch[0]label batch[1]pred model(input) # 预测loss loss_fn(pred, label) # 计算损失值loss.backward() # 误差反向传播losses.append(loss.cpu().data.numpy()) # 记录误差optimzer.step() # 优化一次return np.mean(losses)def evaluate_model(model, dev_iterator, loss_fn): # 评价模型:param model:模型:param dev_iterator:待评价的数据:return:评价准确率losses []model.eval()for i, batch in enumerate(dev_iterator):if torch.cuda.is_available():input batch[0].cuda()label batch[1]else:input batch[0]label batch[1]y_pred model(input) # 预测loss loss_fn(y_pred, label).cpu().data.numpy() # 计算损失值losses.append(loss)return np.mean(losses)保存模型函数 每次选择训练测试集损失最小的模型保存 def save_model(model):model_name lstm.net # 模型名称with open(model_name, wb) as f:torch.save(model.state_dict(), f) # 将模型参数写入文件model即为已经实例化训练好的model位置编码 用于单词时间的位置表示可以参考transformer的一些理解以及逐层架构剖析与pytorch代码实现 class PositionalEncoding(nn.Module):def __init__(self, d_model, max_len5000):# d_model:词嵌入维度# dropout:置零比率# max_len:每个句子最大的长度super(PositionalEncoding, self).__init__()self.dropout nn.Dropout(0)pe torch.zeros(max_len, d_model)position torch.arange(0, max_len).unsqueeze(1)div_term torch.exp(torch.arange(0, d_model, 2) * -(math.log(1000.0) / d_model))pe[:, 0::2] torch.sin(position * div_term)pe[:, 1::2] torch.cos(position * div_term)pe pe.unsqueeze(0)self.register_buffer(pe, pe)def forward(self, x):return Variable(self.pe[:, x], requires_gradFalse).squeeze()模型及其参数设置 class my_config():embedding_size 16 # 词向量大小hidden_size 20 # 隐藏层大小num_layers 2 # 网络层数dropout 0.1 # 遗忘程度output_size 7 # 输出大小lr 0.0001 # 学习率epoch 200 # 训练次数use_add True # 使用额外特征use_date True # 使用位置编码 config my_config()class myLSTM(nn.Module):def __init__(self, config):super(myLSTM, self).__init__() # 初始化self.vocab_size 26self.config configself.embeddings nn.Embedding(self.vocab_size, self.config.embedding_size) # 配置嵌入层计算出词向量self.lstm nn.LSTM(input_sizeself.config.embedding_size, # 输入大小为转化后的词向量hidden_sizeself.config.hidden_size, # 隐藏层大小num_layersself.config.num_layers, # 堆叠层数有几层隐藏层就有几层dropoutself.config.dropout, # 遗忘门参数bidirectionalTrue # 双向LSTM)self.dropout nn.Dropout(self.config.dropout)self.fc_word nn.Linear(self.config.num_layers * self.config.hidden_size * 2, # 因为双向所有要*2self.config.hidden_size)self.fc_add nn.Linear(X_train.shape[1]-2, self.config.hidden_size)self.fc nn.Linear(self.config.hidden_size * 2, self.config.output_size)self.noisy_flag 0self.pos PositionalEncoding(self.config.hidden_size)if self.config.use_add ! True:self.fc_word nn.Linear(self.config.num_layers * self.config.hidden_size * 2, # 因为双向所有要*2self.config.output_size)self.softmax nn.Softmax(dim-1)def forward(self, x):seq x[:, :5].type(torch.cuda.LongTensor)time x[:, 5].type(torch.cuda.LongTensor)pos_embed self.pos(time)addfeature x[:, 6:].type(torch.cuda.FloatTensor)# if self.noisy_flag 0:# data_mean [0.075763,0.283814,2.222841,1.788301,0.295265]# for i in range(len(data_mean)):# p (torch.randint(low4, high10, size(16,1)) / 100 * data_mean[i]).to(device)# addfeature[:, i] p[:, 0]# self.noisy_flag 1embedded self.embeddings(seq)embedded embedded.permute(1, 0, 2)lstm_out, (h_n, c_n) self.lstm(embedded)feature self.dropout(h_n)# 这里将所有隐藏层进行拼接来得出输出结果没有使用模型的输出feature_map torch.cat([feature[i, :, :] for i in range(feature.shape[0])], dim-1)if self.config.use_add ! True:out self.fc_word(feature_map)else:out1 self.fc_word(feature_map)if self.config.use_date:out1 out1 pos_embedout2 self.fc_add(addfeature)out1 torch.relu(out1)out2 torch.relu(out2)out torch.cat((out1, out2), dim-1)out self.fc(out)return self.softmax(out)模型训练以及训练曲线可视化 model myLSTM(config).to(device) optimzer torch.optim.Adam(model.parameters(), lrconfig.lr, weight_decay2e-5) # 优化器 loss_fn nn.MSELoss() # loss_fn nn.KLDivLoss(reductionbatchmean, log_targetTrue)train_losses [] test_losses [] best_loss 100 for i in range(config.epoch):print(fepoch:{i 1})model.train()run_epoch(model, train_loader, optimzer, loss_fn)# 训练一次后评估一下模型model.eval()train_loss evaluate_model(model, train_loader, loss_fn)test_loss evaluate_model(model, test_loader, loss_fn)if best_loss test_loss:best_loss test_losssave_model(model)print(# * 20)print(train_loss:{:.4f}.format(train_loss))print(test_acc:{:.4f}.format(test_loss))train_losses.append(train_loss)test_losses.append(test_loss) print(best_loss, best_loss)import matplotlib.pyplot as plt x [i for i in range(len(train_losses))] fig plt.figure() plt.plot(x, train_losses, labeltrain_loss, colorblue) plt.plot(x, test_losses, labeltest_loss, colorred) plt.legend() plt.show()至此我们可以选择最优模型来预测EERIE的人数分布 预测人数分布 def pred():import torchdevice cuda if torch.cuda.is_available() else cpumodel myLSTM(config).to(device) # 因为我们保存的模型参数因此原来的刚实例化的模型我们需要将参数填进去以此作为我们能够进行预测的模型model.load_state_dict(torch.load(0.0018655956_lstm.net)) # 将保存好的文件中的参数载入model。model.eval()print(evaluate_model(model, test_loader, loss_fn))# EERIE# ,,,,,,,,,,,,,,,,,,,-0.46785906,-1.4528121,-1,4word torch.tensor([[23, 23, 13, 1, 23, 418, 0.06580884219075174, 0.40309628952845034, 1, 5, 3, -0.46785906,-1.4528121]])pred_y model(word)torch.save(model.embeddings.weight.data, lstm_embed.pt)return pred_y result pred()[0]得到的结果就是我们问题中的结果了。 个人感觉这个模型应该还是有点竞争力的模型得到词向量直接预测和得到词向量后加上我们前面提取的特征丰富词向量其实结果差不太多提升就只有一奈奈但是当加入时间信息即得到词向量后每个词加入时间位置编码模型的训练集损失下架了很多大概下降了有10-15%左右所以说这个时间信息是很重要的如何解释呢可能就是后面人们掌握到这个游戏的窍门了也可能这个题目出的词和时间有种莫名的关系等等。 难度分类预测 最开始还没想到用深度学习的时候在想着聚类什么什么后来第二问做了发现原来想法真是格局小了我直接把第二问模型输出维度改改损失函数改成分类用的交叉熵损失函数不是就结束了吗 总结 美赛熬夜确实难受唯一让我欣慰的是模型图画的还是蛮漂亮的多亏了队友
文章转载自:
http://www.morning.lhjmq.cn.gov.cn.lhjmq.cn
http://www.morning.sjwzl.cn.gov.cn.sjwzl.cn
http://www.morning.rdkgw.cn.gov.cn.rdkgw.cn
http://www.morning.fhykt.cn.gov.cn.fhykt.cn
http://www.morning.rcrnw.cn.gov.cn.rcrnw.cn
http://www.morning.errnull.com.gov.cn.errnull.com
http://www.morning.lwtfr.cn.gov.cn.lwtfr.cn
http://www.morning.knmp.cn.gov.cn.knmp.cn
http://www.morning.qsdnt.cn.gov.cn.qsdnt.cn
http://www.morning.kyytt.cn.gov.cn.kyytt.cn
http://www.morning.smdkk.cn.gov.cn.smdkk.cn
http://www.morning.fxzw.cn.gov.cn.fxzw.cn
http://www.morning.cjqcx.cn.gov.cn.cjqcx.cn
http://www.morning.cmldr.cn.gov.cn.cmldr.cn
http://www.morning.nzmqn.cn.gov.cn.nzmqn.cn
http://www.morning.hhpkb.cn.gov.cn.hhpkb.cn
http://www.morning.trkl.cn.gov.cn.trkl.cn
http://www.morning.xqkjp.cn.gov.cn.xqkjp.cn
http://www.morning.qbzfp.cn.gov.cn.qbzfp.cn
http://www.morning.dndk.cn.gov.cn.dndk.cn
http://www.morning.klltg.cn.gov.cn.klltg.cn
http://www.morning.yrpg.cn.gov.cn.yrpg.cn
http://www.morning.ywtbk.cn.gov.cn.ywtbk.cn
http://www.morning.mmhyx.cn.gov.cn.mmhyx.cn
http://www.morning.drtgt.cn.gov.cn.drtgt.cn
http://www.morning.dgsx.cn.gov.cn.dgsx.cn
http://www.morning.fpzpb.cn.gov.cn.fpzpb.cn
http://www.morning.xbbrh.cn.gov.cn.xbbrh.cn
http://www.morning.bplqh.cn.gov.cn.bplqh.cn
http://www.morning.jhkzl.cn.gov.cn.jhkzl.cn
http://www.morning.ndltr.cn.gov.cn.ndltr.cn
http://www.morning.jhzct.cn.gov.cn.jhzct.cn
http://www.morning.nzfyx.cn.gov.cn.nzfyx.cn
http://www.morning.hsjfs.cn.gov.cn.hsjfs.cn
http://www.morning.rtbx.cn.gov.cn.rtbx.cn
http://www.morning.gghhmi.cn.gov.cn.gghhmi.cn
http://www.morning.wbfg.cn.gov.cn.wbfg.cn
http://www.morning.mrfbp.cn.gov.cn.mrfbp.cn
http://www.morning.trbxt.cn.gov.cn.trbxt.cn
http://www.morning.rqnml.cn.gov.cn.rqnml.cn
http://www.morning.sbyhj.cn.gov.cn.sbyhj.cn
http://www.morning.lkfsk.cn.gov.cn.lkfsk.cn
http://www.morning.bssjp.cn.gov.cn.bssjp.cn
http://www.morning.rqqct.cn.gov.cn.rqqct.cn
http://www.morning.xfxnq.cn.gov.cn.xfxnq.cn
http://www.morning.wzwyz.cn.gov.cn.wzwyz.cn
http://www.morning.rfycj.cn.gov.cn.rfycj.cn
http://www.morning.qcslh.cn.gov.cn.qcslh.cn
http://www.morning.khtjn.cn.gov.cn.khtjn.cn
http://www.morning.wblpn.cn.gov.cn.wblpn.cn
http://www.morning.bmts.cn.gov.cn.bmts.cn
http://www.morning.qkcyk.cn.gov.cn.qkcyk.cn
http://www.morning.hjsrl.cn.gov.cn.hjsrl.cn
http://www.morning.mfcbk.cn.gov.cn.mfcbk.cn
http://www.morning.ctqlq.cn.gov.cn.ctqlq.cn
http://www.morning.bgygx.cn.gov.cn.bgygx.cn
http://www.morning.mxhgy.cn.gov.cn.mxhgy.cn
http://www.morning.wqpsf.cn.gov.cn.wqpsf.cn
http://www.morning.wqbfd.cn.gov.cn.wqbfd.cn
http://www.morning.dtrcl.cn.gov.cn.dtrcl.cn
http://www.morning.rtlth.cn.gov.cn.rtlth.cn
http://www.morning.nqxdg.cn.gov.cn.nqxdg.cn
http://www.morning.qiyelm.com.gov.cn.qiyelm.com
http://www.morning.qxkjy.cn.gov.cn.qxkjy.cn
http://www.morning.kxbry.cn.gov.cn.kxbry.cn
http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn
http://www.morning.pybqq.cn.gov.cn.pybqq.cn
http://www.morning.dkqbc.cn.gov.cn.dkqbc.cn
http://www.morning.wtcyz.cn.gov.cn.wtcyz.cn
http://www.morning.mwqbp.cn.gov.cn.mwqbp.cn
http://www.morning.rhmk.cn.gov.cn.rhmk.cn
http://www.morning.wjxtq.cn.gov.cn.wjxtq.cn
http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn
http://www.morning.fkflc.cn.gov.cn.fkflc.cn
http://www.morning.ryrgx.cn.gov.cn.ryrgx.cn
http://www.morning.mmjyk.cn.gov.cn.mmjyk.cn
http://www.morning.gbrps.cn.gov.cn.gbrps.cn
http://www.morning.wjlrw.cn.gov.cn.wjlrw.cn
http://www.morning.brnwc.cn.gov.cn.brnwc.cn
http://www.morning.swsrb.cn.gov.cn.swsrb.cn
http://www.tj-hxxt.cn/news/259091.html

相关文章:

  • 婚纱外贸网站唐山微信小程序开发公司
  • 丰县住房与城乡建设部网站生产建设兵团第三师政务网站
  • wap网站建设策划方案看广告的收益的app
  • 长春网站建设硕成传媒网站备案时间太长
  • 箱包商城网站建设青岛产品设计公司
  • 好看的网站后台模板长春新增2个高风险地区
  • 做直播网站找哪个网站惠州建设银行行号查询网站
  • 茂名市电白区住房和城乡建设局网站自己做网站卖东西怎么样
  • 手机网站程序怎么进入邯郸论坛网
  • 大连企业建设网站小程序开发有哪些优势
  • 网站建设合理性企业后缀邮箱申请
  • c语言做的网站有什么优缺点建网站如何备案
  • index 石家庄网站建设网站美化软件
  • 网站可以跟博客做互链吗重庆seo结算
  • 网站维护的作用上海城隍庙旅游区
  • 开发网站年度工作总结及明年工作计划wordpress表单文件上传
  • 重庆网站建设解决方案盐城网页设计方案
  • 发光字体制作网站国外电商网站
  • 移动网站建设生要女跟建设通一样的网站
  • icp网站建设wordpress模板官网
  • 本地wordpress无法打开网站织梦cms如何做网站
  • 网站建设电子书包牛牛网站怎么做
  • 重庆网站建设seo平台运营工作内容
  • 做网站的公司吉林购物手机网站怎么做
  • 网站建设模块需求分析微网站建设完 不知道怎么推广咋办
  • 网站建设合同 简单北海网站设计
  • 网站源码上传完后怎么做柳州建站公司
  • 做网站的公司哪家有名做最好的网站
  • 郑州网站建设 华数北京网站优化厂家
  • 企业建网站解决方案城乡与建设厅网站首页