{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-01-08T11:43:37.106355Z","iopub.execute_input":"2023-01-08T11:43:37.106877Z","iopub.status.idle":"2023-01-08T11:43:37.119236Z","shell.execute_reply.started":"2023-01-08T11:43:37.106837Z","shell.execute_reply":"2023-01-08T11:43:37.117950Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = pd.read_csv('/kaggle/input/competition/train.csv')","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:43:39.436747Z","iopub.execute_input":"2023-01-08T11:43:39.437297Z","iopub.status.idle":"2023-01-08T11:43:50.406998Z","shell.execute_reply.started":"2023-01-08T11:43:39.437250Z","shell.execute_reply":"2023-01-08T11:43:50.405379Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Préparation des Parametres \"Features\"**\n1. On enlève l'identifiant pour qu'il ne soit pas traiter comme parametres \"Feature\"\n2. On enlève la colonne \"f_27\" puisqu'elle contient des chaines de caratère\n3. On met tous les parametres dans la varibale X, et la \"Target\" dans Y.","metadata":{}},{"cell_type":"code","source":"X = train\nX = train.drop('id', axis=1, inplace=False)\nX.drop('f_27', axis=1, inplace=True)\nX.drop('target', axis=1, inplace=True)\nX.describe()","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:43:50.409788Z","iopub.execute_input":"2023-01-08T11:43:50.410429Z","iopub.status.idle":"2023-01-08T11:43:52.059186Z","shell.execute_reply.started":"2023-01-08T11:43:50.410377Z","shell.execute_reply":"2023-01-08T11:43:52.057584Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y = train['target']\ny.describe()","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:18:32.459143Z","iopub.execute_input":"2023-01-08T11:18:32.459895Z","iopub.status.idle":"2023-01-08T11:18:32.495867Z","shell.execute_reply.started":"2023-01-08T11:18:32.459857Z","shell.execute_reply":"2023-01-08T11:18:32.494653Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***Calcule de Corrélation***\nOn clacule la correlation entre chaque colonne \"Feature\" et la \"Target\", et ne garde que les colonnes dont la correlation et supérieur ou égale 0.04","metadata":{}},{"cell_type":"code","source":"existing_columns = X.columns\nfor (column) in existing_columns:\n    if (X[column].corr(train[\"target\"]) <= 0.04):\n        X.drop(column,inplace=True, axis=1)\n\nprint(\"Les Colonnes non-enlevés : \") \nfeatures = X.columns;\nfor (column) in X.columns:\n    print(column)\n\nprint(\"Nombre de colonnes : \" + str(X.columns.size))","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:43:52.061252Z","iopub.execute_input":"2023-01-08T11:43:52.061641Z","iopub.status.idle":"2023-01-08T11:43:53.416859Z","shell.execute_reply.started":"2023-01-08T11:43:52.061608Z","shell.execute_reply":"2023-01-08T11:43:53.415299Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***Distribution normale***\nAfin d'améliorer la qualité du modèle on vérifie que les données suivent une distribution normale, cette vérification de s'applique que sur les colonnes dont les données sont quantitative;\ndonc on enlève les colonnes dont les données sont binaire \"qualitative\", et on visualise les données dans un histogramme","metadata":{}},{"cell_type":"code","source":"# hists = X.hist()\ncolumns_to_normalize =  [\"f_00\", \"f_01\", \"f_02\", \"f_05\", \"f_21\", \"f_22\", \"f_23\", \"f_24\", \"f_26\", \"f_28\"]\nto_normalize = X;\nfor column in X.columns :\n    if column not in columns_to_normalize:\n        to_normalize.drop(column, axis=1, inplace=True)\n\nto_normalize.hist()","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:16:47.001764Z","iopub.execute_input":"2023-01-08T11:16:47.002190Z","iopub.status.idle":"2023-01-08T11:16:48.185568Z","shell.execute_reply.started":"2023-01-08T11:16:47.002157Z","shell.execute_reply":"2023-01-08T11:16:48.184221Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"On remaque que les données suivent une loi normale donc on change rien","metadata":{}},{"cell_type":"markdown","source":"***Création de Modèle***\n\n1. On utilise \"train_test_split\" pour sparer les données entre ***entrainement*** et le ***test***\n2. Le choix d'algorithm :\n    Puisqu'on un problème de classification, une DataSet très importante et un CPU limité, on propose \"KNeighborsClassifier\" qui est un algorithme rapide qui va permettre à notre modèle de s'entrainer sur un maximum de données sous la contraint de la limitation de CPU.  ","metadata":{}},{"cell_type":"markdown","source":"***KNeighborsClassifier***\n\nCet algorithme classifie le \"Input\" avec la majorité des valeur voisinne, en prenant en parametre le nombre (K) de voisins à prendre en considération.","metadata":{}},{"cell_type":"markdown","source":"***Exemple***\n\n![image.png](attachment:df7170bb-50aa-44e8-88f4-13be78cca13f.png)","metadata":{},"attachments":{"df7170bb-50aa-44e8-88f4-13be78cca13f.png":{"image/png":"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"}}},{"cell_type":"markdown","source":"Dans cet exemple on prend en paramtre le point rouge\nSi on choix K=3, on aura plus de valeur de classe B dans le point rouge sera considéré de la classe B.\nSi on choix K=6, on aura plus de valeur de classe A dans le point rouge sera considéré de la classe A","metadata":{}},{"cell_type":"markdown","source":"***Génération de modèle**\n\nOn crée une fonction **executeKNN(trainS,testS,K)** dont **trainS** est la taille de des données d'entrainement, **testS** est la taille de des données de test, et **K** le nombre de voisin à prendre en considération.\nCela va ne premetre de d'essayer plusieurs modèle, maximiser l'usage du CPU et de choisir le meilleur modèle. ","metadata":{}},{"cell_type":"code","source":"from sklearn.datasets import load_iris\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.neighbors import KNeighborsClassifier\n\ndef executeKNN(trainS,testS,K):\n    # Split the data into training and test sets\n    X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=trainS, test_size=testS)\n    # Create the KNN classifier\n    knn = KNeighborsClassifier(n_neighbors=K)\n\n    # Fit the classifier to the training data\n    knn.fit(X_train, y_train)\n\n    # Make predictions on the test data\n    y_pred = knn.predict(X_test)\n\n    # Calculate the accuracy of the predictions\n    accuracy = knn.score(X_test, y_test)\n    print(\"Accuracy:\", accuracy)\n","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:12:46.019565Z","iopub.execute_input":"2023-01-08T11:12:46.019963Z","iopub.status.idle":"2023-01-08T11:12:46.028984Z","shell.execute_reply.started":"2023-01-08T11:12:46.019932Z","shell.execute_reply":"2023-01-08T11:12:46.027462Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"executeKNN(0.3, 0.1, 7)","metadata":{"execution":{"iopub.status.busy":"2023-01-08T10:59:49.008280Z","iopub.execute_input":"2023-01-08T10:59:49.008743Z","iopub.status.idle":"2023-01-08T11:00:28.229658Z","shell.execute_reply.started":"2023-01-08T10:59:49.008705Z","shell.execute_reply":"2023-01-08T11:00:28.227625Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***Submission***","metadata":{}},{"cell_type":"code","source":"train = pd.read_csv('/kaggle/input/competition/train.csv')\ntest= pd.read_csv('/kaggle/input/competition/test.csv')","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:44:00.788301Z","iopub.execute_input":"2023-01-08T11:44:00.788751Z","iopub.status.idle":"2023-01-08T11:44:14.033908Z","shell.execute_reply.started":"2023-01-08T11:44:00.788719Z","shell.execute_reply":"2023-01-08T11:44:14.032769Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = train[features]\ny_train = train['target']\nX_test = test[features]","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:45:54.410280Z","iopub.execute_input":"2023-01-08T11:45:54.410712Z","iopub.status.idle":"2023-01-08T11:45:54.493082Z","shell.execute_reply.started":"2023-01-08T11:45:54.410678Z","shell.execute_reply":"2023-01-08T11:45:54.491683Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train.head()","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:46:07.700673Z","iopub.execute_input":"2023-01-08T11:46:07.701149Z","iopub.status.idle":"2023-01-08T11:46:07.721416Z","shell.execute_reply.started":"2023-01-08T11:46:07.701114Z","shell.execute_reply":"2023-01-08T11:46:07.719478Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_test.head()","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:46:19.878984Z","iopub.execute_input":"2023-01-08T11:46:19.879530Z","iopub.status.idle":"2023-01-08T11:46:19.898532Z","shell.execute_reply.started":"2023-01-08T11:46:19.879491Z","shell.execute_reply":"2023-01-08T11:46:19.896929Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train.head()","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:46:41.858755Z","iopub.execute_input":"2023-01-08T11:46:41.859303Z","iopub.status.idle":"2023-01-08T11:46:41.869388Z","shell.execute_reply.started":"2023-01-08T11:46:41.859261Z","shell.execute_reply":"2023-01-08T11:46:41.867597Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.neighbors import KNeighborsClassifier\nmodel = KNeighborsClassifier(n_neighbors=7)\nmodel.fit(X_train,y_train)","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:47:25.160251Z","iopub.execute_input":"2023-01-08T11:47:25.160739Z","iopub.status.idle":"2023-01-08T11:47:28.842184Z","shell.execute_reply.started":"2023-01-08T11:47:25.160703Z","shell.execute_reply":"2023-01-08T11:47:28.841182Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions = model.predict(X_test)","metadata":{"execution":{"iopub.status.busy":"2023-01-08T11:47:38.656704Z","iopub.execute_input":"2023-01-08T11:47:38.657143Z","iopub.status.idle":"2023-01-08T12:02:41.639885Z","shell.execute_reply.started":"2023-01-08T11:47:38.657107Z","shell.execute_reply":"2023-01-08T12:02:41.636595Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submition = test[[\"id\"]]\nsubmition[\"target\"] = predictions\nsubmition.to_csv('submission.csv', index=False)\nsubmition","metadata":{"execution":{"iopub.status.busy":"2023-01-08T12:58:00.122420Z","iopub.execute_input":"2023-01-08T12:58:00.122917Z","iopub.status.idle":"2023-01-08T12:58:00.879121Z","shell.execute_reply.started":"2023-01-08T12:58:00.122862Z","shell.execute_reply":"2023-01-08T12:58:00.877896Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from IPython.display import HTML\nimport pandas as pd\nimport numpy as np\n\ndef create_download_link(title = \"Download CSV file\", filename = \"data.csv\"):  \n    html = '<a href={filename}>{title}</a>'\n    html = html.format(title=title,filename=filename)\n    return HTML(html)\ncreate_download_link(filename='submission.csv')","metadata":{"execution":{"iopub.status.busy":"2023-01-08T12:58:31.753864Z","iopub.execute_input":"2023-01-08T12:58:31.754354Z","iopub.status.idle":"2023-01-08T12:58:31.764210Z","shell.execute_reply.started":"2023-01-08T12:58:31.754314Z","shell.execute_reply":"2023-01-08T12:58:31.763002Z"},"trusted":true},"execution_count":null,"outputs":[]}]}