天气预测(CNN)
import torch
import torch.nn as nn
import torch.utils.data as Data
import numpy as np
import pymysql
import datetime
import csv
import time EPOCH = 100
BATCH_SIZE = 50 class MyNet(nn.Module):
def __init__(self):
super(MyNet, self).__init__()
self.con1 = nn.Sequential(
nn.Conv1d(in_channels=1, out_channels=64, kernel_size=3, stride=1, padding=1),
nn.MaxPool1d(kernel_size=1),
nn.ReLU(),
)
self.con2 = nn.Sequential(
nn.Conv1d(in_channels=64, out_channels=128, kernel_size=3, stride=1, padding=1),
nn.MaxPool1d(kernel_size=1),
nn.ReLU(),
)
self.fc = nn.Sequential(
# 线性分类器
nn.Linear(128*6*1, 128), # 修改大小后要重新计算
nn.ReLU(),
nn.Linear(128, 6),
# nn.Softmax(dim=1),
)
self.mls = nn.MSELoss()
self.opt = torch.optim.Adam(params=self.parameters(), lr=1e-3)
self.start = datetime.datetime.now() def forward(self, inputs):
out = self.con1(inputs)
out = self.con2(out)
out = out.view(out.size(0), -1) # 展开成一维
out = self.fc(out)
# out = F.log_softmax(out, dim=1)
return out def train(self, x, y):
out = self.forward(x)
loss = self.mls(out, y)
print('loss: ', loss)
self.opt.zero_grad()
loss.backward()
self.opt.step() def test(self, x):
out = self.forward(x)
return out def get_data(self):
with open('aaa.csv', 'r') as f:
results = csv.reader(f)
results = [row for row in results]
results = results[1:1500]
inputs = []
labels = []
for result in results:
# 手动独热编码
one_hot = [0 for i in range(6)]
index = int(result[6])-1
one_hot[index] = 1
# labels.append(label)
# one_hot = []
# label = result[6]
# for i in range(6):
# if str(i) == label:
# one_hot.append(1)
# else:
# one_hot.append(0)
labels.append(one_hot)
input = result[:6]
input = [float(x) for x in input]
# label = [float(y) for y in label]
inputs.append(input)
# print(labels) # [[0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 1],
time.sleep(10)
inputs = np.array(inputs)
labels = np.array(labels)
inputs = torch.from_numpy(inputs).float()
inputs = torch.unsqueeze(inputs, 1) labels = torch.from_numpy(labels).float()
return inputs, labels def get_test_data(self):
with open('aaa.csv', 'r') as f:
results = csv.reader(f)
results = [row for row in results]
results = results[1500: 1817]
inputs = []
labels = []
for result in results:
label = [result[6]]
input = result[:6]
input = [float(x) for x in input]
label = [float(y) for y in label]
inputs.append(input)
labels.append(label)
inputs = np.array(inputs)
# labels = np.array(labels)
inputs = torch.from_numpy(inputs).float()
inputs = torch.unsqueeze(inputs, 1)
labels = np.array(labels)
labels = torch.from_numpy(labels).float()
return inputs, labels if __name__ == '__main__':
# 训练数据
# net = MyNet()
# x_data, y_data = net.get_data()
# torch_dataset = Data.TensorDataset(x_data, y_data)
# loader = Data.DataLoader(
# dataset=torch_dataset,
# batch_size=BATCH_SIZE,
# shuffle=True,
# num_workers=2,
# )
# for epoch in range(EPOCH):
# for step, (batch_x, batch_y) in enumerate(loader):
# print(step)
# # print('batch_x={}; batch_y={}'.format(batch_x, batch_y))
# net.train(batch_x, batch_y)
# # 保存模型
# torch.save(net, 'net.pkl') # 测试数据
net = MyNet()
net.get_test_data()
# 加载模型
net = torch.load('net.pkl')
x_data, y_data = net.get_test_data()
torch_dataset = Data.TensorDataset(x_data, y_data)
loader = Data.DataLoader(
dataset=torch_dataset,
batch_size=100,
shuffle=False,
num_workers=1,
)
num_success = 0
num_sum = 317
for step, (batch_x, batch_y) in enumerate(loader):
# print(step)
output = net.test(batch_x)
# output = output.detach().numpy()
y = batch_y.detach().numpy()
for index, i in enumerate(output):
i = i.detach().numpy()
i = i.tolist()
j = i.index(max(i))
print('输出为{}标签为{}'.format(j+1, y[index][0]))
loss = j+1-y[index][0]
if loss == 0.0:
num_success += 1
print('正确率为{}'.format(num_success/num_sum))
天气预测(CNN)的更多相关文章
- 【SVM】kaggle之澳大利亚天气预测
项目目标 由于大气运动极为复杂,影响天气的因素较多,而人们认识大气本身运动的能力极为有限,因此天气预报水平较低,预报员在预报实践中,每次预报的过程都极为复杂,需要综合分析,并预报各气象要素,比如温度. ...
- 模式识别之bayes---bayes 简单天气预测实现实例
Bayes Classifier 分类 在模式识别的实际应用中,贝叶斯方法绝非就是post正比于prior*likelihood这个公式这么简单,一般而言我们都会用正态分布拟合likelihood来实 ...
- 卷积神经网络CNN全面解析
卷积神经网络(CNN)概述 从多层感知器(MLP)说起 感知器 多层感知器 输入层-隐层 隐层-输出层 Back Propagation 存在的问题 从MLP到CNN CNN的前世今生 CNN的预测过 ...
- Domoticz 中添加彩云天气
前言 用过一段时间的彩云天气 APP,最吸引我的地方是精确到局部区域的天气预测,虽然准确度并不算高,但是对于预测下雨还是不错的选择.在 Domoticz 中添加彩云天气的数据,利用的是彩云天气提供的 ...
- python 基础例子 双色球 查询天气 查询电话
# 随机生成双色球import random# 随机数 1-16之间# r = random.randint(1,16)# print(r)phone_numbers_str = "匪警[1 ...
- 【转载】Deep Learning(深度学习)学习笔记整理
http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...
- Deep Learning速成教程
引言 深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里, ...
- Deep Learning(深度学习)学习系列
目录: 一.概述 二.背景 三.人脑视觉机理 四.关于特征 4.1.特征表示的粒度 4.2.初级(浅层)特征表示 4.3.结构性特征表示 4.4 ...
- 深度学习概述教程--Deep Learning Overview
引言 深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里, ...
随机推荐
- ASP.NET Core 一步步搭建个人网站(1)_环境搭建
ASP.NET Core2.0发布有一阵子了,这是.NET 开源跨平台的一个重大里程碑, 也意味着比1.0版本要更加成熟.目前.net core具有开源.跨平台.灵活部署.模块化架构等等特性,吸引着一 ...
- word中字体大小(pt)和网页中css设置font-size时用的px大小对应关系
pt与px转换关系为 1px= 0.75pt. 所以word中五号字体(10.5pt)在网页中对应的大小为font-size:14px.(10.5 / 0.75 = 14) 初号44pt 小初36pt ...
- Monkey测试记录
配置环境变量,不然用不了adb命令 path这里也一样配置一下 命令的各种意思百度一下看看也就知道了 看到一篇博客推荐的一种测试命令,我也直接拿来用了 adb shell monkey -p 你的包名 ...
- <5>Python的uwsgi web服务器
一.是什么? uWSGI是web服务器,用来部署线上web应用到生产环境.uWSGI实现了WSGI协议.uwsgi协议.http协议.WSGI(Web Server Gateway Interface ...
- ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...
- ASP.NET没有魔法——ASP.NET MVC IoC代码篇
上一篇文章主要以文字的形式介绍了IoC及其在ASP.NET MVC中的使用,本章将从以下几点介绍如何使用代码在ASP.NET MVC中实现依赖注入: ● AutoFac及安装 ● 容器的创建 ● 创建 ...
- Go 语言笔记
Go 语言笔记 基本概念 综述 Go 语言将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平衡. 设计者通过 goroutine 这种轻量级线程的概念来实现这个目标,然后通过 ch ...
- python3 shell 中添加清屏
在windows中: 安装目录 \Lib( D:\Python37\Lib) 中添加 ClearWindow.py 文件,文件内容: """ Clear Window ...
- ueditor富文本编辑器使用百度地图自定义动态地图组件及兼容https及http协议
ueditor富文本编辑器默认支持百度地图组件,但是如果导入动态地图后会加很多默认的地图组件在上面.如果需要自定义动态地图的组件则需要修改ueditor特定的html. ueditor百度地图组件所在 ...
- @EnableWebMvc,WebMvcConfigurationSupport,WebMvcConfigurer和WebMvcConfigurationAdapter区别
@EnableWebMvc是什么 直接看源码,@EnableWebMvc实际上引入一个DelegatingWebMvcConfiguration. @Retention(RetentionPolicy ...