2017-10-18 58 views
1

我使用DNNClassifier估算器,我想預測評級。我如何獲得評分預測?

但是,我不知道使用預測。

我期待下面的結果。

預測評級:XX

PLZ,幫幫我,給我一個指南(使用預測)

下面,我的代碼。

""" Define """ 
JOIN_CSV_COLUMNS   = ['USER_ID', 'CONTENT_ID', 'CONTENT_NAME_USER', 'RATING', 'CNTY_CD', 'FIRST_ORD_DD', 'LAST_ORD_DD', 'DVCE_MODEL_ID', 'DWN_CNT', 'RATING_AVG', 'CONTENT_NAME_CONTENT', 'PKG_ID', 'LANG', 'TAGS', 'CATEGORY_NAME', 
          'SLR_ID', 'SLR_CNTY_CD', 'DVCE_LIST', 'FIRST_SALE_DATE', 'RTG_AVG', 'CMT_CNT', 'DESC_LENGTH', 'PRIVILGE', 'REV_COUNT', 'REJ_COUNT', 'PRICE'] 

""" Numeric Column """ 
NF_CONTENT_ID  = tf.feature_column.numeric_column('CONTENT_ID') 
NF_RATING   = tf.feature_column.numeric_column('RATING') 
NF_FIRST_ORD_DD  = tf.feature_column.numeric_column('FIRST_ORD_DD') 
NF_LAST_ORD_DD  = tf.feature_column.numeric_column('LAST_ORD_DD') 


""" Categorical Column """ 
CF_USER_ID    = tf.feature_column.categorical_column_with_hash_bucket('USER_ID', hash_bucket_size=1000) 
CF_CONTENT_NAME_USER = tf.feature_column.categorical_column_with_hash_bucket('CONTENT_NAME_USER', hash_bucket_size=1000) 
CF_CNTY_CD    = tf.feature_column.categorical_column_with_hash_bucket('CNTY_CD', hash_bucket_size=1000) 

crossed_columns = [ 
    tf.feature_column.crossed_column(['RATING_AVG', 'RTG_AVG'], hash_bucket_size=1000), 
    tf.feature_column.crossed_column(['RATING_AVG', 'PRICE'], hash_bucket_size=1000), 
    tf.feature_column.crossed_column(['RATING_AVG', 'CNTY_CD'], hash_bucket_size=1000), 
    tf.feature_column.crossed_column(['RATING_AVG', 'CATEGORY_NAME'], hash_bucket_size=1000), 
    tf.feature_column.crossed_column(['RTG_AVG', 'TAGS'], hash_bucket_size=1000), 
    tf.feature_column.crossed_column(['CONTENT_NAME_USER', 'TAGS'], hash_bucket_size=1000), 
    tf.feature_column.crossed_column(['RATING_AVG', 'DWN_CNT'], hash_bucket_size=1000) 
    ] 

deep_columns = [ 
    tf.feature_column.indicator_column(CF_USER_ID), 
    tf.feature_column.indicator_column(CF_CONTENT_NAME_USER), 
    tf.feature_column.indicator_column(CF_CNTY_CD), 
    tf.feature_column.indicator_column(CF_DVCE_MODEL_ID), 
    tf.feature_column.indicator_column(CF_CONTENT_NAME_CONTENT), 

    NF_CONTENT_ID, 
    NF_FIRST_ORD_DD, 
    NF_LAST_ORD_DD, 
    NF_DWN_CNT, 
    NF_RATING_AVG, 
    ] 

def get_input_fn(data_set, num_epochs=None, shuffle=True): 
    return tf.estimator.inputs.pandas_input_fn(
     x=data_set, 
     y=data_set["RATING"], 
     num_epochs=num_epochs, 
     shuffle=shuffle) 


def main(unused_argv): 
    # Load datasets 
    training_set = pd.read_csv("./data/Test/train.csv", encoding ='ISO-8859-1', skipinitialspace=True, skiprows=1, names=JOIN_CSV_COLUMNS) 
    test_set = pd.read_csv("./data/Test/test.csv", encoding ='ISO-8859-1',skipinitialspace=True, skiprows=1, names=JOIN_CSV_COLUMNS) 

    # Set of 6 examples for which to predict median house values 
    prediction_set = pd.read_csv("./data/Test/predict.csv", encoding ='ISO-8859-1',skipinitialspace=True, skiprows=1, names=JOIN_CSV_COLUMNS) 

    # Build 2 layer fully connected DNN with 10, 10 units respectively. 
    m = tf.estimator.DNNLinearCombinedClassifier(
     model_dir=None, 
     linear_feature_columns=crossed_columns, 
     dnn_feature_columns=deep_columns, 
     dnn_hidden_units=[1, 1], 
     dnn_optimizer='Adam', 
     dnn_dropout=0.5, 
     n_classes=6 
) 

    # Train 
    m.train(input_fn=get_input_fn(training_set), steps=1000) 

    # Evaluate loss over one epoch of test_set. 
    ev = m.evaluate(input_fn=get_input_fn(test_set, num_epochs=1, shuffle=False)) 

if __name__ == "__main__": 
    tf.app.run() 
+0

我刪除了'dotnetnuke'標籤。這是一個CMS而不是一個張量子流程(至少不是在這個網站上)。 – VDWWD

+0

@ Park.BJ:如果你發現答案正確,你能接受嗎? – Beta

回答

0

您可以使用以下部分進行預測。

preds = list(m.predict(input_fn=get_input_fn(test_set, num_epochs=1, shuffle=False), as_iterable=True)) 
print(accuracy_score(y_test, preds)) 
相關問題