第三阶段也是实战阶段,不同于前两个阶段的填空而是实打实的预测分析
题目会给出8000张照片数据,其中6000作为训练集而另外2000张作位测试集,通过对6000张的训练来预测2000的结果,并将结果输出到csv文件中,提交检验成功
我们之前学了一阵子的TensorFlow,对神经网络的搭建有的大体的认识,而且在网上也轻松找到对应的模板,我们打算根据本题修改模板使其为之所用
在与同学的一起努力之下,初步代码已经完成,我们又进行修改和完善,最后成型(见如下代码)

import os
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras
import cv2
import keras
from keras import datasets, layers, modelsos.environ['KERAS_BACKEND'] = 'tensorflow'js_path = '/home/kesci/input/weather_image1552/train.json'
test_path = '/home/kesci/input/weather_image1552/测试集/'
train_path = '/home/kesci/input/weather_image1552/训练集/'
import json
testdata=400#测试集数量
path = '/home/kesci/input/weather_image1552/train.json'
with open(path, 'r') as f:label = json.load(f)def read_image(paths):os.listdir(paths)filelist = []for root, dirs, files in os.walk(paths):for file in files:if os.path.splitext(file)[1] == ".jpg":filelist.append(os.path.join(root, file))return filelistdef im_resize(paths):for filename in paths:with Image.open(filename) as im:newim = im.resize((128, 128))newim.save(filename)def im_array(paths):M = []for filename in paths:im = Image.open(filename)im_L = im.convert("L")im_L = im_L.resize((128, 128))Core = im_L.getdata()arr1 = np.array(Core, dtype='float32') / 255.0list_img = arr1.tolist()M.extend(list_img)return M# mp={'cloudy':0,'sunny':1}
dict_label={0:'1',1:'0'}
mp = {'sunny': 0, 'cloudy': 1}
# label=[0]*len(filelist_1)+[1]*len(filelist_2)
js_pic = []
js_lab = []
cnt = 0
for key in label:if (cnt < testdata):js_pic.append(key)js_lab.append(mp[label[key]])cnt += 1
train_lables = np.array(js_lab)tot = []
cnt=0
for key in label:if (cnt < 2000):tot.append(key)cnt += 1features = []
filelist = []
for i in range(len(js_pic)):img = cv2.imread(train_path + js_pic[i], 0)#print(train_path + js_pic[i])filelist.append(train_path + js_pic[i])
trainfilelist = filelist
M = []
M = im_array(trainfilelist)
train_images=np.array(M).reshape(len(trainfilelist),128,128)train_images = train_images[ ..., np.newaxis ]
#print(train_images)
# X = np.array(list(zip(x1,x2))).reshape(len(x1), 2)
# train_images=np.array(M)
# train_images = train_images[ ..., np.newaxis ]# 神经网络
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(128, 128, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(2, activation='softmax'))
model.summary()
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])model.fit(train_images, train_lables, epochs=10)
# ,batch_size=400
# print(model.evaluate(train_images,train_lables))a=[]
# test = r'C:\Users\carvi\Desktop\人工智能\天气识别\test'
filelist = read_image(test_path)
im_resize(filelist)
for i in range(2000):im = Image.open(test_path + tot[i])#print(test_path + tot[i])im_L = im.convert("L")Core = im_L.getdata()arr1 = np.array(Core, dtype='float32') / 255.0list_img = arr1.tolist()images = np.array(list_img).reshape(-1, 128, 128, 1)predictions_single = model.predict(images)#print("预测结果为:", dict_label[np.argmax(predictions_single)])#print("预测结果为:", np.argmax(predictions_single))a.append(np.argmax(predictions_single))#print(predictions_single)np.savetxt('/home/kesci/input/new.csv',a,delimiter = ',')
print(a)
"""
for filename in filelist:im = Image.open(filename)#print(filename)im_L = im.convert("L")Core = im_L.getdata()arr1 = np.array(Core, dtype='float32') / 255.0list_img = arr1.tolist()images = np.array(list_img).reshape(-1, 128, 128, 1)predictions_single = model.predict(images)print("预测结果为:", np.argmax(predictions_single))print(predictions_single)
"""



但是对我们来说还有个巨大的麻烦,就是如何输出数据结果到csv文件,这可属实困扰到我,我查阅大量资料,但是最终效果总是不能让我满意,最后我想到一个方法:将答案结果输入到一个数组里,然后放在txt文件中,然后我再写另一个程序读取txt文件,然后输出到csv文件中,通过中折的方法达到我的目的。
输出程序如图

import os
import numpy as np
import  pandas as pd
# !/usr/bin/python
# coding = UFT-8
data = pd.read_table('C:\\Users\DELL\Desktop\活动\人工智能\图像\ceshi.txt',sep='\n')
#header=None:没有每列的column name,可以自己设定
#encoding='gb2312':其他编码中文显示错误
#sep=',': ','隔开
data1 = pd.DataFrame(data)
data1.to_csv('C:\\Users\DELL\Desktop\活动\人工智能\图像\data1.csv',sep='\n',index=False)
#data1 = pd.DataFrame(arr1, header = False, index = False) # header:原第一行的索引,index:原第一列的索引
#data1.to_csv('C:\\Users\DELL\Desktop\活动\人工智能\图像\data1.csv\data1.csv',sep='\n')

