如果您有训练有素的DNNClassifier,那么您可以使用同一类的内置方法来获得准确性。您可以使用evaluate() 方法。只要确保根据您的评估/测试数据定义您的输入函数。这是一个在随机数据上拟合模型、在更多随机数据上评估模型然后打印评估指标摘要(包括准确性)的示例:
import numpy as np
import tensorflow as tf
import pandas as pd
num = 100000
feat1 = np.random.rand(num,1)
feat2 = np.random.rand(num,1)
label = (np.round(np.random.rand(num,1),0))
Data = pd.DataFrame(np.concatenate((feat1,feat2,label),axis=1), columns=['feat1','feat2','label'])
feature_columns = [
tf.feature_column.numeric_column(key="feat1"),
tf.feature_column.numeric_column(key="feat2"),
]
model = tf.estimator.DNNClassifier(feature_columns=feature_columns,hidden_units=[8,8,8,8,8,8,8,8,4,2])
input_train = tf.estimator.inputs.pandas_input_fn(
x=Data,
y=Data['label'],
shuffle=True,
num_epochs = 1
)
model.train(input_fn=input_train,steps=10000)
feat1T = np.random.rand(num,1)
feat2T = np.random.rand(num,1)
labelT = (np.round(np.random.rand(num,1),0))
DataT = pd.DataFrame(np.concatenate((feat1T,feat2T,labelT),axis=1), columns=['feat1','feat2','label'])
input_eval = tf.estimator.inputs.pandas_input_fn(
x=DataT,
y=DataT['label'],
shuffle=True,
num_epochs = 1
)
metrics = model.evaluate(input_fn=input_eval, steps=100)
print(metrics)
对于我的随机随机种子,打印如下:
{'accuracy': 0.49734375, 'accuracy_baseline': 0.5026562, 'auc': 0.5, 'auc_precision_recall': 0.7486719, 'average_loss': 0.6931635, 'label/mean': 0.49734375, 'loss': 88.729 ':0.49734375,'预测/平均值':0.5012483,'召回':1.0,'global_step':782}