This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def model_fn(features, labels, mode): | |
# write the model to compute predictions, loss, etc. from the model | |
return tf.estimator.EstimatorSpec( | |
mode=mode, | |
predictions={"probabilities": probabilities, | |
"classid": class_int, "class": class_str}, | |
loss=loss, | |
train_op=train_op, | |
eval_metric_ops=evalmetrics, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def compute_prediction(rowdict, numeric_weights, scaling_df, categorical_weights): | |
input_values = rowdict | |
# numeric inputs | |
pred = 0 | |
for column_name in numeric_weights['input'].unique(): | |
wt = numeric_weights[ numeric_weights['input'] == column_name ]['input_weight'].values[0] | |
if column_name != '__INTERCEPT__': | |
meanv = scaling_df[ scaling_df['input'] == column_name ]['mean'].values[0] | |
stddev = scaling_df[ scaling_df['input'] == column_name ]['stddev'].values[0] | |
scaled_value = (input_values[column_name] - meanv)/stddev |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def train_and_evaluate(output_dir, nsteps): | |
estimator = tf.estimator.Estimator( | |
model_fn = model_fn, | |
model_dir = output_dir) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
station_embed = tf.feature_column.embedding_column( | |
tf.feature_column.categorical_column_with_hash_bucket('start_station_id', 5000, tf.int32), 2) | |
feature_cols = [ | |
tf.feature_column.categorical_column_with_identity('day_of_week', num_buckets = 8), | |
station_embed, | |
tf.feature_column.categorical_column_with_vocabulary_list('rainy', ['false', 'true']) | |
] | |
estimator = tf.estimator.LinearRegressor( | |
model_dir = output_dir, | |
feature_columns = feature_cols) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 5. Return EstimatorSpec | |
return spec._replace(predictions = predictions_dict, | |
export_outputs = export_outputs) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 3. Create predictions | |
predictions_dict = { | |
"predicted": predictions, | |
"station_embed": embed_layer | |
} | |
# 4. Create export outputs | |
export_outputs = { | |
"predict_export_outputs": tf.estimator.export.PredictOutput(outputs = predictions_dict) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
my_head = tf.contrib.estimator.regression_head() | |
spec = my_head.create_estimator_spec( | |
features = features, mode = mode, | |
labels = labels, logits = predictions, | |
optimizer = tf.train.FtrlOptimizer(learning_rate = 0.1) | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def model_fn(features, labels, mode): | |
# linear model | |
station_col = tf.feature_column.categorical_column_with_hash_bucket('start_station_id', 5000, tf.int32) | |
station_embed = tf.feature_column.embedding_column(station_col, 2) # embed dimension | |
embed_layer = tf.feature_column.input_layer(features, station_embed) | |
cat_cols = [ | |
tf.feature_column.categorical_column_with_identity('day_of_week', num_buckets = 8), | |
tf.feature_column.categorical_column_with_vocabulary_list('rainy', ['false', 'true']) | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
EXPORTDIR=./model_trained/export/exporter/ | |
MODELDIR=$(ls $EXPORTDIR | tail -1) | |
gcloud ml-engine local predict --model-dir=${EXPORTDIR}/${MODELDIR} --json-instances=./test.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#standardsql | |
with zipcodes as ( | |
SELECT | |
zip_census.zipcode as zipcode, | |
population, | |
WKT as geometry, | |
ST_CENTROID(ST_GeogFromText(WKT)) as centroid | |
FROM | |
`bigquery-public-data.census_bureau_usa.population_by_zip_2010` AS zip_census | |
join `bigquery-public-data-staging.zcta_test.2017` as zip_geom |