XD
This commit is contained in:
parent
4686b93132
commit
63159ed8bf
122
ium_sacred.py
Normal file
122
ium_sacred.py
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
from keras.models import Sequential, load_model
|
||||||
|
from keras.layers import Dense
|
||||||
|
from keras.optimizers import Adam
|
||||||
|
import pandas as pd
|
||||||
|
import tensorflow as tf
|
||||||
|
import numpy as np
|
||||||
|
from sklearn.preprocessing import LabelEncoder
|
||||||
|
import argparse
|
||||||
|
import shutil
|
||||||
|
from sacred.observers import FileStorageObserver, MongoObserver
|
||||||
|
from sacred import Experiment
|
||||||
|
from sklearn import metrics
|
||||||
|
import math
|
||||||
|
|
||||||
|
ex = Experiment('s487197-train', save_git_info=False,interactive=True)
|
||||||
|
ex.observers.append(FileStorageObserver('sacred_results'))
|
||||||
|
ex.observers.append(MongoObserver(url='mongodb://admin:IUM_2021@172.17.0.1:27017', db_name='sacred'))
|
||||||
|
#ex.observers.append(MongoObserver(url='mongodb://admin:IUM_2021@172.17.0.1:27017', db_name='sacred'))
|
||||||
|
|
||||||
|
|
||||||
|
def write_list(names):
|
||||||
|
with open('listfile.txt', 'w') as fp:
|
||||||
|
fp.write("\n".join(str(item) for item in names))
|
||||||
|
|
||||||
|
def get_x_y(data):
|
||||||
|
lb = LabelEncoder()
|
||||||
|
data = data.drop(["Location 1"], axis=1)
|
||||||
|
data = data.drop(
|
||||||
|
columns=["Longitude", "Latitude", "Location", "Total Incidents", "CrimeTime", "Neighborhood", "Post",
|
||||||
|
"CrimeDate", "Inside/Outside"], axis=1)
|
||||||
|
for column_name in data.columns:
|
||||||
|
data[column_name] = lb.fit_transform(data[column_name])
|
||||||
|
x = data.drop('Weapon', axis=1)
|
||||||
|
y = data['Weapon']
|
||||||
|
|
||||||
|
return data, x, y
|
||||||
|
|
||||||
|
|
||||||
|
@ex.config
|
||||||
|
def my_config():
|
||||||
|
epochs = 20
|
||||||
|
lr = 0.01
|
||||||
|
validation_split = 0.2
|
||||||
|
#parser = argparse.ArgumentParser(description='Train')
|
||||||
|
|
||||||
|
# parser.add_argument('-epochs', type=int, default=20)
|
||||||
|
# parser.add_argument('-lr', type=float, default=0.01)
|
||||||
|
#parser.add_argument('-validation_split', type=float, default=0.2)
|
||||||
|
#args = parser.parse_args()
|
||||||
|
# epochs = args.epochs
|
||||||
|
# lr = args.lr
|
||||||
|
# validation_split = args.validation_split
|
||||||
|
|
||||||
|
|
||||||
|
@ex.main
|
||||||
|
def predict(epochs, lr, validation_split):
|
||||||
|
|
||||||
|
print("ble")
|
||||||
|
model = load_model('baltimore_model')
|
||||||
|
|
||||||
|
train = pd.read_csv('baltimore_train.csv')
|
||||||
|
baltimore_data_test =pd.read_csv('baltimore_test.csv')
|
||||||
|
baltimore_data_test.columns = train.columns
|
||||||
|
baltimore_data_test, x_test, y_test = get_x_y(baltimore_data_test)
|
||||||
|
scores = model.evaluate(x_test, y_test)
|
||||||
|
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1] * 100))
|
||||||
|
|
||||||
|
y_predicted = model.predict(x_test)
|
||||||
|
y_predicted = np.argmax(y_predicted, axis=1)
|
||||||
|
test_results = {}
|
||||||
|
test_results['Weapon'] = model.evaluate(
|
||||||
|
x_test,
|
||||||
|
y_test, verbose=0)
|
||||||
|
write_list(y_predicted)
|
||||||
|
print('Accuracy : ', scores[1] * 100)
|
||||||
|
print('Mean Absolute Error : ', metrics.mean_absolute_error(y_test, y_predicted))
|
||||||
|
print('Root Mean Squared Error : ', math.sqrt(metrics.mean_squared_error(y_test, y_predicted)))
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'mse': metrics.mean_squared_error(y_test, y_predicted),
|
||||||
|
'rmse': math.sqrt(metrics.mean_squared_error(y_test, y_predicted)),
|
||||||
|
'accuracy': scores[1] * 100
|
||||||
|
}
|
||||||
|
ex.log_scalar('accuracy', data['accuracy'])
|
||||||
|
ex.log_scalar('rmse', data['rmse'])
|
||||||
|
ex.log_scalar('accuracy', data['accuracy'])
|
||||||
|
|
||||||
|
ex.add_artifact('baltimore_model')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ex.capture
|
||||||
|
def train_model(epochs, lr, validation_split):
|
||||||
|
|
||||||
|
|
||||||
|
train = pd.read_csv('baltimore_train.csv')
|
||||||
|
|
||||||
|
data_train, x_train, y_train = get_x_y(train)
|
||||||
|
normalizer = tf.keras.layers.Normalization(axis=1)
|
||||||
|
normalizer.adapt(np.array(x_train))
|
||||||
|
model = Sequential(normalizer)
|
||||||
|
model.add(Dense(64, activation="relu"))
|
||||||
|
model.add(Dense(10, activation='relu'))
|
||||||
|
model.add(Dense(10, activation='relu'))
|
||||||
|
model.add(Dense(10, activation='relu'))
|
||||||
|
model.add(Dense(5, activation="softmax"))
|
||||||
|
model.compile(Adam(learning_rate=lr), loss='sparse_categorical_crossentropy', metrics=['accuracy'])
|
||||||
|
model.summary()
|
||||||
|
|
||||||
|
history = model.fit(
|
||||||
|
x_train,
|
||||||
|
y_train,
|
||||||
|
epochs=epochs,
|
||||||
|
validation_split=validation_split)
|
||||||
|
hist = pd.DataFrame(history.history)
|
||||||
|
hist['epoch'] = history.epoch
|
||||||
|
model.save('baltimore_model')
|
||||||
|
shutil.make_archive('baltimore', 'zip', 'baltimore_model')
|
||||||
|
|
||||||
|
ex.run()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user