def run_ica_EM(data, principal_components=1): clf = FastICA(n_components=principal_components) data = clf.fit_transform(data) scores = [] for i in range(1, len(data[0]) * 2): print(f'EM and ICA: with K = {i}') clf = GaussianMixture(n_components=i) clf.fit(data) scores.append(clf.score(data)) return scores
epoch = 0 while epoch < N_EPOCHS: print('epoch: ', epoch) # SHUFFLING random_perm = np.random.permutation(X_train.shape[0]) mini_batch_index = 0 while True: # MINI-BATCH indices = random_perm[mini_batch_index:mini_batch_index + N_BATCH] clf.partial_fit(X_train[indices], y_train[indices], classes=N_CLASSES) mini_batch_index += N_BATCH if mini_batch_index >= N_TRAIN_SAMPLES: break # SCORE TRAIN scores_train.append(clf.score(X_train, y_train)) # SCORE TEST scores_test.append(clf.score(X_test, y_test)) epoch += 1 plt.figure() plt.plot(scores_train, color='b', alpha=0.8, label='Train') plt.plot(scores_test, color='r', alpha=0.8, label='Test') plt.title("Credit Cards Neural Network Accuracy over epochs", fontsize=14) plt.xlabel('Epochs') plt.ylabel("Accuracy") plt.legend(loc='upper left') plt.savefig('charts/creditcards.neuralnetwork.ICA.accuracy.png')