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

婚庆公司网站建设方案广告推广公司

婚庆公司网站建设方案,广告推广公司,专业视频网站开发,做电脑图标的网站作业代码地址:点我 1.分析数据 训练集 列是时间,一共24列,是每天的24小时 行是检测的特征值,每次会检测18个特征值,故每18行是一天的数据 一个月20天,一年12个月,所以一共18*20*12行的数据 …

作业代码地址:点我

1.分析数据

训练集

列是时间,一共24列,是每天的24小时
行是检测的特征值,每次会检测18个特征值,故每18行是一天的数据
一个月20天,一年12个月,所以一共18*20*12行的数据
可以在

测试集

给了连续9个小时的数据,预测第十个小时的PM2.5的值
在这里插入图片描述
看上图可知,我们需要训练的Model的 input应该是这18个测量数据在9个小时内的所有测量值,而 output则是第10个小时的PM2.5的值

2.数据的预处理

首先删除无用的数据
删除前三列数据,前三列是日期,测站,测项
然后替换掉非数字数据
将降雨量对应的一行NR替换成0
最后将数据转换为numpy

import pandas as pd
import numpy as np
import csv
import math# 下载csv文件到内存
data = pd.read_csv('./train.csv', encoding='big5')
# 保留数据部分 删除前三列(日期,测站,测项)
data = data.iloc[:, 3:]
# 替换数据中的NR
data[data=='NR'] = 0
# 转换为numpy
raw_data = data.to_numpy()

打印第一行raw_data[0]:

[‘14’ ‘14’ ‘14’ ‘13’ ‘12’ ‘12’ ‘12’ ‘12’ ‘15’ ‘17’ ‘20’ ‘22’ ‘22’ ‘22’
‘22’ ‘22’ ‘21’ ‘19’ ‘17’ ‘16’ ‘15’ ‘15’ ‘15’ ‘15’]

3.提取特征

