Dalam dokumen ini kami menjelaskan cara melakukan transformasi umum dengan tf.transform.
Kami berasumsi Anda telah membuat beam pipeline sesuai dengan contoh, dan hanya menjelaskan apa yang perlu ditambahkan ke preprocessing_fn
dan kemungkinan model.
Menggunakan data String/Kategori
preprocessing_fn
berikut akan menghitung kosakata atas nilai fitur x
dengan token dalam urutan frekuensi menurun, mengonversi nilai fitur x
ke indeksnya dalam kosakata, dan terakhir melakukan pengkodean one-hot untuk keluarannya.
Hal ini umum terjadi misalnya dalam kasus penggunaan di mana fitur label adalah string kategorikal. Pengkodean one-hot yang dihasilkan siap untuk pelatihan.
def preprocessing_fn(inputs):
integerized = tft.compute_and_apply_vocabulary(
inputs['x'],
num_oov_buckets=1,
vocab_filename='x_vocab')
one_hot_encoded = tf.one_hot(
integerized,
depth=tf.cast(tft.experimental.get_vocabulary_size_by_name('x_vocab') + 1,
tf.int32),
on_value=1.0,
off_value=0.0)
return {
'x_out': one_hot_encoded,
}
Imputasi berarti untuk data yang hilang
Dalam contoh ini, fitur x
adalah fitur opsional, direpresentasikan sebagai tf.SparseTensor
di preprocessing_fn
. Untuk mengonversinya menjadi tensor padat, kami menghitung meannya, dan menetapkan mean menjadi nilai default jika mean tersebut hilang dari sebuah instance.
Tensor padat yang dihasilkan akan berbentuk [None, 1]
, None
mewakili dimensi batch, dan untuk dimensi kedua akan menjadi jumlah nilai x
yang dapat dimiliki per instance. Dalam hal ini adalah 1.
def preprocessing_fn(inputs):
return {
'x_out': tft.sparse_tensor_to_dense_with_shape(
inputs['x'], default_value=tft.mean(x), shape=[None, 1])
}