Machine Learning Avec Python - Guide Pratique
Machine Learning Avec Python - Guide Pratique
Plan du Livre :
8. Chapitre 8 : Clustering
o K-means
o DBSCAN
o Clustering hiérarchique
9. Chapitre 9 : Réduction de Dimension
o Analyse en composantes principales (PCA)
o Factorisation matricielle
Partie 7 : Annexes
Vecteurs et Matrices :
o Un vecteur est une liste de nombres, souvent représenté comme une
colonne ou une ligne.
o Une matrice est un tableau de nombres disposés en lignes et colonnes.
o Exemple en Python avec NumPy :
import numpy as np
vecteur = np.array([1, 2, 3])
matrice = np.array([[1, 2], [3, 4]])
print("Vecteur :", vecteur)
print("Matrice :\n", matrice)
Produit Matriciel :
o Le produit matriciel est une opération clé en machine learning,
notamment pour les réseaux de neurones.
o Exemple :
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
produit = np.dot(A, B)
print("Produit Matriciel :\n", produit)
Dérivées et Gradients :
o Les dérivées mesurent comment une fonction change lorsque ses entrées
changent.
o Le gradient est un vecteur de dérivées partielles, utilisé pour optimiser
les modèles.
o Exemple de calcul de dérivée avec SymPy :
import sympy as sp
x = sp.symbols('x')
f = x**2 + 3*x + 2
derivee = sp.diff(f, x)
print("Dérivée de f(x) :", derivee)
Distributions de Probabilité :
o La distribution normale (gaussienne) est souvent utilisée en machine
learning.
o Exemple de génération de données avec NumPy :
donnees = np.random.normal(0, 1, 1000) # Moyenne 0, écart-type 1
Théorème de Bayes :
o Utilisé dans les algorithmes de classification naïve bayésienne.
o Formule : P(A∣B)=P(B∣A)⋅P(A)P(B)P(A∣B)=P(B)P(B∣A)⋅P(A)
La régression est utilisée pour prédire une valeur continue (exemple : prix d'une
maison).
Régression linéaire : Modélise une relation linéaire entre les variables
indépendantes et la variable cible.
Régression polynomiale : Étend la régression linéaire pour modéliser des
relations non linéaires.
Hypothèse : y=β0+β1X1+β2X2+⋯+βnXn+ϵy=β0+β1X1+β2X2+⋯+βnXn+ϵ
Fonction de coût : Erreur quadratique moyenne (MSE).
Descente de gradient : Algorithme pour minimiser la fonction de coût.
# Génération de données
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# Entraînement du modèle
model = LinearRegression()
model.fit(X_train, y_train)
# Prédiction et évaluation
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"Erreur Quadratique Moyenne (MSE) : {mse:.2f}")
Chapitre 6 : Classification
La classification est utilisée pour prédire une classe discrète (exemple : spam ou
non spam).
Algorithmes populaires : Régression logistique, arbres de décision, SVM.
# Entraînement du modèle
model = LogisticRegression()
model.fit(X_train, y_train)
# Prédiction et évaluation
y_pred = model.predict(X_test)
ALPHONSE KAZADI | +243 858458037 | [email protected] 10
accuracy = accuracy_score(y_test, y_pred)
print(f"Précision : {accuracy:.2f}")
1. Utilisez le dataset Iris pour entraîner un modèle SVM avec un noyau RBF.
2. Évaluez le modèle avec la précision et la matrice de confusion.
Chapitre 8 : Clustering
8.2 K-means
# Génération de données
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=
0)
# Application de K-means
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)
Le deep learning est une sous-catégorie du machine learning qui utilise des
réseaux de neurones artificiels pour modéliser des patterns complexes dans les
données.
Applications : Vision par ordinateur, traitement du langage naturel,
reconnaissance vocale.
# Construction du modèle
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
# Compilation du modèle
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['ac
curacy'])
# Entraînement du modèle
model.fit(X_train, y_train, epochs=5, batch_size=64, validation_split=0.2)
ALPHONSE KAZADI | +243 858458037 | [email protected] 18
# Évaluation du modèle
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Précision sur l'ensemble de test : {test_acc:.2f}")
Les RNN sont conçus pour traiter des données séquentielles, comme les séries
temporelles ou le texte.
Applications : Traduction automatique, génération de texte.
# Génération de données
def generate_sequence(length):
return np.array([i/float(length) for i in range(length)])
X, y = generate_dataset(1000, 10)
X = X.reshape((X.shape[0], X.shape[1], 1))
# Entraînement du modèle
model.fit(X, y, epochs=200, batch_size=32)
# Prédiction
test_input = np.array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
test_input = test_input.reshape((1, 9, 1))
prediction = model.predict(test_input)
print(f"Prédiction : {prediction[0][0]:.2f}")
Étapes :
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['PRICE'] = boston.target
2. Exploration des Données :
o Analysez les données avec des statistiques descriptives et des
visualisations.
sns.pairplot(df)
plt.show()
3. Prétraitement des Données :
o Normalisez les features et divisez les données en ensembles
d'entraînement et de test.
X = df.drop('PRICE', axis=1)
y = df['PRICE']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state
=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"Erreur Quadratique Moyenne (MSE) : {mse:.2f}")
5. Évaluation du Modèle :
o Visualisez les prédictions par rapport aux valeurs réelles.
plt.scatter(y_test, y_pred)
plt.xlabel("Prix Réel")
plt.ylabel("Prix Prédit")
plt.title("Prix Réel vs Prix Prédit")
plt.show()
Étapes :
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
4. Compilation et Entraînement :
o Compilez et entraînez le modèle.
Étapes :
model = models.Sequential()
model.add(layers.Embedding(10000, 128))
model.add(layers.LSTM(64))
model.add(layers.Dense(1, activation='sigmoid'))
4. Compilation et Entraînement :
o Compilez et entraînez le modèle.