feature_columns的项必须是_FeatureColumn Given:_VocabularyListCategoricalColumn

时间:2018-02-05 01:36:52

标签: tensorflow machine-learning

我试图从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"和"年龄"。由于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',vocabulary_list =(' male',' female'),dtype = tf.string,default_value = 0,num_oov_buckets = 0 )

我对TensorFlow全新,我不知道发生了什么。我会提供各种帮助,提前谢谢,对不起我的英语。

2 个答案:

答案 0 :(得分:12)

再次阅读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')
]

就像魅力一样!

答案 1 :(得分: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')
]

祝你好运!