Я пытаюсь обернуть голову вокруг ML и AI с помощью TensorFlow.На сайте есть пример проблемы, которая обсуждает обработку данных .CSV.Говорят, что данные .CVS были взяты из «Титаника» и по существу содержат категориальные и числовые функции, которые будут использоваться для маркировки пассажира как живого или мертвого.
Прежде всего, если кто-то знает или имеет какие-либо ресурсыили ссылки, в которых этот пример обсуждается более подробно, чем на веб-сайте TensorFlow , пожалуйста, не могли бы вы отослать меня к этому?
Во-вторых, к моему более важному вопросу.В этом примере используется метод, позволяющий упаковать отдельные числовые данные в один цифровой ключ при сохранении категориального столбца как есть.
Для этого используется следующая функция:
class PackNumericFeatures(object):
def __init__(self, names):
self.names = names
def __call__(self, features, labels):
numeric_freatures = [features.pop(name) for name in self.names]
numeric_features = [tf.cast(feat, tf.float32) for feat in numeric_freatures]
numeric_features = tf.stack(numeric_features, axis=-1)
features['numeric'] = numeric_features
return features, labels
Вышеприведенная функция вызывается так:
NUMERIC_FEATURES = ['age','n_siblings_spouses','parch', 'fare']
packed_train_data = raw_train_data.map(PackNumericFeatures(NUMERIC_FEATURES))
Выход packed_train_data
выглядит примерно так:
sex : [b'male' b'female' b'female' b'female' b'male']
class : [b'Third' b'First' b'Third' b'First' b'Third']
deck : [b'unknown' b'C' b'unknown' b'C' b'unknown']
embark_town : [b'Southampton' b'Cherbourg' b'Southampton' b'Southampton' b'Queenstown']
alone : [b'n' b'n' b'y' b'n' b'y']
numeric : [[22. 1. 0. 7.25 ]
[38. 1. 0. 71.2833]
[26. 0. 0. 7.925 ]
[35. 1. 0. 53.1 ]
[28. 0. 0. 8.4583]]
Вышеуказанный вывод получается при передаче одной партииданных (т. е. packed_train_data
) для функции:
def show_batch(dataset):
for batch, head in dataset.take(1):
for labels, value in batch.items():
print("{:20s}: {}".format(labels, value.numpy()))
примерно так:
show_batch(packed_train_data)
Я не понимаю, как работает функция map
для генерации этоговыход.В целом, я не понимаю, как вызов, содержащий функцию map
, взаимодействует с классом PackNumericFeatures(object)
.
Я знаю, что эта проблема специфична, но любая помощь будет признательна.Приветствия.