Maison développement back-end Tutoriel Python Explication détaillée de l'algorithme de descente de gradient en Python

Explication détaillée de l'algorithme de descente de gradient en Python

Jun 10, 2023 pm 02:30 PM
梯度下降 python编程 算法详解

La descente de gradient est un algorithme d'optimisation couramment utilisé et largement utilisé dans l'apprentissage automatique. Python est un excellent langage de programmation pour la science des données, et il existe de nombreuses bibliothèques prêtes à l'emploi pour implémenter des algorithmes de descente de gradient. Cet article présentera en détail l'algorithme de descente de gradient en Python, y compris les concepts et la mise en œuvre.

1. Définition de la descente de gradient
La descente de gradient est un algorithme itératif utilisé pour optimiser les paramètres d'une fonction. En apprentissage automatique, nous utilisons généralement la descente de gradient pour minimiser la fonction de perte. Par conséquent, la descente de gradient peut être considérée comme une méthode de minimisation d’une fonction. L'algorithme de descente de gradient peut être utilisé dans n'importe quel système où des gradients peuvent être calculés, y compris la régression linéaire, la régression logistique, les réseaux de neurones, etc.

2. Le principe de la descente de gradient
Le principe de base de l'algorithme de descente de gradient est de trouver la valeur minimale d'une fonction. Nous considérons généralement la valeur minimale d'une fonction comme la valeur minimale de la fonction des paramètres de la fonction (les paramètres font référence aux variables que nous devons optimiser). Par conséquent, nous devons calculer la dérivée de la fonction paramètre. Nous utilisons la dérivée pour déterminer la pente actuelle de la fonction et la multiplions par le taux d'apprentissage pour déterminer la direction dans laquelle nous devrions aller ensuite. Lorsque la dérivée d’une fonction est nulle, on a trouvé le minimum de la fonction. Dans les applications pratiques, nous n’avons pas besoin de garantir que nous pouvons trouver le minimum global de la fonction, il suffit de trouver son minimum local.

3. Étapes de l'algorithme de descente de gradient
1. Initialiser les paramètres. Nous devons définir les paramètres requis pour la fonction d'optimisation sur une valeur initiale, par exemple définir les paramètres sur zéro ou un nombre aléatoire.
2. Calculez la fonction de perte. Calcule une fonction de perte en utilisant les paramètres donnés.
3. Calculez le dégradé. Calculez le gradient de la fonction de perte. Le dégradé indique la pente de la fonction sous les paramètres actuels.
4. Mettre à jour les paramètres. Mettez à jour les paramètres en fonction des dégradés. Les paramètres mis à jour rapprocheront la fonction de perte de la solution optimale.
5. Répétez les étapes 2 à 4 jusqu'à ce que la condition d'arrêt soit remplie. La condition d'arrêt peut être d'atteindre un certain nombre d'itérations ou d'atteindre un certain niveau d'optimisation.

4. Python implémente la descente de gradient (descente de gradient par lots)
Ensuite, nous présenterons comment implémenter l'algorithme de descente de gradient par lots en Python. L'algorithme de descente de gradient par lots est une forme d'algorithme de descente de gradient et suppose que nous disposons de suffisamment de mémoire. pour traiter tous les échantillons d’entraînement en même temps.

Préparation des données
Nous utilisons l'ensemble de données intégré IRIS des ensembles de données de sklearn comme exemples de données pour notre implémentation de la descente de gradient par lots. Voici le package Python que nous devons utiliser et le code pour importer l'ensemble de données :

from sklearn.datasets import load_iris
import numpy as np

iris = load_iris()
X = iris.data
y = iris.target
Copier après la connexion

Prétraitement des données
Avant d'effectuer une descente de gradient par lots, nous devons normaliser nos données. Cela peut être fait en calculant la moyenne et l’écart type de chaque caractéristique.

mean = np.mean(X,axis=0)
std = np.std(X,axis=0)
X = (X - mean)/std
Copier après la connexion

Définissez la fonction de perte
Nous utiliserons la fonction d'erreur quadratique comme fonction de perte pour le modèle. Notre fonction de perte est :

def loss_function(X,y,theta):
    m = len(y)
    predictions = np.dot(X,theta)
    cost = (1/(2*m)) * np.sum((predictions-y)**2)
    return cost
