囚徒5.5_将给数字特征转化为数字特征

代码片段是TensorFlow中特征列(feature columns)的创建过程,用于处理分类和数值数据。这在构建机器学习模型时非常有用,特别是在使用TensorFlow的高级API如TF Estimator时。

这里是代码片段的解释和稍微修改后的版本:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from IPython.display import clear_output
from six.moves import urllib

import tensorflow.compat.v2.feature_column as fc

import tensorflow as tf
# Load dataset.
dftrain = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv') # training data
dfeval = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/eval.csv') # testing data
dftrain.head()
y_train = dftrain.pop('survived')
y_eval = dfeval.pop('survived')
# 分类特征列名
CATEGORICAL_COLUMNS = ['sex', 'n_siblings_spouses', 'parch', 'class', 'deck',
                       'embark_town', 'alone']
# 数值特征列名
NUMERIC_COLUMNS = ['age', 'fare']

feature_columns = []  # 特征列列表

# 为每个分类特征创建一个带有词汇表的分类特征列
for feature_name in CATEGORICAL_COLUMNS:
  # 从数据框中获取特征的唯一值列表
  vocabulary = dftrain[feature_name].unique()
  # 将分类特征列添加到特征列列表
  feature_columns.append(tf.feature_column.categorical_column_with_vocabulary_list(feature_name, vocabulary))

# 为每个数值特征创建一个数值特征列
for feature_name in NUMERIC_COLUMNS:
  # 将数值特征列添加到特征列列表,指定数据类型为tf.float32
  feature_columns.append(tf.feature_column.numeric_column(feature_name, dtype=tf.float32))

# 打印特征列列表
print(feature_columns)

请确保在运行这段代码之前,你已经有一个名为 dftrainpandas 数据框,并且它包含了所有在 CATEGORICAL_COLUMNSNUMERIC_COLUMNS 中指定的列。dftrain 应该包含用于训练模型的数据。

这段代码首先为分类特征创建特征列,使用 categorical_column_with_vocabulary_list,它需要一个特征名和该特征的所有可能值的列表(词汇表)。然后,为数值特征创建特征列,使用 numeric_column,它需要一个特征名和数据类型。

在TensorFlow中,特征列是一个非常强大的工具,可以帮助你将原始数据转换为模型可以使用的格式。

posted @ 2024-06-05 20:14  玩意  阅读(19)  评论(0)    收藏  举报