但是提交最终结果后发现得分只有0.5,实属懵逼了。我辛辛苦苦做了一阵子争取率只有一半,和刚开始蒙的一样,(我一开始把结果全部预测为1,就是纯瞎蒙的答案提交上去,看看能得到多少分,没想到是0.5)
还有个问题就是,按理说训练集越大正确率越高,但是实际是我6000个数据的训练正确率只有百分之50多,但是400个训练集却有百分之八十多,有时甚至到百分之九十几,搞不清为什么

最终提交的csv文件如图


继续搞吧,唉,路还长着呢~

天气情况图像分类练习赛 第三阶段(赛中感)相关推荐

  1. 可以实获取天气情况的html,电脑桌面上显示天气情况的实现方法

    以前看天气预报都是等着每天的新闻联播,稍有点事情耽搁了就不知道明日的天气了.自从有了网络后一切都方便多了,只要百度搜索或者在QQ上随时可以查看天气情况.相比之前来说这已经是非常便利的吧,但人是永远不知 ...

  2. java 高并发第三阶段实战_JAVA多线程编程实战视频-第三阶段(共80节)

    高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解 高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍 高并发编程第三阶段03讲 利用CAS构造 ...

  3. 天气情况(思维,dp思想)

    天气情况 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. java 高并发第三阶段实战_Java 高并发第三阶段实战---Java并发包深入解析与使用详解...

    第三阶段的课程主要围绕着Java并发包的使用,展开详细的介绍,主要内容有1.原子包源码剖析,2.并发包工具类详细介绍,3.线程服务以及Future和callable等详细介绍,4.高并发容器和阻塞容器 ...

  5. java第三阶段源代码_有效Java第三版的源代码已更新为使用较新的功能

    java第三阶段源代码 那些已经阅读了有效Java 第三版的人可能知道与该书相关的源代码可以在GitHub上获得 . jbloch / effective-java-3e-source-code项目拥 ...

  6. WEB_面试题_第三阶段

    第三阶段面试题 一.JavaScript高级 1. 判断以下程序的输出结果: var age=100; function test(){ this.age=50; return function(){ ...

  7. python天气预报官网_python 实现对天气预报官网未来一周七天的天气情况抓取

    通过HTMLPaser和urlib模块对网页进行抓取并分析 实现步骤: 1.自定义MYHTMLParser类 2.实例化类并访问天气预报官网 3.抓取关键数据 4.对数据进行切片处理并输出字典 fro ...

  8. 需求获取的三阶段:需求背景、需求调研、需求分析 (2)

    完成了客户背景的调研准备后,就进入到了与客户面对面进行需求调研的阶段,事前要搞清楚:调研什么.怎么调研.向谁调研.调研成果如何收集.如何记录,还有调研中采用什么样的流程.方法,还要搞清楚:调研到什么程 ...

  9. Linux运维 第三阶段 (十八) varnish

    Linux运维 第三阶段 (十八) varnish 数据: 结构化数据,RDBMS: 非结构化数据,FS,存海量小文件,NAS.SAN.DFS可提供较好的性能: web cache: 程序具有局部性( ...

最新文章

  1. sh ndk-build.cmd command not found
  2. vs添加码云远程_项目git步骤,将项目托管到码云。git本地分支推送到远程分支...
  3. linux程序已经在后台运行冻结了_Linux 让程序在后台执行
  4. Lagom学习 四 CompletionStage
  5. shiro的集群动态权限更新
  6. 从ASP.NET Boilerplate v5 +到ABP框架的迁移
  7. CentOS下安装Tomcat并配置JRE
  8. Entity Framework 数据并发访问错误原因分析与系统架构优化
  9. r语言TeachingDemos包绘制黑白脸谱图
  10. Java锁--CyclicBarrier
  11. python建模与仿真控制系统_系统建模与仿真
  12. 电子设计竞赛控制组——完整旋转倒立摆程序
  13. 一文详解高精地图构建与SLAM感知优化建图策略
  14. 基于汽车运动学模型的LQR控制
  15. 计算机 360云盘删除,删除360云盘图标,教你win7系统删除360云盘图标教程
  16. AltiumDesigner14.3.X下载安装破解教程
  17. 计算机round是什么函数,round函数怎么用例子
  18. QQ号1941663132是一个诈骗
  19. Android中获取系统所认为的最小滑动距离TouchSlop
  20. 手机移动端视频全屏播放(兼容Android与iOS)

热门文章

  1. 别太贪婪,这些技能能让你一辈子满足
  2. 985硕博士:你为什么比我差?
  3. TensorFlow的这些骚操作你都知道吗?
  4. 每个程序员都应该知道的基础数论
  5. GitHub 2017 年度报告,最受欢迎的编程语言是?
  6. java enum优点_你需要关注的 Java Enum 枚举的几个细节
  7. java 图片压缩 base64_图片改变像素,宽高,Base64编码处理
  8. get+php+mysql_Apache+PHP+MySql 的安装及配置
  9. 双离合档把上按钮作用_英特尔展示双屏幕概念笔记本:带有双铰链
  10. java char short区别_java 彻底理解 byte char short int float long double