python - Tensorflow 中的多个分类输入变量

标签 python machine-learning tensorflow skflow

我有一个数据集,其中每个特征向量有 50 个特征,其中 45 个是分类特征。我无法将分类变量发送到 tensorflow。我找到了一个例子 tutorial for tensorflow with categorical variables ,但不明白如何使它适应具有两种数据类型和多种特征的集合。下面是我的第一次尝试,但这并没有对大多数变量进行编码。

input_classes, input_gradients, outputs = databank.get_dataset()

print("Creating feature matrix")
inputs = np.array(input_classes, dtype=np.int32)
outputs = np.array(outputs, dtype=np.int32)
random.seed(42)
input_train, input_test, output_train, output_test = cross_validation.train_test_split(inputs, outputs, test_size=0.2, random_state=42)

print("Creating DNN")
# Prepare the neural net
def my_model(X, y):
    # DNN with 10,20,10 hidden layers and dropout chance of 0.5
    layers = skflow.ops.dnn(X, [10, 20, 10], keep_prob=0.5)
    return skflow.models.logistic_regression(layers, y)


classifier = skflow.TensorFlowEstimator(model_fn=my_model, n_classes=2)

print("Testing DNN")
# Test the neural net
classifier.fit(input_train, output_train)
score = metrics.accuracy_score(classifier.predict(input_test), output_test)
print("Accuracy: %f" % score)

我认为真正的问题是,我真的不明白如何处理上面代码中 my_model 函数的输入“张量”X。

最佳答案

在输入之前使用分类处理器将您的类别映射为整数,就像这样

cat_processor = skflow.preprocessing.CategoricalProcessor()
X_train = np.array(list(cat_processor.fit_transform(X_train)))
X_test = np.array(list(cat_processor.transform(X_test)))
n_classes = len(cat_processor.vocabularies_[0])

关于python - Tensorflow 中的多个分类输入变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35513574/

相关文章:

python - 在 Tensorflow 中初始化批处理相关变量

tensorflow - 为什么我们在执行 RNN 时使用 clip_by_global_norm 来获取梯度

python - Keras 掩蔽层作为 lstm 层的输入

python - OpenCV Python - 设置背景颜色

python - BeautifulSoup - 处理类似表格的网站结构|返回字典

machine-learning - Kafka 流的最佳实践

algorithm - 从 3 个变量和数据生成价格数据

python - 具有自定义用户模型的 django-oauth2-provider?

python - 如何在 TurboGears 2.2.2 的 RootController 中使用自定义 sys.excepthook

python - 使用 Watson SDK API 的主题建模示例