Ich versuche DNNRegressor auf einigen einfachen Daten zu laufen, damit ich seine Genauigkeit testen kann, sollte das Modell jede Banktransaktion nehmen und versuchen, seinen Preis vorherzusagen, aber ich bekomme einige seltsame Ergebnisse, die ich denke, ist Ergebnis von etwas falsch mit dem Code.Tensorflow DNNRegressor predict_score Ausgabe
Mein Code ist hier:
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
import itertools
import pandas as pd
import numpy as np
import tensorflow as tf
print('Running version of tensorflow')
print(tf.__version__)
tf.logging.set_verbosity(tf.logging.DEBUG)
names = [
'trans',
'price',
]
predict_names = [
'trans'
]
dtypes = {
'trans': str,
'price': np.float32,
}
df = pd.read_csv('simple.csv', names=names, dtype=dtypes, na_values='?')
# Split the data into a training set and an eval set.
training_data = df[:50]
eval_data = df[50:]
print("Training with this :\n")
print(training_data)
# Separate input features from labels
training_label = training_data.pop('price')
eval_label = eval_data.pop('price')
# Feature Columns
training_input_fn = tf.estimator.inputs.pandas_input_fn(x=training_data, y=training_label, batch_size=1, shuffle=True, num_epochs=None)
eval_input_fn = tf.estimator.inputs.pandas_input_fn(x=eval_data, y=eval_label, batch_size=1, shuffle=False, num_epochs=None)
#Embed the column since its a string
transformed_trans = tf.feature_column.categorical_column_with_hash_bucket('trans', 50)
print("Transformed words **********************")
print(transformed_trans)
dnn_features = [tf.feature_column.indicator_column(transformed_trans)]
# regressor = tf.contrib.learn.LinearRegressor(feature_columns=[trans])
dnnregressor = tf.contrib.learn.DNNRegressor(feature_columns=dnn_features, hidden_units=[50, 30, 10])
#train the model
dnnregressor.fit(input_fn=training_input_fn, steps=1)
# Evaluate the trianing
dnnregressor.evaluate(input_fn=eval_input_fn, steps=1)
# Predictions
predictdf = pd.read_csv('simple_predict.csv', names=names, dtype=dtypes, na_values='?')
predict_input_fn = tf.estimator.inputs.pandas_input_fn(x=predictdf,shuffle=False, num_epochs=1)
print("Predicting scores **********************")
y = dnnregressor.predict_scores(input_fn=predict_input_fn)
for x in y:
print(str(x)+"\n")
sieht Meine Daten wie diese
simple.csv:
Uber,4
Food,12
Coffee,4
Cafe,10
Coffee,4
Cafe,10
Uber,4
Food,12
Coffee,4
Cafe,10
Coffee,4
Cafe,10
Uber,4
Food,12
Coffee,4
Cafe,10
Coffee,4
simple_predict.csv:
Uber
Food
ich annehmen würde, dass mit dem folgenden Datensatz, der ziemlich vorhersehbar ist i 0 Verlust erhalten wird und die Vorhersagen werden sei auf Punkt. Aber es ist überhaupt nicht der Fall, ich bekomme immer eine Vorhersage für Uber und Essen, die genau die gleichen sind und ich kann nicht einmal die Ergebnisse verstehen, die ich bekomme.
Fehlt mir irgendetwas im Code? Oder habe ich verstanden, wie DNNRegressor eigentlich funktionieren sollte?
Könnte ein Hash-Problem auftreten? Vielleicht versuchen Sie 'categorical_column_with_vocabulary_list' und' embedding_column'? –