From 7b863a88f3d136a4beb943ce8011c805c1eebfe3 Mon Sep 17 00:00:00 2001 From: Wojciech Lidwin <59863785+Halal37@users.noreply.github.com> Date: Thu, 11 May 2023 17:47:16 +0200 Subject: [PATCH] 5_python_scripts --- ium_predict.py | 46 +++++++++++++++++++++++++++++++++++++++++ ium_train.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 ium_predict.py create mode 100644 ium_train.py diff --git a/ium_predict.py b/ium_predict.py new file mode 100644 index 0000000..2c91ead --- /dev/null +++ b/ium_predict.py @@ -0,0 +1,46 @@ +from keras.models import Sequential, load_model +import pandas as pd +from sklearn.preprocessing import LabelEncoder +from sklearn import metrics +import math +import numpy as np + + +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 + + +def predict(): + model = load_model('baltimore_model3') + + 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) + +predict() \ No newline at end of file diff --git a/ium_train.py b/ium_train.py new file mode 100644 index 0000000..9b20fe2 --- /dev/null +++ b/ium_train.py @@ -0,0 +1,55 @@ +# This is a sample Python script. + +# Press Shift+F10 to execute it or replace it with your code. +# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. +from keras.models import Sequential, load_model +from keras.layers import Dense, Dropout +from keras.optimizers import Adam +import pandas as pd +import tensorflow as tf +import numpy as np +from sklearn.preprocessing import LabelEncoder + + +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 + + +def train_model(): + 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=0.01), loss='sparse_categorical_crossentropy', metrics = ['accuracy'] ) + model.summary() + + history = model.fit( + x_train, + y_train, + epochs=20, + validation_split=0.2) + hist = pd.DataFrame(history.history) + hist['epoch'] = history.epoch + model.save('baltimore_model3') + + +train_model() +