CH6 从文件中载入训练数据
- 掌握用文本文件和CSⅴ文件准备训练数据
- 掌握对数据列和非数据列的处理
- 掌握从文件中加载训练数据
用文件准备训练数据
纯文本文件
- 纯文本文件(.txt):只保存文本信息的文件
- 相比Word、PDF等格式文件较小
- 相比二进制格式存储数据文件稍大(易读性较好)
数据的数字化

数据格式

训练数据的格式

数据整理
小明,90,80,70,0
小红,98,95,87,1
小王,99,99,99,1
小华,80,85,90,0
非数字项的清理

训练数据的一般格式
纯文本文件,文件编码是 UTF-8,Excel 软件,识别 CSV 文件为表格并编辑。
CSV( Comma-Separated Values)格式指的是文件中每行是一条数据,每行的多个数值间用逗号分隔开,例:
1,2,3,4
3.25,9.5,8.7,1.34
CSV 文件中一般每行的数据项数应该是一样的
CSV 文件可以被 Excel 软件识别为表格并编辑
CSV 文件处理数据
把文件另存为 data.csv。

加载文件中的训练数据
import numpy as np
wholeData = np.loadtxt('data.txt', delimiter=',', dtype=np.float32)
print(wholeData)
loadtxt 函数的 3 个参数:
- 要读取的文件名
- 数据项之间用什么字符隔开
- 读取的数据类型
从非当前目录加载训练数据,使用绝对文件路径。
np.loadtxt('C:\ml\data.txt', delimiter=',', dtype=np.float32)
舍弃非数字列
import numpy as np
import pandas as pd
fileData = pd.read_csv('data.csv', dtype=np.float32, header=None, usecols=(1,2,3,4))
wholeData = fileData.as_matrix()
print(wholeData)
usecols=(1,2,3,4)只保留第 1、2、3、4 列,即丢弃第 0 列(注意排序是从0开始)- fileData.as_matrix() 函数:将表格数据转换为二维数组
非数字列与数字列的转换
90,80,70,否
98,95,87,是
99,99,99,是
80,85,90,否
import numpy as np
import pandas as pd
fileData = pd.read_csv('data.csv', dtype=np.float32, header=None, converters={(3):lambda s:1.0 if s=='是' else 0.0})
wholeData = fileData.as_matrix()
print(wholeData)
- 使用 converter 来转换第 3 列为 0 或 1 的数字。
- lambda - 匿名函数
90.80,70,0
98,95,87,1
99,99,99,1
80,85,90,0
把序号为 1 的列(第 2 列)的数字都减去 10。
fileData = pd.read_csv('data.csv', dtype=np.float32, header=None, converters={(1):lambda s:float(s)-10})
把序号为 2 的列(第三列)都变成 0。
fileData = pd.read_csv('data.csv', dtype=np.float32, header=None, converters={(2):lambda s:0,(3):lambda s:1})
分拆数据喂给神经网络
# ...
fileData = pd.read_csv('data.csv', dtype=np.float32, header=None)
wholeData = fileData.as_matrix()
rowCount = int(wholeData.size/wholeData[0].size)
# ...
for i in range(2):
for j in range(rowCount):
result = sess.run(
[train, x, yTrain, wn, b, n2, y, loss],
feed_dict={x:wholeData[j][0:3], yTrain:wholeData[j][3]}
)
print(result)
二维数组的第一维表示行,第二维代表列,wholeData[j][0:3] 表示第j行的前3个数字组成的向量。wholeData[j][3] 表示第j行的第4个数
字,是一个标量。

