我有一个用于二元分类的非常简单的CSV数据集,格式如下:
"feature1","feature2","label"1,0,10,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.LinearClassifier
和tensorflow.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版本
回答:
你可以直接使用tf.feature_column.numeric_column :
feature_columns = [tf.feature_column.numeric_column(key = key) for key in X_train.columns]