This commit is contained in:
Mateusz 2024-04-14 13:36:50 +02:00
parent 5aca317899
commit ea02f9dc7b
4 changed files with 83 additions and 2 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
creditcardfraud.zip
creditcard.csv
data
model/model.keras

View File

@ -2,4 +2,4 @@ FROM ubuntu:latest
RUN apt update && apt install -y python3-pip
RUN pip install pandas numpy scikit-learn
RUN pip install pandas numpy scikit-learn tensorflow

26
predict.py Normal file
View File

@ -0,0 +1,26 @@
import os
os.environ["TF_ENABLE_ONEDNN_OPTS"] = "0"
from keras.models import load_model
import pandas as pd
from sklearn.metrics import confusion_matrix
def main():
model = load_model("model/model.keras")
X_test = pd.read_csv("data/X_test.csv")
y_test = pd.read_csv("data/y_test.csv")
y_pred = model.predict(X_test)
y_pred = y_pred > 0.5
cm = confusion_matrix(y_test, y_pred)
print(
"Recall metric in the testing dataset: ",
cm[1, 1] / (cm[1, 0] + cm[1, 1]),
)
if __name__ == "__main__":
main()

53
train_model.py Normal file
View File

@ -0,0 +1,53 @@
import os
os.environ["TF_ENABLE_ONEDNN_OPTS"] = "0"
from keras.models import Sequential
from keras.layers import BatchNormalization, Dropout, Dense, Flatten, Conv1D
from keras.optimizers import Adam
import pandas as pd
def main():
X_train = pd.read_csv("data/X_train.csv")
y_train = pd.read_csv("data/y_train.csv")
X_train = X_train.to_numpy()
y_train = y_train.to_numpy()
X_train = X_train.reshape(X_train.shape[0], X_train.shape[1], 1)
model = Sequential(
[
Conv1D(32, 2, activation="relu", input_shape=X_train[0].shape),
BatchNormalization(),
Dropout(0.2),
Conv1D(64, 2, activation="relu"),
BatchNormalization(),
Dropout(0.5),
Flatten(),
Dense(64, activation="relu"),
Dropout(0.5),
Dense(1, activation="sigmoid"),
]
)
model.compile(
optimizer=Adam(learning_rate=1e-3),
loss="binary_crossentropy",
metrics=["accuracy"],
)
model.fit(
X_train,
y_train,
epochs=5,
verbose=1,
)
os.makedirs("model", exist_ok=True)
model.save("model/model.keras")
if __name__ == "__main__":
main()