Présentation des machines learning utilisées dans le cadre des différentes projets.
Réfs : https://dev.to/foyzulkarim/a-beginners-journey-through-the-machine-learning-pipeline-fc7
Book : The Data Science Second edition ; Filed CADY ; WILEY
Book : How Machine Learning is innovating Today’s World : A Concise Technical Guide : WILEY
Book : The Data Science Workshop — Second edition : Pack Publising
Description des machines learning :
Le ML est un sous-ensemble de l’IA, où les modèles apprennent à partir d’un historique de données.
Les ML classiques:
- Classification : affecte des labels aux entrées
- Régression : prédiction d’une valeur continue.
- Clustering : groupement d’items similaires sans labels prédéfinis.
Les composants clés du ML
- Data : données historiques
- Model : la structure de votre algorithme , laquelle peut-être un réseau de neurones, un arbre de décision ou tout autre modèles mathématique.
- Weights/paramètres : les valeurs numériques internes que le modèle ajustent durant l’entrainement.
- Algorithme : la logique qui met à jour les poids et fait la prédiction.
Des Data brutes à un dataset prêt pour l’apprentissage
Préparation des données :
- Data Collection : : construire votre dataset en fonction de vos attentes.
- Cleaning : maitriser les valerus manquantes, suppression des données dupliquées et des données “outliers”
- Feature Engineering & Preprocessing : trasnformer vos données brutes vers des formats plus manipulables ceci inclue la normalisation des données, encoder les variables catégorielles ou extraire des données supplémentaires ( l’âge d’une maison basée sur l’année de construction)
Exemple de code :
import pandas as pd
# Chargement de votre dataset
data=pd.read_csv('housing_data.csv')
# nettoyer et traiter les données
data=data.dropna()
data['age']=2024-data['year_built']
#séparer ce que l'on cherche de ce que l'on a
X=data[['square_feet','bedrooms','bathrooms','age']]
y=data['price']
Choisir et entraîner un modèle
Une fois les données nettoyées , vous pouvez choisir l’algorithme approprié. Ce choix dépend de plusieurs facteurs :
Le type de problème (classification, régression) et les ressources de calculs disponibles.
Choix
- Linear/Logistic regression : simple, modèles interprétables souvent utilisé comme base.
- Decision Trees/ Random Forests : bon pour déterminer une variété de type de données et facile à interpréter.
- Neural Network : plus complexe et capable de représenter des structures non linéaires.
Training :
1/ Séparer les données pour l’entrainement et le test.
2/ Transmettre de manière itérative les données d’entrainement au modèle
- faire le modèle de prédiction
- function Loss : évalue l’erreur entre la prédiction et la cible
- algorithme d’optimisation pour mettre à jour les poids afin de réduire les erreurs à chaque itération.
Exemple : (utilisant scikit-learn)
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegression
# split les données
X_train, X_test, y_train, x_test = train_test_split(X,y, test_size=0.2)
# choisir un modèle
model=RandomForestregression(n_estimators=100, random_state=42)
#train le modèle
model.fit(X_train, y_train)
Evaluation et analyse du modèle :
Une fois le modèle entraîne, vous devez vérifier les performances sur un ensemble de tests qui n’a pas été utilisé pour l’entrainement.
Accuracy : pour des tâches de classification
Mean Squared Error (MSE) :
Si la performance n’est pas satisfaisante, vous pouvez :
- collecter plus de données
- essayer différentes ‘hyperparamètres’ ou passer à des modèles complexes
- utiliser des techniques pour éviter les ‘overfitting’
from sklearn.metrics impor mean_squared_error
predictions=model.predict(X_test)
mse=mean_squared_error(y_test,predictions)
print("mean__Squared_error", mse)
Sauvegarder voter modèle
Après avoir mis au point votre modèle, il faut le sauvegarder : architecture et poids.
- Scikit-learn –> on peut utiliser pickel ou joblib
- TensorFlow/Keras -> .h5
- pyTorch –> .pth ou .pt
import joblib
#sauvegarder
joblib.dump(model, "trained_model.joblib")
Déployer et utiliser le modèle sur une autre machine
import joblib
# Chargement du modèle
loaded_model=joblib.load("trained_model.joblib")
# Prépare le nouvelle entrée à prédire
new_data=[[2000,3,2,20]]
# Faire la prédiction
prediction=loaded_model.predict(new_data)
print("Predcited price :" , prediction)
ML pour ajuster le modèle on a :
Weights : valeur numérique qui détermine la force et la direction de la connexion entre un feature et le modèle de neurones.
Biases : paramètres additionnels qui autorise le modèle à ajuster les sorties indépendamment des entrées
Le cycle de prédiction :
Outillages et formats complémentaires :
Format ONNX : Open Neural Network Exchange utilisé dans le contexte aizynthfinder.
Format standard pour représenter un modèle de machine learning. . ONNX définit un ensemble d’opérateurs et de format de fichiers pour permettre aux développeurs d’IA d’utiliser ces modèles dans différents frameworks, outils et compilateurs.
Pour visualiser ces modèles possibilités d’utiliser Netron