我试图从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全新,我不知道发生了什么。我会提供各种帮助,提前谢谢,对不起我的英语。
答案 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')
]
祝你好运!