- 1. 数据加载
- 1.1 Numpy数据
- 1.2 CSV 格式
- 1.2 使用pandas读取数据
- 1.2.1 加载数据集
- 1.2.1 使用tf.data.Dataset 读区数据
使用 tf.data.Dataset 加载Numpy数据,将(feature_array,label_array)两个数组作为元组传递给tf.data.Dataset.from_tensor_slices以创建tf.data.Dataset
BATCH_SIZE=64 SHUFFLE_BUFFER_SIZE=1000 # 构建训练集、测试集迭代器 train_dataset=tf.data.Dataset.from_tensor_slices((train_examples,train_labels)). shuffle(SHUFFLE_BUFFER_SIZE).batch(BATCH_SIZE) # 打乱和批次化数据集 test_dataset=tf.data.Dataset.from_tensor_slices((test_examples,test_labels)).batch(BATCH_SIZE)1.2 CSV 格式
使用 tf.data.experiment.make_csv_dataset方法将csv格式的数据加载到tf.data.Dataset
- 如果使用的文件第一行不包含列名,那么需要将列名通过字符串列表传给make_csv_dataset函数的column_names参数。
- 如果你需要忽略数据集中的某些列,创建一个包含你需要使用的列的列表,然后传给构造器(可选)的参数select_columns
- label列需要显示制定,如制定LABEL_COLUMN='label'
import tensorflow as tf
TRAIN_DATA_URL = "./train.csv"
TEST_DATA_URL = "./eval.csv"
# 对于包含模型需要预测的值的列是你需要显式指定的
LABEL_COLUMN = 'survived'
LABELS = [0, 1]
def get_dataset(file_path):
dataset = tf.data.experimental.make_csv_dataset(
file_path,
batch_size=12, # 为了示例更容易展示,手动设置较小的值
label_name=LABEL_COLUMN,
na_value="?",
num_epochs=1,
ignore_errors=True)
return dataset
raw_train_data = get_dataset(train_file_path)
raw_test_data = get_dataset(test_file_path)
1.2 使用pandas读取数据
1.2.1 加载数据集
import pandas as pd
import numpy as np
import os
import tensorflow as tf
from tensorflow.keras import layers
train = pd.read_csv("data/train.csv",
names=["Length", "Diameter", "Height", "Whole weight", "Shucked weight","Viscera weight", "Shell weight", "Age"])
# 分离样本的features和labels
features = train.copy()
labels = features.pop('Age').values # series 一定要转换为array才能输入模型
features=np.array(features)
将所有的特征打包成一个numpy 数组,dataframe 转换为array的三种方法:
- df.values
- df.as_matrix()
- np.array(df)
# 方法1:
numeric_dataset = tf.data.Dataset.from_tensor_slices((numeric_features.values, target))
# 方法2:
numeric_dict_ds = tf.data.Dataset.from_tensor_slices((dict(numeric_features),target))
for row in numeric_dataset.take(3):
print(row)
# 构建batch
numeric_batches = numeric_dataset.shuffle(1000).batch(BATCH_SIZE)



