所以我想说我有一些包含一些字符串列的Pandas DataFrame:
Animal Name Age ...
Cat Fluffy 2 ...
Dog Denton 3 ...
我想在我的训练模型中输入Animal列(带有一组已知的值)(用于线性回归)。我查看了以下选项:
tf.feature_column.categorical_column_with_vocabulary_list
但似乎您将其与tf.feature_column.make_parse_example_spec
和协议缓冲区一起使用。tf.one_hot
听起来似乎有所帮助,但示例代码并没有帮助我理解。或者我应该自己写一些东西来将字符串转换为数字/布尔数据?
答案 0 :(得分:0)
您可以使用tf.feature_column.input_layer
功能创建输入张量。首先,必须将分类列包装为指示符或嵌入列。
示例:
# Create columns
vocab_list = ['a','b','c','d']
letter_column = tf.feature_column.categorical_column_with_vocabulary_list(
key="letter",
vocabulary_list=vocab_list)
embedded_column = tf.feature_column.embedding_column(letter_column, 8)
indicator_column = tf.feature_column.indicator_column(letter_column)
# Create features and use input_layer to get a tensor
features = {'letter': ['c']}
inp = tf.feature_column.input_layer(features,[embedded_column, indicator_column])
# Print value of inp
with tf.Session() as s:
s.run([tf.global_variables_initializer(),
tf.local_variables_initializer(),
tf.tables_initializer()])
print(s.run(inp))
输出(前8个数字可能会有所不同):
[[ 0.29994071 -0.07036652 -0.23166095 0.0681599 -0.07477489 -0.25384274
-0.31568974 -0.09161812 0. 0. 1. 0. ]]
inp
是一个有12个元素的张量。前8是从embedded_column
(可训练)计算的嵌入,最后4是来自indicator_column
的值的多热表示。
答案 1 :(得分:0)
tf.feature_column命名空间可以如下忽略:
使用熊猫自动将字符串列编码为数值。原始数据框中的类别列将具有属性 cat.codes 。您可以创建一个新的pandas列,然后将这些cat.code复制到其中。新列将是一个数字列,并填充了神经网络所需的数字。
使用如下代码查找类别列,并创建新列:
//now fetching the response from the yt api again and again
setInterval(() =>
...