csv文件读取数据

TensorFlow csv文件读取数据

即如何从 CSV 文件中读取数据并在训练之前对数据进行预处理
在这里插入图片描述

tensorflow读取csv文件的过程
  1. 导入所需的模块并声明全局变量
import tensorflow as tf
#全局变量
data_file='boston_hosing.csv'
batch_size=10
num_features=14
  1. 定义一个将文件名作为参数的函数,并返回大小等于 BATCH_SIZE 的张量:
def data_generator(filename):
	'''
	Generates Tensors in batches of size batch_size.
	Args:String Tensor
	Filename from which data is to be read
	Returns:Tensors
	feature_batch and label_batch
	'''
  1. 定义 f_queue 和 reader 为文件名:
f_queue=tf.train.string_input_producter(filename)
reader=tf.TextLineReader(skip_header_lines=1)
#跳过第一行
_,value=reader.read(f_queue)

  1. 这里指定要使用的数据以防数据丢失。对 .csv 解码并选择需要的特征。例如,选择 RM、PTRATIO 和 LSTAT 特征:
record_defaults=[[0.0]for_in range(num_features)]
data=tf.decode_csv(value,record_defaults=record_defaults)
features=tf.stack(tf.gather_nd(data,[[5],[10],[23]]))
label=data[-1]
  1. 定义参数来生成批并使用 tf.train.shuffle_batch() 来随机重新排列张量。该函数返回张量 feature_batch 和 label_batch:
#
dequeuemin_after_dequeue=10*betch_size
#
capacity=20*betch_size
#
feature_batch,label_batch=tf.train.shuffle_batch([features,label],BATCH_SIZE=betch_size,capacity=capacity,min_after_dequeue=min_after_dequeue)
return feature_batch,label_batch
  1. 这里定义了另一个函数在会话中生成批:
def generate_data(feature_batch,label_batch):
	with tf.Session() as sess:
	#
		coord=tf.train.Coordinator()
		threads=tf.train.start_queue_runners(coord=coord)
for _ in range(5):   #
	features,labels=sess.run([feature_batch,label_batch])
	print(features,''HI'')
coord.request_stop()
coord.join(threads)
		
  1. 使用这两个函数得到批中的数据。这里,仅打印数据;在学习训练时,将在这里执行优化步骤:
if _name_=='_main_':
	feature_batch,label_batch=data_generator([DATA_FILE])
	generate_data(feature_batch,label_batch)
tensorflow csv 数据处理

用 TensorFlow 控制操作和张量来对数据进行预处理。例如,对于波士顿房价的情况,大约有 16 个数据行的 MEDV 是 50.0。在大多数情况下,这些数据点包含缺失或删减的值,因此建议不要考虑用这些数据训练。可以使用下面的代码在训练数据集中删除它们:

condition=tf.equal(data[13],tf.constant(50.0))
data=tf.where(condition,tf.zeros(num_features)),data[:]

这里定义了一个张量布尔条件,若 MEDV 等于 50.0 则为真。如果条件为真则可使用 TensorFlow tf.where() 操作赋为零值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值