feature_columns 的项目必须是 _FeatureColumn 给定:_VocabularyListCategoricalColumn
Posted
技术标签:
【中文标题】feature_columns 的项目必须是 _FeatureColumn 给定:_VocabularyListCategoricalColumn【英文标题】:Items of feature_columns must be a _FeatureColumn Given: _VocabularyListCategoricalColumn 【发布时间】:2018-02-05 01:36:51 【问题描述】:我正在尝试从 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:feature_columns 的项目必须是 _DenseColumn。您可以使用 embedding_column 或 indicator_column 包装分类列。给定:_VocabularyListCategoricalColumn(key='Sex', words_list=('male', 'female'), dtype=tf.string, default_value=0, num_oov_buckets=0)
我是 TensorFlow 的新手,我不知道发生了什么。我会感谢各种帮助,在此先感谢,对我的英语感到抱歉。
【问题讨论】:
【参考方案1】:再次阅读the documentation我意识到了
指标列和嵌入列从不直接作用于特征
所以我更正了我的代码:
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')
]
而且像魅力一样工作!
【讨论】:
第一次知道indicator_column怎么用,谢谢!【参考方案2】:还有另一种方式根据This Source Code:
所以:
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'),
embedded_group_column = tf.feature_column.embedding_column(categorical_column,dimension=number_of_categories)
tf.feature_column.numeric_column(key='Age')
]
祝你好运!
【讨论】:
酷!谢谢!以上是关于feature_columns 的项目必须是 _FeatureColumn 给定:_VocabularyListCategoricalColumn的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:feature_columns 的项目必须是 DenseColumn 或 CategoricalColumn
使用 Tensorflow 嵌入列会引发 All feature_columns must be _FeatureColumn instances 错误
结合 scikit-learn 模型使用 TensorFlow 预处理(tf.feature_column)