{ "cells": [ { "cell_type": "markdown", "id": "85b97ec7-3a3c-4167-aef8-8dae5e40763a", "metadata": {}, "source": [ "# Modules" ] }, { "cell_type": "code", "execution_count": 1, "id": "99e0c7ad-0921-4255-b373-de036361abd7", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", "from sklearn.metrics import accuracy_score, roc_auc_score, auc, roc_curve\n", "import matplotlib.pyplot as plt\n", "import functions_ml # ma biblio personnelle\n", "import pickle" ] }, { "cell_type": "markdown", "id": "77424d25-e0ce-4df8-b74f-4af54bce44e3", "metadata": {}, "source": [ "# Données" ] }, { "cell_type": "markdown", "id": "bce0e571-eced-43cb-95c1-6fc97b47db68", "metadata": {}, "source": [ "Les données ont été extraites d'images prises à partir de spécimens authentiques et falsifiés ressemblant à des billets de banque.\n", "\n", "Pour la numérisation, une caméra industrielle habituellement utilisée pour l'inspection des impressions a été utilisée. \n", "\n", "Les images finales ont 400x 400 pixels. En raison de la lentille de l'objet et de la distance à l'objet étudié, des images en niveaux de gris avec une résolution d'environ 660 dpi ont été obtenues. \n", "\n", "L'outil Wavelet Transform a été utilisé pour extraire les caractéristiques des images.\n", "L'ensemble de données peut être utilisé pour les exemples de problèmes de classification binaire" ] }, { "cell_type": "code", "execution_count": 2, "id": "0eec0a9c-56eb-4721-89c6-84d31d49c513", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
varianceskewnesscurtosisentropyclass
03.621608.6661-2.8073-0.446990
14.545908.1674-2.4586-1.462100
23.86600-2.63831.92420.106450
33.456609.5228-4.0112-3.594400
40.32924-4.45524.5718-0.988800
\n", "
" ], "text/plain": [ " variance skewness curtosis entropy class\n", "0 3.62160 8.6661 -2.8073 -0.44699 0\n", "1 4.54590 8.1674 -2.4586 -1.46210 0\n", "2 3.86600 -2.6383 1.9242 0.10645 0\n", "3 3.45660 9.5228 -4.0112 -3.59440 0\n", "4 0.32924 -4.4552 4.5718 -0.98880 0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data=pd.read_csv(r'C:\\Users\\u32118508\\OneDrive - UPEC\\Bureau\\PyBooks\\Bank_Note_Authentification\\donnee_billet_authentification.csv')\n", "data.head()" ] }, { "cell_type": "markdown", "id": "0de36aed-368e-4916-9759-712c2ad1431a", "metadata": {}, "source": [ "# Echantillonage et partitionnements" ] }, { "cell_type": "code", "execution_count": 3, "id": "f07fb5c1-eac4-4c1d-8097-c8b6eda33c19", "metadata": {}, "outputs": [], "source": [ "## declarations des features et de la variable d'interets\n", "X=data.iloc[:,:-1]\n", "y=data.iloc[:,-1]\n", "## Segmentation des données\n", "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=2022, stratify = y)" ] }, { "cell_type": "markdown", "id": "14d12466-ef34-4ce3-a374-04c1d2b026db", "metadata": {}, "source": [ "# Entrainement" ] }, { "cell_type": "code", "execution_count": 4, "id": "2459e1e2-5d98-43e7-8fbc-5802b818283d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearDiscriminantAnalysis()" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "classifier = LinearDiscriminantAnalysis()\n", "classifier.fit(X_train,y_train)" ] }, { "cell_type": "markdown", "id": "034d7760-b0f7-4390-b2ac-5d14076ff29c", "metadata": {}, "source": [ "# EVAL" ] }, { "cell_type": "code", "execution_count": 5, "id": "ff3e3f7b-55da-4583-80a2-3c101fc6c549", "metadata": {}, "outputs": [], "source": [ "# Prediction\n", "proba_pred = classifier.predict_proba(X_test)" ] }, { "cell_type": "code", "execution_count": 6, "id": "f739a119-56d7-481e-a57b-99c77d6b84e2", "metadata": {}, "outputs": [ { "data": { "image/png": "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1SoATpw4QadOnahatSqdOnVy3/OzZs0a97pDQ0NTve+nZ8+emXfPiqpmq1eDSmhWFx0d635/7FiUPv74Ij179rwPI/rX1q1bfbr+hIQEbdSokU6ZMkVVVePi4nTQoEH66KOPpjvfnj17tHbt2h6to02bNrp27VpVVf3444+1R48eF00TFxd3VetJug5V1QoVKujRo0fTnSc2Njbd8Sn98ssveuONN17WPCnjSvTZZ5/p8OHD0533+PHjWqlSJT1+/LieOHFCK1WqpCdOnLhouj59+ujUqVNVVXXJkiV61113pbqsYsWKaVRUlKqq3nrrrTp9+nRVVR06dKh+9NFHqqr66KOP6vPPP6+qqtu2bdP27dtftKy4uDgtXbq07t27V1VVFy5c6N6Xo0eP1tGjR6uq6ocffqgDBgxQVdUjR45o/fr1NT4+XlVVV61apYcOHdKCBQsmW/Z//vMfdyxbtmzRChUqXHJbqlat6v4/Gj9+vPbv319VVc+ePasJCQmqqrpp0yatXr26exn33HOPfvLJJ6qqev78eT158qSqqj722GP62muvqarqa6+95t6WqKgo9zYeOnRIS5Ysmezv57vvvtN+/fql+bea2v85EK5X+L1rLYoMFBl5gZEjf6Rx40+4cMG5uapEiQK8/npHChXK6+Posoaff/6Z/PnzM3DgQMB5NsW7777LlClTOHfuHFOnTqVXr1507dqV6tWr88ILLwAwZswYdu3aRVhYGI899pjH62vdurX7iK9QoUI8++yzNGnShFWrVvHOO+9Qp04d6tSp4z5aBafsd//+/QkJCaFPnz6cO3cu2TJnzJhBeHg4d955J2FhYURHRwPwwQcfUL9+ferWrcuff/4JOCU47r33Xjp37sw999zD0aNHueWWW2jUqBGNGjVyl+T+9ddf3UeQ9erVc9+wFxkZ6T4SvfPOO913bi9ZsoR69epRt25dBg0axPnz5y/a9s8++4xq1arRpk0bj0p/L1y40F1/qlixYnTq1MldWjyprVu30qFDBwDatWvHnDlzLppmxowZdOvWjQIFCqCq/Pzzz/Tp0weA/v37u4/Oky6rRo0a7N27lyNHjiRb1pIlS6hSpQoVKjjFMDt37kxAgHPWvGnTpu4WTdJllSpVimuuucbdumratGmqN1mKCGfOnAGcu+ATy5SktS3pzVOoUCH3HepRUVHu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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fpr, tpr, thresholds = roc_curve(y_test, proba_pred[:,1])\n", "roc_auc = auc(fpr, tpr)\n", "optimal_thr = thresholds[np.argmin((0-fpr)**2 + (1-tpr)**2)]\n", "optimal_tpr = tpr[thresholds==optimal_thr][0]\n", "optimal_fpr = fpr[thresholds==optimal_thr][0]\n", "plt.figure()\n", "lw = 2\n", "plt.plot(fpr, tpr, color='orange',lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)\n", "plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n", "plt.scatter(optimal_fpr, optimal_tpr, color=\"red\", lw=lw, label=f\"Opt. Prob threshold: {optimal_thr}\\nOpt. TPR:{round(optimal_tpr, 2)}, Opt. FPR: {round(optimal_fpr, 2)}\")\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.0])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.title('Scoring ROC curve : Test set')\n", "plt.legend(loc=\"lower right\")\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "b93d91be-4515-446f-bd0e-b87bbe2ee399", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy: 0.99\n", "Recall: 0.99\n", "precision: 0.98\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "functions_ml.confusio_matrix(y_test, (proba_pred[:,1]>= optimal_thr).astype(int))" ] }, { "cell_type": "markdown", "id": "c1d1b858-9847-4877-98f4-c7cc9a4c724a", "metadata": {}, "source": [ "# Exportation du modèle" ] }, { "cell_type": "code", "execution_count": 8, "id": "1ed1b4ff-0717-4c09-b207-24f187ac2ca7", "metadata": {}, "outputs": [], "source": [ "pickle_out = open(\"model.pkl\",\"wb\")\n", "pickle.dump(classifier, pickle_out)\n", "pickle_out.close()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }