2016-02-19 27 views
3

我有一個數據集,其中每個特徵向量有50個特徵,其中45個是分類的。我無法將分類變量發送到張量流中。我找到了一個示例tutorial for tensorflow with categorical variables,但不明白如何使它適用於具有兩種數據類型和多種功能的集合。我的第一次嘗試是在下面,但這不會編碼大部分變量。Tensorflow中的多個分類輸入變量

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) 

我認爲真正的問題,是我真的不明白如何處理輸入「張」 X到my_model功能在上面的代碼。

回答

0

使用一個明確的處理器輸入之前,您的類別爲整數映射,像這樣

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])