{"id":2518,"date":"2024-12-16T11:56:00","date_gmt":"2024-12-16T10:56:00","guid":{"rendered":"https:\/\/spgoo.org\/?page_id=2518"},"modified":"2024-12-21T12:00:39","modified_gmt":"2024-12-21T11:00:39","slug":"machines-learning","status":"publish","type":"page","link":"https:\/\/spgoo.org\/?page_id=2518","title":{"rendered":"Machines learning"},"content":{"rendered":"\n<p class=\"has-medium-font-size\">Pr\u00e9sentation des machines learning utilis\u00e9es dans le cadre des diff\u00e9rentes projets.<\/p>\n\n\n\n<p>R\u00e9fs : <a href=\"https:\/\/dev.to\/foyzulkarim\/a-beginners-journey-through-the-machine-learning-pipeline-fc7\">https:\/\/dev.to\/foyzulkarim\/a-beginners-journey-through-the-machine-learning-pipeline-fc7<\/a><\/p>\n\n\n\n<p>Book : The Data Science Second edition ; Filed CADY ; WILEY<br>Book : How Machine Learning is innovating Today&#8217;s World : A Concise Technical Guide : WILEY<br>Book : The Data Science Workshop &#8212; Second edition : Pack Publising <\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-color has-text-color has-link-color has-medium-font-size wp-elements-72874e5340b6d5ec7ca584b34a76aeef\">Description des machines learning : <\/p>\n\n\n\n<p>Le ML est un sous-ensemble de l&#8217;IA, o\u00f9 les mod\u00e8les apprennent \u00e0 partir d&#8217;un historique de donn\u00e9es.<\/p>\n\n\n\n<p>Les ML classiques: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Classification : affecte des labels aux entr\u00e9es<\/li>\n\n\n\n<li>R\u00e9gression : pr\u00e9diction d&#8217;une valeur continue.<\/li>\n\n\n\n<li>Clustering : groupement d&#8217;items similaires sans labels pr\u00e9d\u00e9finis.<\/li>\n<\/ul>\n\n\n\n<p>Les composants cl\u00e9s du ML<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data : donn\u00e9es historiques <\/li>\n\n\n\n<li>Model : la structure de votre algorithme , laquelle peut-\u00eatre un r\u00e9seau de neurones, un arbre de d\u00e9cision ou tout autre mod\u00e8les math\u00e9matique.<\/li>\n\n\n\n<li>Weights\/param\u00e8tres : les valeurs num\u00e9riques internes que le mod\u00e8le ajustent durant l&#8217;entrainement.<\/li>\n\n\n\n<li>Algorithme : la logique qui met \u00e0 jour les poids et fait la pr\u00e9diction.<\/li>\n<\/ul>\n\n\n\n<p>Des Data brutes \u00e0 un dataset pr\u00eat pour l&#8217;apprentissage<\/p>\n\n\n\n<p>Pr\u00e9paration des donn\u00e9es : <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data Collection : : construire votre dataset en fonction de vos attentes. <\/li>\n\n\n\n<li>Cleaning : maitriser les valerus manquantes, suppression des donn\u00e9es dupliqu\u00e9es  et des donn\u00e9es &#8220;outliers&#8221; <\/li>\n\n\n\n<li>Feature Engineering &amp; Preprocessing : trasnformer vos donn\u00e9es brutes vers des formats plus manipulables ceci inclue la normalisation des donn\u00e9es, encoder les variables cat\u00e9gorielles ou extraire des donn\u00e9es suppl\u00e9mentaires  ( l&#8217;\u00e2ge d&#8217;une maison bas\u00e9e sur l&#8217;ann\u00e9e de construction)<\/li>\n<\/ul>\n\n\n\n<p>Exemple de code : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pandas as pd\n# Chargement de votre dataset\ndata=pd.read_csv('housing_data.csv')\n# nettoyer  et traiter les donn\u00e9es\ndata=data.dropna()\ndata&#91;'age']=2024-data&#91;'year_built']\n#s\u00e9parer ce que l'on cherche de ce que l'on a \nX=data&#91;&#91;'square_feet','bedrooms','bathrooms','age']]\ny=data&#91;'price']\n<\/code><\/pre>\n\n\n\n<p>Choisir et entra\u00eener un mod\u00e8le <\/p>\n\n\n\n<p>Une fois les donn\u00e9es nettoy\u00e9es , vous pouvez choisir l&#8217;algorithme appropri\u00e9. Ce choix d\u00e9pend de plusieurs facteurs :<br>Le type de probl\u00e8me (classification, r\u00e9gression) et les ressources de calculs disponibles. <\/p>\n\n\n\n<p>Choix <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Linear\/Logistic regression : simple, mod\u00e8les interpr\u00e9tables souvent utilis\u00e9 comme base.<\/li>\n\n\n\n<li>Decision Trees\/ Random Forests : bon pour d\u00e9terminer une vari\u00e9t\u00e9 de type de donn\u00e9es et facile \u00e0 interpr\u00e9ter.<\/li>\n\n\n\n<li>Neural Network :  plus complexe et capable de repr\u00e9senter des structures  non lin\u00e9aires. <\/li>\n<\/ul>\n\n\n\n<p>Training :<\/p>\n\n\n\n<p>1\/ S\u00e9parer les donn\u00e9es pour l&#8217;entrainement et le test. <\/p>\n\n\n\n<p>2\/ Transmettre de mani\u00e8re it\u00e9rative les donn\u00e9es d&#8217;entrainement au mod\u00e8le <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>faire le mod\u00e8le de pr\u00e9diction<\/li>\n\n\n\n<li>function Loss : \u00e9value l&#8217;erreur entre la pr\u00e9diction et la cible<\/li>\n\n\n\n<li>algorithme d&#8217;optimisation pour mettre \u00e0 jour les poids afin de r\u00e9duire les erreurs \u00e0 chaque it\u00e9ration.<\/li>\n<\/ul>\n\n\n\n<p>Exemple : (utilisant scikit-learn)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestRegression\n# split les donn\u00e9es\nX_train, X_test, y_train, x_test = train_test_split(X,y, test_size=0.2)\n# choisir un mod\u00e8le \nmodel=RandomForestregression(n_estimators=100, random_state=42)\n#train le mod\u00e8le\nmodel.fit(X_train, y_train)<\/code><\/pre>\n\n\n\n<p>Evaluation et analyse du mod\u00e8le :<\/p>\n\n\n\n<p>Une fois le mod\u00e8le entra\u00eene, vous devez v\u00e9rifier les performances sur un ensemble de tests qui n&#8217;a pas \u00e9t\u00e9 utilis\u00e9 pour l&#8217;entrainement. <\/p>\n\n\n\n<p><strong>Accuracy<\/strong> : pour des t\u00e2ches de classification<br><strong>Mean Squared Erro<\/strong>r (MSE) :  <\/p>\n\n\n\n<p>Si la performance n&#8217;est pas satisfaisante, vous pouvez :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>collecter plus de donn\u00e9es <\/li>\n\n\n\n<li>essayer diff\u00e9rentes &#8216;hyperparam\u00e8tres&#8217; ou passer \u00e0 des mod\u00e8les complexes<\/li>\n\n\n\n<li>utiliser des techniques pour \u00e9viter les &#8216;overfitting&#8217;<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>from sklearn.metrics impor mean_squared_error\npredictions=model.predict(X_test)\nmse=mean_squared_error(y_test,predictions)\nprint(\"mean__Squared_error\", mse)<\/code><\/pre>\n\n\n\n<p>Sauvegarder voter mod\u00e8le <\/p>\n\n\n\n<p>Apr\u00e8s avoir mis au point votre mod\u00e8le, il faut le sauvegarder : architecture et poids. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Scikit-learn &#8211;&gt; on peut utiliser pickel ou joblib <\/li>\n\n\n\n<li>TensorFlow\/Keras -&gt; .h5<\/li>\n\n\n\n<li>pyTorch &#8211;&gt; .pth ou .pt<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>import joblib\n#sauvegarder\njoblib.dump(model, \"trained_model.joblib\")<\/code><\/pre>\n\n\n\n<p>D\u00e9ployer et utiliser le mod\u00e8le sur une autre machine<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import joblib\n# Chargement du mod\u00e8le\nloaded_model=joblib.load(\"trained_model.joblib\")\n# Pr\u00e9pare le nouvelle entr\u00e9e \u00e0 pr\u00e9dire\nnew_data=&#91;&#91;2000,3,2,20]]\n# Faire la pr\u00e9diction\nprediction=loaded_model.predict(new_data)\nprint(\"Predcited price :\" , prediction)<\/code><\/pre>\n\n\n\n<p>ML pour ajuster le mod\u00e8le on a :<br><strong>Weights<\/strong> : valeur num\u00e9rique qui d\u00e9termine la force et la direction de la connexion entre un feature et le mod\u00e8le de neurones.<br><strong>Biases<\/strong> : param\u00e8tres additionnels qui autorise le mod\u00e8le \u00e0 ajuster les sorties ind\u00e9pendamment des entr\u00e9es<\/p>\n\n\n\n<p>Le cycle de pr\u00e9diction :<\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-color has-text-color has-link-color has-medium-font-size wp-elements-282e771ff8b146e71121715f9bea454d\">Outillages et formats compl\u00e9mentaires : <\/p>\n\n\n\n<p>Format <a href=\"https:\/\/onnx.ai\/\">ONNX<\/a> : Open Neural Network Exchange utilis\u00e9 dans le contexte <a href=\"https:\/\/spgoo.org\/?page_id=2110\" data-type=\"page\" data-id=\"2110\">aizynthfinder<\/a>.<\/p>\n\n\n\n<p>Format standard pour repr\u00e9senter un mod\u00e8le de machine learning. . ONNX d\u00e9finit un ensemble d&#8217;<a href=\"https:\/\/onnx.ai\/onnx\/operators\/\">op\u00e9rateurs<\/a> et de format de fichiers pour permettre aux d\u00e9veloppeurs d&#8217;IA d&#8217;utiliser ces mod\u00e8les dans diff\u00e9rents frameworks, outils et compilateurs.<\/p>\n\n\n\n<p>Pour visualiser ces mod\u00e8les possibilit\u00e9s d&#8217;utiliser <a href=\"https:\/\/github.com\/lutzroeder\/netron\">Netron<\/a> <\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pr\u00e9sentation des machines learning utilis\u00e9es dans le cadre des diff\u00e9rentes projets. R\u00e9fs : https:\/\/dev.to\/foyzulkarim\/a-beginners-journey-through-the-machine-learning-pipeline-fc7 Book : The Data Science Second edition ; Filed CADY ; WILEYBook : How Machine Learning is innovating Today&#8217;s World : A Concise Technical Guide : WILEYBook : The Data Science Workshop &#8212; Second edition : Pack Publising Description des machines [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2518","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/2518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spgoo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2518"}],"version-history":[{"count":27,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/2518\/revisions"}],"predecessor-version":[{"id":2855,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/2518\/revisions\/2855"}],"wp:attachment":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}