diff --git a/Code/Rapport-Final.ipynb b/Code/Rapport-Final.ipynb index 2dc6847..6429533 100644 --- a/Code/Rapport-Final.ipynb +++ b/Code/Rapport-Final.ipynb @@ -43,7 +43,8 @@ "metadata": {}, "outputs": [], "source": [ - "train1, train_labels1, test1, test_labels1 = ld.load_iris_dataset(train_ratio = 0.7)" + "train1, train_labels1, test1, test_labels1 = (\n", + " ld.load_iris_dataset(train_ratio = 0.7))" ] }, { @@ -86,12 +87,17 @@ "range_lc = range(30,len(train_labels1))\n", "for i in range_lc:\n", " range_lc_split_test = np.array_split(range(i),10)\n", - " range_lc_split_train = [np.setdiff1d(range(i),t) for t in range_lc_split_test]\n", + " range_lc_split_train = (\n", + " [np.setdiff1d(range(i),t) for t in range_lc_split_test])\n", " accuracy_cv = []\n", " for r_i in range(10):\n", " try:\n", - " training = dt1.train(train1[range_lc_split_train[r_i]], train_labels1[range_lc_split_train[r_i]],verbose=False)\n", - " test = dt1.test(train1[range_lc_split_test[r_i]], train_labels1[range_lc_split_test[r_i]],verbose=False)\n", + " training = dt1.train(train1[range_lc_split_train[r_i]], \n", + " train_labels1[range_lc_split_train[r_i]],\n", + " verbose=False)\n", + " test = dt1.test(train1[range_lc_split_test[r_i]], \n", + " train_labels1[range_lc_split_test[r_i]],\n", + " verbose=False)\n", " accuracy_cv.append(test[1])\n", " except:\n", " pass\n", @@ -164,7 +170,9 @@ "k_cv = 5\n", "all_indices = range(len(train_labels1))\n", "np.random.seed(12345)\n", - "indices_cv_test = np.sort(np.array_split(np.random.permutation(all_indices),k_cv))" + "indices_cv_test = (\n", + " np.sort(np.array_split(np.random.permutation(all_indices),\n", + " k_cv)))" ] }, { @@ -173,7 +181,8 @@ "metadata": {}, "outputs": [], "source": [ - "indices_cv_train = [np.setdiff1d(all_indices,indices_cv_test[i]) for i in range(k_cv)]" + "indices_cv_train = (\n", + " [np.setdiff1d(all_indices,indices_cv_test[i]) for i in range(k_cv)])" ] }, { @@ -194,8 +203,12 @@ " accuracy_cv=[]\n", " for cv_set in range(k_cv):\n", " nn1 = NeuralNet.NeuralNet(np.array([4,n_neurones,3]),range(3))\n", - " nn1.train(train1[indices_cv_train[cv_set]], train_labels1[indices_cv_train[cv_set]], 0.1, 1, verbose=False)\n", - " _,accuracy,_,_,_ = nn1.test(train1[indices_cv_test[cv_set]], train_labels1[indices_cv_test[cv_set]], verbose=False)\n", + " nn1.train(train1[indices_cv_train[cv_set]], \n", + " train_labels1[indices_cv_train[cv_set]], 0.1, 1, \n", + " verbose=False)\n", + " _,accuracy,_,_,_ = nn1.test(train1[indices_cv_test[cv_set]], \n", + " train_labels1[indices_cv_test[cv_set]], \n", + " verbose=False)\n", " accuracy_cv.append(accuracy)\n", " accuracy_cum.append(np.mean(np.array(accuracy_cv)))" ] @@ -222,7 +235,8 @@ "metadata": {}, "outputs": [], "source": [ - "n_neurones_optimal1 = choix_n_neurones[np.where(accuracy_cum==max(accuracy_cum))[0][0]]\n", + "n_neurones_optimal1 = (\n", + " choix_n_neurones[np.where(accuracy_cum==max(accuracy_cum))[0][0]])\n", "n_neurones_optimal1" ] }, @@ -254,7 +268,11 @@ "lc_cum = []\n", "for n_couches in choix_n_couches:\n", " accuracy_cv=[]\n", - " nn1 = NeuralNet.NeuralNet(np.hstack((4,np.repeat(n_neurones_optimal1,n_couches),3)),range(3))\n", + " nn1 = NeuralNet.NeuralNet(\n", + " np.hstack((4,\n", + " np.repeat(n_neurones_optimal1,n_couches),\n", + " 3)),\n", + " range(3))\n", " lc = nn1.train(train1, train_labels1, 0.1, 10, verbose=False)\n", " lc_cum.append(lc)\n", " _,accuracy,_,_,_ = nn1.test(train1, train_labels1, verbose=False)\n", @@ -341,8 +359,14 @@ "metadata": {}, "outputs": [], "source": [ - "nn1_poidszero = NeuralNet.NeuralNet(np.hstack((4,np.repeat(n_neurones_optimal1,n_couches_optimal1),3)),range(3),input_weights=0)\n", - "lc_nn1_poidszero = nn1_poidszero.train(train1, train_labels1, 0.1, 10, verbose=False)" + "nn1_poidszero = NeuralNet.NeuralNet(\n", + " np.hstack((4,\n", + " np.repeat(n_neurones_optimal1,n_couches_optimal1),\n", + " 3)),\n", + " range(3),\n", + " input_weights=0)\n", + "lc_nn1_poidszero = (\n", + " nn1_poidszero.train(train1, train_labels1, 0.1, 10, verbose=False))" ] }, { @@ -358,9 +382,14 @@ "metadata": {}, "outputs": [], "source": [ - "nn1_poidsunif = NeuralNet.NeuralNet(np.hstack((4,np.repeat(n_neurones_optimal1,n_couches_optimal1),3)),range(3))\n", + "nn1_poidsunif = NeuralNet.NeuralNet(\n", + " np.hstack((4,\n", + " np.repeat(n_neurones_optimal1,n_couches_optimal1),\n", + " 3)),\n", + " range(3))\n", "np.random.seed(12345)\n", - "lc_nn1_poidsunif = nn1_poidsunif.train(train1, train_labels1, 0.1, 10, verbose=False)" + "lc_nn1_poidsunif = (\n", + " nn1_poidsunif.train(train1, train_labels1, 0.1, 10, verbose=False))" ] }, { @@ -379,7 +408,11 @@ "plt.subplot(111)\n", "plt.plot(range(10),lc_nn1_poidszero, label=\"RN_Zero\")\n", "plt.plot(range(10),lc_nn1_poidsunif, label=\"RN_Non_Zero)\")\n", - "leg = plt.legend(loc='best', ncol=2, mode=\"expand\", shadow=True, fancybox=True)\n", + "leg = plt.legend(loc='best', \n", + " ncol=2, \n", + " mode=\"expand\", \n", + " shadow=True, \n", + " fancybox=True)\n", "leg.get_frame().set_alpha(0.5)" ] }, diff --git a/Code/metrics.py b/Code/metrics.py index f7284b6..643e965 100644 --- a/Code/metrics.py +++ b/Code/metrics.py @@ -41,13 +41,13 @@ def prediction_metrics(cm,obs_labels,pred_labels): if (not np.any(np.isnan(myPrecision))): precision.append(myPrecision) except: - myPrecision = 0 + pass try: myRecall = cm[label_num,label_num] / sum(cm[label_num,:]) if (not np.any(np.isnan(myRecall))): recall.append(myRecall) except: - myRecall = 0 + pass return accuracy, precision, recall