根据测试数据来划分训练数据,测试数据的输入是9个小时的数据,每次输入18行,所以我们可以先将测试集划分为只有18行的数据,方法如下:
想只留下18行,剩下数据就可以拼接到这18行的右侧(不区分天数,我们只关心连续的小时
18行24列是一天的数据,一个月的20天也就是20x18行24列的数据,我们可以每个月的这20天的数据每18行都拼接到右侧,这样每个月就是20x24列,一个12个月
如下图所示(略粗糙,最后那个是12月)
在这里插入图片描述

另外,因为是只有前9个小时作为输入,所以数据集还要按照每10列划分为一组(输入9,另外1列作为target),每个月是480列,按照每次移动一步来划分数据集,划分完一共是471组数据。每一组的输入都用reshape扁平化为向量。

# 将数据分组 每10个为一组 每个月是471组 12个月 每一组都是18x9 另外一个18x1作为target
x = np.empty((12*471, 18*9))
y = np.empty((12*471, 1))for month in range(12):for hour in range(471): #每个月的471个数据# 每次取9个小时的数据作为一组 将数据扁平化为向量x[month*471+hour] = month_data[month][:, hour:hour+9].rashape(1,-1)y[month*471+hour] = month_data[month][:, 9, hour+9]

4.归一化

归一化,即对每个特征,求其均值和标准差。然后将每个数值都减去其均值后再除以标准差,这样特征的期望就变成了0,标准差变成1。

# 归一化
# axis=0表示跨行 也就是按列求 因为每一列是一个小时的所有特征值 
# 所以我们按列求每个小时的特征值的均值和方差做归一化
mean_x = np.mean(x, axis=0)
std_x = np.std(x, axis=0)for i in range(18*9):if std_x[i] != 0:x[:, i] = (x[:i]-mean_x[i]) / std_x[i]

5.将数据分为训练集和验证集

#将训练集划分为训练集和验证集,共分total组,取第i组作为验证集
def reArrangeTrainValidation(x,i=0,total=5):group_size = int(len(x) / total)  # 分total组x_train=np.concatenate((x[:group_size*i],x[group_size*(i+1):]),axis=0)y_train=np.concatenate((y[:group_size*i],y[group_size*(i+1):]),axis=0)x_validation=x[group_size*i:group_size*(i+1)]y_validation=y[group_size*i:group_size*(i+1)]return (x_train,y_train),(x_validation,y_validation)

6.定义模型开始训练

  • 在GradientDescent的环节中采用的就是n次函数
  • GradientDescent的时候还是使用的残差平方和来计算梯度
  • 采用Adagrad优化算法
# 定义模型 训练
def computeY(n,x,w):#根据权重和输入计算输出py = np.zeros([len(x), 1])for e in range(1 + n):#e为当前x的次幂。e=0表示常数项,这里常数项并没有合并为一个,而是一个特征一个常数项。py += np.dot(x ** e, w[e])#w[e]表示ax^e中的系数a构成的向量return pydef gradientDescent(n, x, y): # n:采用n次函数dim = 18*9w = [np.zeros([dim, 1]) for e in range(1 + n)] #权重adagrad = [np.zeros([dim, 1]) for e in range(1+n)] #adagrad中的梯度累计变量learning_rate = 100 # 学习率epoch = 10000 # 训练次数eps = 0.0000000001for t in range(epoch):py = computeY(n, x, w) # 通过输入得到预测输出loss = np.sqrt(np.sum(np.power(py - y, 2)) / len(x)) # 计算损失if(t % 100==0):print(str(t) + ":" + str(loss))for e in range(1+n): # 梯度下降和优化gradient = 2 * np.dot(x.transpose() ** e, py - y)adagrad[e] += gradient ** 2w[e] = w[e] - learning_rate / np.sqrt(adagrad[e] + eps) * gradientfor e in range(1 + n): # 保存模型np.save(str(e) + '.weight.npy', w[e])

7.测试数据集处理

测试数据集和训练数据集做相同的处理

# 对测试数据集做同样的处理
#载入testing data,对其做相同的处理
testdata=pd.read_csv('./test.csv',header = None,encoding='big5')#header=None说明没有头部,不写的话第一行不会读取到数据中
test_data=testdata.iloc[:,2:]
test_data[test_data=='NR']=0
test_data=test_data.to_numpy()
test_x=np.empty([240,18*9],dtype=float)
for i in range(240):test_x[i]=test_data[i*18:(i+1)*18,:].reshape(1,-1)for i in range(18*9):if std_x[i] !=0:test_x[:,i]=(test_x[:,i]-mean_x[i])/std_x[i]

8.对测试集做预测

将上一步训练保存的模型权值直接下载下来用于训练

#载入权重
w=[]
for e in range(1+n):w.append(np.load(str(e)+'.weight.npy'))

做预测(输入x得到输出,computeY函数)

py=computeY(n,test_x,w)

9.保存模型

with open('submit.csv', mode='w', newline='') as submit_file:csv_writer = csv.writer(submit_file)header = ['id', 'value']print(header)csv_writer.writerow(header)for i in range(240):row = ['id_' + str(i), py[i][0]]csv_writer.writerow(row)print(row)

参考文献
李宏毅 2020机器学习作业1 详细解析
李宏毅机器学习特训营-机器学习作业1-PM2.5预测

http://www.lbrq.cn/news/2721205.html

相关文章:

  • 建立网站时要采用一定的链接结构可采用的基本方式有百度旧版本
  • 机关公文写作网站江门关键词排名工具
  • wordpress局域网建站免费网站站长查询
  • html5制作网站首页排名第一的助勃药
  • 温州网站关键词排名优化怎么制作个人网页
  • 做党务工作常用到的网站站长工具官网查询
  • wordpress 标签搜索引擎惠州百度seo哪家好
  • 如何拷贝别人网站的源码seo网站编辑优化招聘
  • 大兴网站开发网站建设报价长沙seo优化推广
  • 东莞制作公司网站网推什么意思
  • 企业手机端网站源码下载最佳磁力吧ciliba磁力链
  • 手机网站的价值网站制作步骤流程图
  • 科普网站建设目前最好的营销模式
  • 南阳哪里做网站比较好天津搜索引擎推广
  • 做的网站在百度找不到个人网站模板免费下载
  • 东莞网站建设哪家好提高关键词排名的软文案例
  • 武汉站建设互联网营销师考试
  • 什么程序做网站百度热线客服24小时
  • 网站dns如何修改不了seo视频教学网站
  • 暴雪被谁收购了seo优化行业
  • 营销型网站建设哪好中国网评中国网评
  • 哪个网站可以做pcb加工百度投诉电话客服24小时
  • 标准北京时间久久网枣庄网站seo
  • 济宁哪里做网站头条关键词排名查询
  • 佛山 移动宽带 限制网站深圳seo推广外包
  • 怎么做会员自动售卡网站郑州seo关键词排名优化
  • 做中英文网站多少钱色盲眼镜
  • 威海网站开发360优化大师官方下载
  • 怎么自己建政府网站做网络推广要学些什么
  • 政府网站建设考核细则工作手机
  • AIoT浪潮之巅:AI如何赋能边缘物联网,解锁三大核心潜能
  • C#WPF实战出真汁04--登录功能实现
  • 阿里云TranslateGeneral - 机器翻译SDK-自己封账单文件版本—仙盟创梦IDE
  • 【完整源码+数据集+部署教程】肾脏病变实例分割系统源码和数据集:改进yolo11-CARAFE
  • 药房智能盘库系统:基于CV与时间序列预测的库存革命
  • Socket 套接字的学习--UDP