ium_z487186/predict.py
Natalia Szymczyk 03a8b1321e lab05, lab07
2023-06-30 17:22:42 +02:00

61 lines
1.8 KiB
Python

import pandas as pd
import torch
import torch.nn as nn
import itertools
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import f1_score as f1
from sklearn.metrics import confusion_matrix
from sklearn.metrics import *
from torch.utils.data import TensorDataset
from torch.utils.data import DataLoader
test_file = pd.read_csv('test.data').drop('Unnamed: 0', axis=1)
df_test = test_file.dropna()
X_test = df_test.drop('class', axis=1)
Y_test = df_test['class']
scaler = MinMaxScaler()
X_test = scaler.fit_transform(X_test)
x_test_tensor = torch.tensor(X_test).float()
y_test_tensor = torch.tensor(Y_test.values).float()
test_ds = TensorDataset(x_test_tensor, y_test_tensor.unsqueeze(1))
test_dl = DataLoader(test_ds, batch_size=64)
model = torch.jit.load('model_scripted.pt')
model.eval()
y_pred_list = []
model.eval()
with torch.no_grad():
for xb_test,yb_test in test_dl:
y_test_pred = model(xb_test)
y_pred_tag = torch.round(y_test_pred)
y_pred_list.append(y_pred_tag.detach().numpy())
y_pred_list = [a.squeeze().tolist() for a in y_pred_list]
ytest_pred = list(itertools.chain.from_iterable(y_pred_list))
y_true_test = Y_test.values.ravel()
conf_matrix = confusion_matrix(y_true_test ,ytest_pred)
print("Confusion Matrix of the Test Set")
print("-----------")
print(conf_matrix)
print("Precision of the MLP :\t"+str(precision_score(y_true_test,ytest_pred)))
print("Accuracy of the MLP :\t"+str(accuracy_score(y_true_test,ytest_pred)))
print("Recall of the MLP :\t"+str(recall_score(y_true_test,ytest_pred)))
print("F1 Score of the Model :\t"+str(f1_score(y_true_test,ytest_pred)))
print(*map(int, ytest_pred))
print(*y_true_test)
with open('predicted_values.txt', 'w') as f:
f.write(" ".join(map(str, map(int, ytest_pred))))