我正在尝试从this dataset创建my_feature_columns列表。我正在使用以下代码阅读它:
train = pd.read_csv(train_path, names=CSV_COLUMN_NAMES, header=0)
train = train.drop(['Name', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], axis=1)
train.fillna(0, inplace=True)
我只想使用“Pclass”、“Sex”和“Age”。由于 Sex
只有 2 个可能的值,因此我编写了以下代码:
my_feature_columns = [
tf.feature_column.numeric_column(key='Pclass'),
tf.feature_column.categorical_column_with_vocabulary_list(key="Sex", vocabulary_list=["male", "female"]),
tf.feature_column.numeric_column(key='Age'),
]
然后我实例化分类器:
classifier = tf.estimator.DNNClassifier(
feature_columns=my_feature_columns,
hidden_units=[10, 10],
n_classes=2)
但是我得到了
ValueError: Items of feature_columns must be a _DenseColumn. You can wrap a categorical column with an embedding_column or indicator_column. Given: _VocabularyListCategoricalColumn(key='Sex', vocabulary_list=('male', 'female'), dtype=tf.string, default_value=0, num_oov_buckets=0)
我对 TensorFlow 完全陌生,我不知道发生了什么。我将感谢所有类型的帮助,提前致谢,并对我的英语感到抱歉。
最佳答案
再读一遍the documentation我意识到
Indicator columns and embedding columns never work on features directly
所以我更正了我的代码:
categorical_column = tf.feature_column.categorical_column_with_vocabulary_list(key="Sex", vocabulary_list=["male", "female"], default_value=0)
my_feature_columns = [
tf.feature_column.numeric_column(key='Pclass'),
tf.feature_column.indicator_column(categorical_column),
tf.feature_column.numeric_column(key='Age')
]
而且效果非常好!
关于tensorflow - feature_columns 的项目必须是 _FeatureColumn 给定 : _VocabularyListCategoricalColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48614819/