tensorflow-单热编码时如何保留列标签名称?
tensorflow- how to keep column label name when one-hot-encoding?
当试图获取列的标签以便使用 tensorflow
对其进行热编码时:
import tensorflow as tf
import pandas as pd
import numpy as np
# some data
d={'column1':['a', 'b', 'c', 'd'], 'column2':['e', 'f', 'g', 'h'], 'column3':[1, 2, 3, 4]}
# convert from pandas df to TensorSliceDataset
df=pd.DataFrame(d)
ds = tf.data.Dataset.from_tensor_slices(dict(df))
# convert to specific feature_column
just_types = tf.feature_column.categorical_column_with_vocabulary_list(
'column1', ds.column1.unique())
# apply one hot encoding
type_one_hot = feature_column.indicator_column(just_types)
type_one_hot
出现下一个错误:
AttributeError: 'TensorSliceDataset' object has no attribute 'column1'
我知道 pandas
可以做到这一点,但是否可以在 tensorflow
中获取数据框,然后再次将其更改为 pandas使用 tensorflow
? :
# column1_a column1_b column_c column_d
# 1 0 0 0
# 0 1 0 0
# 0 0 1 0
# 0 0 0 1
在我看来,在这个例子中使用函数 from_tensor_slices 有点矫枉过正。只是指出两个功能
import tensorflow_datasets as tfds
df=pd.DataFrame(data)
ds = tf.data.Dataset.from_tensor_slices(dict(df))
# going back to pandas DataFrame
df_reversed = tfds.as_dataframe(ds)
和类别编码选项
layer = tf.keras.layers.CategoryEncoding(num_tokens=4, output_mode="one_hot")
layer([1,2,0, 3])
当试图获取列的标签以便使用 tensorflow
对其进行热编码时:
import tensorflow as tf
import pandas as pd
import numpy as np
# some data
d={'column1':['a', 'b', 'c', 'd'], 'column2':['e', 'f', 'g', 'h'], 'column3':[1, 2, 3, 4]}
# convert from pandas df to TensorSliceDataset
df=pd.DataFrame(d)
ds = tf.data.Dataset.from_tensor_slices(dict(df))
# convert to specific feature_column
just_types = tf.feature_column.categorical_column_with_vocabulary_list(
'column1', ds.column1.unique())
# apply one hot encoding
type_one_hot = feature_column.indicator_column(just_types)
type_one_hot
出现下一个错误:
AttributeError: 'TensorSliceDataset' object has no attribute 'column1'
我知道 pandas
可以做到这一点,但是否可以在 tensorflow
中获取数据框,然后再次将其更改为 pandas使用 tensorflow
? :
# column1_a column1_b column_c column_d
# 1 0 0 0
# 0 1 0 0
# 0 0 1 0
# 0 0 0 1
在我看来,在这个例子中使用函数 from_tensor_slices 有点矫枉过正。只是指出两个功能
import tensorflow_datasets as tfds
df=pd.DataFrame(data)
ds = tf.data.Dataset.from_tensor_slices(dict(df))
# going back to pandas DataFrame
df_reversed = tfds.as_dataframe(ds)
和类别编码选项
layer = tf.keras.layers.CategoryEncoding(num_tokens=4, output_mode="one_hot")
layer([1,2,0, 3])