def get_dataset(file_path, **kwargs):
dataset = tf.data.experimental.make_csv_dataset(
file_path,
batch_size=5, # Artificially small to make examples easier to show.
label_name=LABEL_COLUMN,
na_value="?",
num_epochs=1,
ignore_errors=True,
**kwargs)
return dataset
CSV_COLUMNS = ['survived', 'sex', 'age', 'n_siblings_spouses', 'parch', 'fare', 'class', 'deck', 'embark_town', 'alone']
TRAIN_DATA_URL = "https://storage.googleapis.com/tf-datasets/titanic/train.csv"
train_file_path = tf.keras.utils.get_file("train.csv", TRAIN_DATA_URL)
temp_dataset = get_dataset(train_file_path, column_names=CSV_COLUMNS)
是否可以直接规范化temp_dataset ,而无需将数据导出到其他数据库进行进一步操作? (某些列为数字列,另一些为类别列)
答案 0 :(得分:0)
我首先要使用Pandas读取CSV文件。使用map
函数对列进行标准化,
# Read the CSV
df = pd.read_csv( 'train.csv' )
# Normalize the "temp" column
df[ 'temp' ] = df[ 'temp' ].map( lambda x : x / SOME_NUMBER )
现在,保存修改后的CSV,
df.to_csv( 'data.csv' , sep='\t', encoding='utf-8')
现在,将此CSV文件传递给make_csv_dataset()
,
dataset = tf.data.experimental.make_csv_dataset(
'data.csv',
batch_size=5, # Artificially small to make examples easier to show.
label_name=LABEL_COLUMN,
na_value="?",
num_epochs=1,
ignore_errors=True,
**kwargs)
这可能是一个简短的技巧,可以标准化单个列,然后将其伪造为tf.data.Dataset
。有关更多详细信息,请参阅此doc。