我有一个Tensorflow数据集:
data = tf.data.experimental.make_csv_dataset(r"data.tsv.gz",
field_delim="\t",
compression_type="GZIP",
batch_size=1000,
label_name="Y",
num_epochs=1)
并且我想规范列X1,我尝试过这种方式:
columns = []
x1 = tf.feature_column.numeric_column('X1', normalizer_fn=lambda x: (x - xMean) / xStd)
columns.append(x1)
l = tf.keras.layers.DenseFeatures(columns)
nn = tf.keras.Sequential()
nn.add(l)
nn.compile(optimizer="Adam", loss="binary_crossentropy", metrics=[tf.keras.metrics.AUC(name='auc')])
nn.fit(data, epochs=5)
但是我不知道如何计算均值和标准差。如何从数据集中获取一列并计算均值和标准差?也许张量流中有一些归一化功能?
答案 0 :(得分:0)
到目前为止,您可以使用一些变通方法来实现此目的,方法是先计算均值和偏差,然后使用tf.data.experimental.make_csv_dataset
加载CSV数据。
下面是代码段。
import tensorflow as tf
import pandas as pd
import numpy as np
df = pd.read_csv("/content/titanic.csv")
def normalize(data):
Numeric_column = ["Age"]
x = df[Numeric_column]
MEAN = np.mean(x)
STD = np.std(x)
return (data-MEAN)/STD
df["normalized_age"] = df["Age"].apply(normalize)
#save the normalized dataframe to csv file
df.to_csv("normalized_data.csv",sep='\t',encoding='utf-8')
现在使用tf.data.experimental.make_csv_dataset