Copier après la connexion

Définissez la fonction d'entraînement
Ensuite, nous définissons la fonction pour implémenter l'algorithme de descente de gradient par lots.

def gradient_descent(X,y,theta,learning_rate,num_iterations):
    m = len(y)
    cost_history = np.zeros(num_iterations)
    theta_history = np.zeros((num_iterations,theta.shape[0]))
    for i in range(num_iterations):
        prediction = np.dot(X,theta)
        theta = theta - (1/m)*learning_rate*(X.T.dot((prediction - y)))
        theta_history[i,:] = theta.T
        cost_history[i]  = loss_function(X,y,theta)
        
    return theta, cost_history, theta_history
Copier après la connexion

Exécutez la fonction de formation
Nous exécutons maintenant la fonction de formation du modèle et produisons les valeurs de coût et de paramètre du modèle final, puis ajustons les données de formation au modèle.

theta = np.zeros(X.shape[1])
learning_rate = 0.1
num_iterations = 1000
theta,cost_history,theta_history = gradient_descent(X,y,theta,learning_rate,num_iterations)

print('Theta: ',theta)
print('Final cost/MSE: ',cost_history[-1])
Copier après la connexion

5. Résumé
Dans cet article, nous avons expliqué l'algorithme de descente de gradient en Python, y compris les concepts et la mise en œuvre. Nous présentons d’abord la définition et le principe de l’algorithme de descente de gradient, puis décrivons en détail les étapes de l’algorithme de descente de gradient. Enfin, nous avons implémenté la descente de gradient par lots et exécuté l'échantillon de données pour obtenir le modèle entraîné et son coût.

L'algorithme de descente de gradient est un point de connaissance essentiel dans l'apprentissage automatique, et Python est l'un des langages de programmation les plus utilisés en science des données, il est donc très important d'apprendre l'algorithme de descente de gradient en Python. J'espère que cet article vous sera utile pour apprendre l'algorithme de descente de gradient en Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

AssertionError : Comment résoudre les erreurs d'assertion Python ? AssertionError : Comment résoudre les erreurs d'assertion Python ? Jun 25, 2023 pm 11:07 PM

Les assertions en Python sont un outil utile permettant aux programmeurs de déboguer leur code. Il est utilisé pour vérifier que l'état interne du programme répond aux attentes et générer une erreur d'assertion (AssertionError) lorsque ces conditions sont fausses. Pendant le processus de développement, des assertions sont utilisées lors des tests et du débogage pour vérifier si l'état du code correspond aux résultats attendus. Cet article abordera les causes, les solutions et comment utiliser correctement les assertions dans votre code. Cause de l'erreur d'assertion Erreur d'assertion réussie

Techniques d'échantillonnage stratifié en Python Techniques d'échantillonnage stratifié en Python Jun 10, 2023 pm 10:40 PM

Technique d'échantillonnage stratifié en Python L'échantillonnage est une méthode de collecte de données couramment utilisée en statistiques. Elle peut sélectionner une partie d'échantillons de l'ensemble de données pour analyse afin de déduire les caractéristiques de l'ensemble de données. À l’ère du Big Data, la quantité de données est énorme et l’utilisation d’échantillons complets à des fins d’analyse prend du temps et n’est pas économiquement pratique. Par conséquent, le choix d’une méthode d’échantillonnage appropriée peut améliorer l’efficacité de l’analyse des données. Cet article présente principalement les techniques d'échantillonnage stratifié en Python. Qu’est-ce que l’échantillonnage stratifié ? En échantillonnage, échantillonnage stratifié

Comment développer un scanner de vulnérabilités en Python Comment développer un scanner de vulnérabilités en Python Jul 01, 2023 am 08:10 AM

Présentation de la façon de développer un scanner de vulnérabilités via Python Dans l'environnement actuel de menaces croissantes pour la sécurité Internet, les scanners de vulnérabilités sont devenus un outil important pour protéger la sécurité du réseau. Python est un langage de programmation populaire, concis, facile à lire et puissant, adapté au développement de divers outils pratiques. Cet article explique comment utiliser Python pour développer un scanner de vulnérabilités afin de fournir une protection en temps réel à votre réseau. Étape 1 : Déterminer les cibles d'analyse Avant de développer un scanner de vulnérabilités, vous devez déterminer les cibles que vous souhaitez analyser. Il peut s'agir de votre propre réseau ou de tout ce que vous êtes autorisé à tester.

