Transformasi Umum

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])
  }