תמורות נפוצות

במסמך זה אנו מתארים כיצד לבצע טרנספורמציות נפוצות עם tf.transform.

אנו מניחים שכבר בנית את צינור הקורה בהתאם לקווי הדוגמאות, ומתארים רק מה צריך להוסיף ל- preprocessing_fn ואולי למודל.

שימוש במחרוזת/נתונים קטגוריים

ה- preprocessing_fn הבא יחשב אוצר מילים על הערכים של תכונה x עם אסימונים בסדר תדר יורד, ימיר ערכי תכונה x לאינדקס שלהם באוצר המילים, ולבסוף יבצע קידוד חד-חם עבור הפלט.

זה נפוץ למשל במקרים שבהם תכונת התווית היא מחרוזת קטגורית. הקידוד החם אחד שנוצר מוכן לאימון.

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,
  }

זקיפה ממוצעת עבור נתונים חסרים

בדוגמה זו, תכונה x היא תכונה אופציונלית, המיוצגת כ- tf.SparseTensor ב- preprocessing_fn . על מנת להמיר אותו לטנזור צפוף, אנו מחשבים את הממוצע שלו, ומגדירים את הממוצע להיות ערך ברירת המחדל כאשר הוא חסר במופע.

הטנזור הצפוף שיתקבל יהיה בעל הצורה [None, 1] , None מייצג את ממד האצווה, ועבור הממד השני זה יהיה מספר הערכים שיכולים להיות ל- x בכל מופע. במקרה הזה זה 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])
  }