如何为TensorFlow分类器创建要素列

时间:2017-03-23 00:59:31

标签: machine-learning tensorflow neural-network deep-learning tflearn

我在csv文件中有一个非常简单的二进制分类数据集,如下所示:

"feature1","feature2","label"
1,0,1
0,1,0
...

其中"label"列表示类(1为正,0为负)。功能的数量实际上相当大,但对于那个问题并不重要。

以下是我阅读数据的方式:

train = pandas.read_csv(TRAINING_FILE)
y_train, X_train = train['label'], train[['feature1', 'feature2']].fillna(0)

test = pandas.read_csv(TEST_FILE)
y_test, X_test = test['label'], test[['feature1', 'feature2']].fillna(0)

我想对该数据运行tensorflow.contrib.learn.LinearClassifiertensorflow.contrib.learn.DNNClassifier。例如,我像这样初始化DNN:

classifier = DNNClassifier(hidden_units=[3, 5, 3],
                               n_classes=2,
                               feature_columns=feature_columns, # ???
                               activation_fn=nn.relu,
                               enable_centered_bias=False,
                               model_dir=MODEL_DIR_DNN)

那么当所有特征都是二进制(0或1是唯一可能的值)时,我应该如何创建feature_columns

以下是模特训练:

classifier.fit(X_train.values,
                   y_train.values,
                   batch_size=dnn_batch_size,
                   steps=dnn_steps)

使用输入函数替换fit()参数的解决方案也很棒。

谢谢!

P.S。我正在使用TensorFlow版本1.0.1

2 个答案:

答案 0 :(得分:7)

您可以直接使用tf.feature_column.numeric_column

feature_columns = [tf.feature_column.numeric_column(key = key) for key in X_train.columns]

答案 1 :(得分:3)

我刚刚找到解决方案而且非常简单:

feature_columns = tf.contrib.learn.infer_real_valued_columns_from_input(X_train)

显然infer_real_valued_columns_from_input()适用于分类变量。