Explication détaillée de l'algorithme d'estimation du maximum de vraisemblance en Python Explication détaillée de l'algorithme d'estimation du maximum de vraisemblance en Python Jun 11, 2023 pm 03:43 PM

Explication détaillée de l'algorithme d'estimation du maximum de vraisemblance dans Python L'estimation du maximum de vraisemblance (MLE) est une méthode d'inférence statistique courante utilisée pour estimer la valeur la plus probable d'un paramètre à partir d'un ensemble de données d'observation. L'idée principale est de déterminer les valeurs optimales des paramètres en maximisant la fonction de vraisemblance des données. En Python, l'algorithme d'estimation du maximum de vraisemblance est largement utilisé. Cet article présentera en détail l'algorithme d'estimation du maximum de vraisemblance en Python, notamment.

Comment utiliser Python pour les scripts et l'exécution sous Linux Comment utiliser Python pour les scripts et l'exécution sous Linux Oct 05, 2023 am 11:45 AM

Comment utiliser Python pour écrire et exécuter des scripts sous Linux Dans le système d'exploitation Linux, nous pouvons utiliser Python pour écrire et exécuter divers scripts. Python est un langage de programmation concis et puissant qui fournit une multitude de bibliothèques et d'outils pour rendre la création de scripts plus facile et plus efficace. Ci-dessous, nous présenterons les étapes de base de l'utilisation de Python pour l'écriture et l'exécution de scripts sous Linux, et fournirons quelques exemples de code spécifiques pour vous aider à mieux le comprendre et l'utiliser. Installer Python

Explication détaillée de l'algorithme du modèle de mélange gaussien (GMM) en Python Explication détaillée de l'algorithme du modèle de mélange gaussien (GMM) en Python Jun 10, 2023 pm 03:17 PM

Le modèle de mélange gaussien (GMM) est un algorithme de clustering couramment utilisé. Il modélise un groupe de données en le divisant en plusieurs distributions normales, chaque distribution représentant un sous-ensemble des données. En Python, l'algorithme GMM peut être facilement implémenté à l'aide de la bibliothèque scikit-learn. 1. Principe de l'algorithme GMM L'idée de base de l'algorithme GMM est la suivante : supposer que chaque point de données de l'ensemble de données provient de l'une des multiples distributions gaussiennes. Autrement dit, chaque point de données de l'ensemble de données peut être représenté comme un groupe linéaire de nombreuses distributions gaussiennes.

Utilisation de la fonction sqrt() en Python Utilisation de la fonction sqrt() en Python Feb 21, 2024 pm 03:09 PM

Exemples d'utilisation et de code de la fonction sqrt() en Python 1. Fonction et introduction de la fonction sqrt() Dans la programmation Python, la fonction sqrt() est une fonction du module mathématique, et sa fonction est de calculer la racine carrée de un numéro. La racine carrée signifie qu'un nombre multiplié par lui-même est égal au carré du nombre, c'est-à-dire x*x=n, alors x est la racine carrée de n. La fonction sqrt() peut être utilisée dans le programme pour calculer la racine carrée. 2. Comment utiliser la fonction sqrt() en Python, sq

Pratique de programmation Python : comment utiliser l'API Baidu Map pour générer des fonctions de carte statique Pratique de programmation Python : comment utiliser l'API Baidu Map pour générer des fonctions de carte statique Jul 30, 2023 pm 09:05 PM

Pratique de programmation Python : Comment utiliser l'API Baidu Map pour générer des fonctions de carte statique Introduction : Dans la société moderne, les cartes sont devenues un élément indispensable de la vie des gens. Lorsque nous travaillons avec des cartes, nous avons souvent besoin d'obtenir une carte statique d'une zone spécifique à afficher sur une page Web, une application mobile ou un rapport. Cet article explique comment utiliser le langage de programmation Python et l'API Baidu Map pour générer des cartes statiques et fournit des exemples de code pertinents. 1. Travail de préparation Pour réaliser la fonction de génération de cartes statiques à l'aide de l'API Baidu Map, je

See all articles