icatalin

lab3 de la Bogdan [IA]

Mar 2nd, 2020
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.14 KB | None | 0 0
  1. import numpy as np
  2. from sklearn.naive_bayes import MultinomialNB
  3. import matplotlib.pyplot as plt
  4.  
  5.  
  6. # indexarea fiecarui interval
  7. def value_to_bins(train_images, num_bins):
  8.     return np.digitize(train_images, num_bins)
  9.  
  10.  
  11.  
  12. #calcularea scorului
  13. def naive_bayes_score(training_data, training_labels, testing_data, testing_labels):
  14.     naive_bayes_model = MultinomialNB()
  15.     naive_bayes_model.fit(training_data, training_labels)
  16.     naive_bayes_model.predict(testing_data)
  17.     return naive_bayes_model.score(testing_data, testing_labels)
  18.  
  19. #returnarea y_pred
  20. def naive_bayes_predict(training_data, training_labels, testing_data):
  21.     naive_bayes_model = MultinomialNB()
  22.     naive_bayes_model.fit(training_data, training_labels)
  23.     return naive_bayes_model.predict(testing_data)
  24.  
  25.  
  26. #afisarea imaginilor misclasate
  27. def print_missclassified_images(y_pred, y_true, testing_data):
  28.     i = 0
  29.     for (x, y) in zip(y_pred, y_true):
  30.         if(x != y):
  31.             image = testing_data[i, :]
  32.             image = np.reshape(image, (28, 28))
  33.             plt.title("Aceasta imagine a fost clasificata ca " + str(x))
  34.             plt.imshow(image.astype(np.uint8), cmap = 'gray')
  35.             plt.show()
  36.         i = i + 1
  37.  
  38.  
  39. #afisarea matricei de confuzie
  40. def confusion_matrix(y_true, y_pred):
  41.     matrix = np.zeros((10, 10))
  42.     for (x, y) in zip(y_pred, y_true):
  43.         matrix[y.astype(int), x.astype(int)] = matrix[y.astype(int), x.astype(int)] + 1
  44.     print(matrix)
  45.  
  46.  
  47. train_images = np.loadtxt("data/train_images.txt")
  48. test_images = np.loadtxt("data/test_images.txt")
  49. train_labels = np.loadtxt("data/train_labels.txt")
  50. test_labels = np.loadtxt("data/test_labels.txt")
  51. num_bins = np.linspace(0, 255, 5)
  52. #num_bins = [3, 5, 7, 9, 11]
  53. digitized_train_images = value_to_bins(train_images, num_bins) - 1
  54. digitized_test_images = value_to_bins(test_images, num_bins) - 1
  55. print(naive_bayes_score(digitized_train_images, train_labels, digitized_test_images, test_labels))
  56. y_pred = naive_bayes_predict(digitized_train_images, train_labels, digitized_test_images)
  57. #print_missclassified_images(y_pred, test_labels, test_images)
  58. confusion_matrix(test_labels, y_pred)
Advertisement
Add Comment
Please, Sign In to add comment