我正在尝试从这个数据集创建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只有两种可能的值,我编写了以下代码:
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的新手,完全不知道发生了什么。我会很感激任何形式的帮助,提前感谢,并且为我的英语道歉。
回答:
再次阅读文档后,我意识到
指示列和嵌入列永远不会直接作用于特征
所以我修正了我的代码:
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')]
这样就完美运行了!