练习
尝试用文本文件准备一个每行有 5 项数据的训练数据集,并读取其中的内容,同时舍弃掉第 3 列的数据。
import numpy as np
import pandas as pd fileData = pd.read_csv('dataq.csv', dtype=np.float32, header=None, usecols=(0, 1, 2, 4))
wholeData = fileData.as_matrix()
print(wholeData)
将上一题中准备的训练数据读取后,将第 3 列改为一个随机数而非丢弃。
import numpy as np
import pandas as pd
import random fileData = pd.read_csv('dataq.csv', dtype=np.float32, header=None, converters={(3): lambda s: random.random()})
wholeData = fileData.as_matrix()
print(wholeData)
CH6 从文件中载入训练数据的更多相关文章
- Tensorflow 从文件中载入训练数据
本节包含: 用纯文本文件准备训练数据 加载文件中的训练数据 一.用纯文本文件准备训练数据 1.数据的数字化 比如,“是” —— “1”,“否” —— “0” “优”,“中”,“差” —— 1 2 3 ...
- 从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中
//从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中 //作者:sandy //时间:2015-10-10 #inclu ...
- 代码实现将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出
package com.looaderman.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...
- api进阶Day2(低级流)文件流的输出流、读取流。向文件中写入文本数据、读取文件中的字符串、用lambda表达式创建文件过滤器。
文件流:输出流: package io; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...
- python从shp文件中读取经纬度数据
python从shp文件中读取经纬度数据 没有接触过GIS的人来说shp文件很陌生而且很难打开查看,好在python可以从中提取出自己想要的数据 pyshp库的安装 python的pyshp库可以实现 ...
- java读取url中json文件中的json数据
有时候需要远程从其他接口中获取json数据,如果遇到返回的json数据是一个文件而不直接是数据,那么可以通过以下方法进行读取: /** * 从数据接口获取到数据 * @return * @throws ...
- Jmeter实现从csv文件中随机读取数据
一.需求 参数放在csv文件中,文件格式如下,需求每次从文件中随机读取一行数据. 二.步骤 1.在csv文件中新增加一列,pl 2.新增一个配置原件-随机数,设置如下: 50是文件数据的行数 3.新增 ...
- python数据可视化-matplotlib入门(6)-从文件中加载数据
前几篇都是手动录入或随机函数产生的数据.实际有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化. 比如之前python基础(12)介绍打开文件的方式,可直接读取文件中的数据,扩大了我们的数 ...
- vue-cli项目 build后请求本地static文件中的 json数据,路径不对,报错404处理方法
vue-cli 项目 build 出错点: 1,build生成dist 放在tomcat上 报错,不显示内容 解决办法: config>index.js===>assetsPublic ...
- python解析pcap文件中的http数据包
使用scapy.scapy_http就可以方便的对pcap包中的http数据包进行解析 scapy_http可以在https://github.com/invernizzi/scapy-http下载, ...
随机推荐
- TGCTF-misc全解
TGCTF-misc方向wp next is the end 下载压缩包,拉出第一层文件夹,直接嵌套读取内容找flag import os def is_last_level_dir(director ...
- linux 的 Docker 配置(版本24.04)
linux 的docker配置(版本24.04) 这里默认是server版本的, 个人感觉好用,资源消耗少 1.配置ssh连接 个人习惯用ssh连接使用 (如果失败,先配置下一步的换源) sudo a ...
- Springboot笔记<5>静态资源访问
静态资源访问 静态资源目录 请求进来,先去找Controller看能不能处理.不能处理的所有请求又都交给静态资源处理器.静态资源也找不到则响应404页面.如果静态目录中存在a.png,访问localh ...
- CSS设置多余文字自动省略
在写界面的过程中,常用到文字排版的问题,多余文字需要自动省略为".....",这里分享一个自己用到的方法,效果如下图: 使用方法: 在需要省略的文字css样式中写入如下代码即可: ...
- 重要通知:spring-ai-hunyuan 已兼容 Spring AI 稳定版!
最近有小伙伴在使用 mvn 仓库中的 1.0.0-M6 版本时,已经遇到一些兼容性问题和未知异常.本着更好地维护 spring-ai-hunyuan 仓库,我这几天熬夜更新并整理了对 Spring A ...
- C# WinForm 多线程启动提示 DragDrop 注册失败
https://blog.csdn.net/educast/article/details/7954242 这种情况是由多线程引起的,在项目中遇到过这样的情况,查了一下网上的解决方法...汗,都不行. ...
- iphone/ios14越狱安装screendump
必须是ios14 因为screendump经过大神修复后最新版本(作者起了个名字叫做screendumpfix14)只支持到ios14. 点击这里 查看大神原帖子. 安装Sileo商店 如果已经存在 ...
- vite vue3 全局批量注册组件
方式1-使用import.meta.glob 同webpack的 require.context一样,这个是vite提供的一个方法 import { createApp, defineAsyncCom ...
- emplace_back VS push_back
简介 一直说, emplace_back 比 push_back 快, 我不信, 哈哈~~ 参考链接 https://blog.csdn.net/yockie/article/details/5267 ...
- ETL的全量和增量模式
在当今信息爆炸的时代,数据管理已经成为各行各业必不可少的一环.而在数据管理中,全量与增量模式作为两种主要的策略,各自具有独特的优势和适用场景,巧妙地灵活运用二者不仅能提升数据处理效率,更能保障数据的准 ...