Comment effectuer le test Grubbs en Python
Présentation
Le test de Grubbs est une méthode de test d'hypothèses statistiques utilisée pour détecter les valeurs aberrantes dans un ensemble de données. Les valeurs aberrantes sont des observations affectées à une distribution de données, également appelées anomalies. Les ensembles de données comportant des valeurs aberrantes ont tendance à être plus susceptibles au surapprentissage que les données présentant une distribution normale/gaussienne. Par conséquent, il est nécessaire de traiter les valeurs aberrantes avant la modélisation de l’apprentissage automatique. Avant le traitement, nous devons détecter et localiser les valeurs aberrantes dans l'ensemble de données. Les techniques de détection des valeurs aberrantes les plus populaires sont QQPlot, l'intervalle interquartile et le test statistique de Grubbs. Cependant, cet article ne discutera que du test de Grubbs pour détecter les valeurs aberrantes. Vous apprendrez : Qu'est-ce qu'un test Grubbs et comment l'implémenter en Python.
Qu'est-ce qu'une valeur aberrante ?
Les valeurs aberrantes sont des observations de données qui sont numériquement éloignées des autres valeurs de données. Ces valeurs sortent de la plage des données normalement distribuées. L'ensemble de données doit contenir 67 % des enregistrements au premier écart type, 95 % des données au deuxième écart type et 99,7 % des points au troisième écart type pour obtenir une distribution normale. En d’autres termes, les points de données doivent se situer entre le premier et le troisième quartile. Nous considérons les enregistrements inférieurs au premier quartile et supérieurs au troisième quartile comme des valeurs aberrantes ou aberrantes.
Test d'hypothèse statistique Grabbs
Comme tout autre test d'hypothèse statistique, le test de Grubbs peut également approuver ou rejeter l'hypothèse nulle (H0) ou l'hypothèse alternative (H1). Le test de Grubbs est un test qui détecte les valeurs aberrantes dans un ensemble de données.
Nous pouvons effectuer le test de Grubbs de deux manières : Test unilatéral et Test bilatéral, pour des ensembles de données univariées ou des échantillons presque normaux avec des distributions d'au moins sept variables. Ce test est également appelé test d'écart studentisé extrême ou test de résidu maximal normalisé.
Le test Grubbs utilise les hypothèses suivantes -
Null (H0) : l'ensemble de données n'a aucune valeur aberrante.
Alternative (H1) : l'ensemble de données n'a qu'une seule valeur aberrante.
Test Grabbs en Python
Python peut relever n'importe quel défi de programmation grâce à sa vaste collection de bibliothèques. Ces bibliothèques fournissent des méthodes intégrées qui peuvent être utilisées directement pour effectuer n'importe quelle opération, test statistique, etc. De même, Python dispose d'une bibliothèque qui contient des méthodes permettant d'effectuer des tests Grubbs afin de détecter les valeurs aberrantes. Cependant, nous explorerons deux manières d'implémenter les tests Grubbs en Python : les fonctions intégrées dans les bibliothèques et l'implémentation de formules à partir de zéro.
Bibliothèque Outlier et Smirnov_grubbs
Installons d'abord la bibliothèque outlier_utils à l'aide de la commande suivante.
!pip install outlier_utils
Créons maintenant un ensemble de données contenant des valeurs aberrantes et effectuons un test Grubbs.
Inspection Grubb double face
Grammaire
grubbs.test(data, alpha=.05)
Paramètres
data - Vecteur numérique de valeurs de données.
alpha - Le niveau de signification du test.
Instructions
Dans cette méthode, l'utilisateur doit utiliser la fonction smirnov_grubbs.test() du package outliers et transmettre les données nécessaires en entrée afin d'exécuter les tests de Grubb.
Exemple
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([ 5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test grubbs.test(data, alpha=.05)
Sortie
array([ 5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29])
Le code ci-dessus commence simplement par charger la bibliothèque et les données, et utilise enfin la méthode "test" pour effectuer un test Grubbs sur ces données. Ce test détecte les valeurs aberrantes des deux côtés (gauche et droite), ou les valeurs inférieures au premier quartile et supérieures au troisième quartile. Les données ne comportaient qu'une seule valeur aberrante (40), qui a été supprimée à l'aide du test de Grubbs.
Test de Grubbs unilatéral
Synatx
grubbs.max_test(data, alpha=.05)
Instructions
Dans cette méthode, l'utilisateur doit appeler la fonction grubbs.min_test() pour obtenir la valeur aberrante minimale de l'ensemble de données fourni, ou appeler la fonction grubbs.max_test() pour obtenir la valeur aberrante maximale de l'ensemble de données fourni. Un test de Grubb unilatéral a été obtenu.
Exemple
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test for minimum value is an outlier print(grubbs.min_test(data, alpha=.05)) #perform Grubbs' test for minimum value is an outlier grubbs.max_test(data, alpha=.05)
Sortie
[ 5 14 15 15 14 19 17 16 20 22 8 21 28 11 9 29 40] array([ 5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29])
Le test Grubbs unilatéral détecte les valeurs aberrantes en dessous du premier quartile ou au-dessus du troisième quartile. Nous pouvons voir que la méthode min_test supprime les valeurs aberrantes du plus petit côté des données, tandis que la méthode max_test supprime les valeurs aberrantes du haut des données.
Mise en œuvre de la formule
Ici, nous utiliserons Python pour implémenter la formule de test Grubbs suivante. Nous utiliserons les bibliothèques Numpy et Scipy pour y parvenir.
Grammaire
g_calculated = numerator/sd_x g_critical = ((n - 1) * np.sqrt(np.square(t_value_1))) / (np.sqrt(n) * np.sqrt(n - 2 + np.square(t_value_1)))
Algorithme
Les étapes de mise en œuvre sont les suivantes -
Calculez la moyenne des valeurs de l'ensemble de données.
Calculez l'écart type des valeurs de l'ensemble de données.
Pour implémenter la formule du test Grubbs, calculez le numérateur en soustrayant la valeur de chaque valeur de l'ensemble de données de sa moyenne.
Divisez la valeur du numérateur par l'écart type pour obtenir le score calculé.
Calculez les scores critiques pour la même valeur.
Si la valeur critique est supérieure à la valeur calculée, il n'y a pas de valeur aberrante dans l'ensemble de données, sinon il y a une valeur aberrante.
Exemple
import numpy as np import scipy.stats as stats ## define data x = np.array([12,13,14,19,21,23]) y = np.array([12,13,14,19,21,23,45]) ## implement Grubbs test def grubbs_test(x): n = len(x) mean_x = np.mean(x) sd_x = np.std(x) numerator = max(abs(x-mean_x)) g_calculated = numerator/sd_x print("Grubbs Calculated Value:",g_calculated) t_value_1 = stats.t.ppf(1 - 0.05 / (2 * n), n - 2) g_critical = ((n - 1) * np.sqrt(np.square(t_value_1))) / (np.sqrt(n) * np.sqrt(n - 2 + np.square(t_value_1))) print("Grubbs Critical Value:",g_critical) if g_critical > g_calculated: print("We can see from the Grubbs test that the calculated value is less than the crucial value. Recognize the null hypothesis and draw the conclusion that there are no outliers\n") else: print("We see from the Grubbs test that the estimated value exceeds the critical value. Reject the null theory and draw the conclusion that there are outliers\n") grubbs_test(x) grubbs_test(y)
Sortie
Grubbs Calculated Value: 1.4274928542926593 Grubbs Critical Value: 1.887145117792422 We can see from the Grubbs test that the calculated value is less than the crucial value. Recognize the null hypothesis and draw the conclusion that there are no outliers Grubbs Calculated Value: 2.2765147221587774 Grubbs Critical Value: 2.019968507680656 We see from the Grubbs test that the estimated value exceeds the critical value. Reject the null theory and draw the conclusion that there are outliers
Le résultat du test Grubb montre que le tableau x n'a aucune valeur aberrante, mais y a 1 valeur aberrante.
Conclusion
Nous avons découvert les valeurs aberrantes et les tests de Grubbs en Python dans cet article. Terminons cet article par quelques points clés.
Les valeurs aberrantes sont des enregistrements qui se situent en dehors de la plage interquartile.
Les valeurs aberrantes ne sont pas conformes à la distribution normale de l'ensemble de données.
Nous pouvons utiliser le test statistique d'hypothèse de Grubbs pour détecter les valeurs aberrantes.
Nous pouvons exécuter des tests Grubbs en utilisant les méthodes intégrées fournies dans la bibliothèque outlier_utils.
Le test Grubbs recto-verso détecte et supprime les valeurs aberrantes sur les côtés gauche et droit.
Cependant, le test unilatéral de Grubbs détectera les valeurs aberrantes de chaque côté.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Cet article a sélectionné plusieurs sites Web de projet "finis" Python et des portails de ressources d'apprentissage "Blockbuster" de haut niveau pour vous. Que vous recherchiez l'inspiration de développement, l'observation et l'apprentissage du code source au niveau de la maîtrise ou que vous amélioriez systématiquement vos capacités pratiques, ces plateformes ne sont pas manquées et peuvent vous aider à devenir un maître Python rapidement.

Utilisez Sub-Process.run () pour exécuter en toute sécurité les commandes de shell et la sortie de capture. Il est recommandé de transmettre des paramètres dans les listes pour éviter les risques d'injection; 2. Lorsque les caractéristiques du shell sont nécessaires, vous pouvez définir Shell = True, mais méfiez-vous de l'injection de commande; 3. Utilisez un sous-processus.popen pour réaliser le traitement de sortie en temps réel; 4. SET CHECK = TRUE pour lancer des exceptions lorsque la commande échoue; 5. Vous pouvez appeler directement des chaînes pour obtenir la sortie dans un scénario simple; Vous devez donner la priorité à Sub-Process.run () dans la vie quotidienne pour éviter d'utiliser OS.System () ou les modules obsolètes. Les méthodes ci-dessus remplacent l'utilisation du noyau de l'exécution des commandes shell dans Python.

Utilisez le plot conjoint de Seaborn pour visualiser rapidement la relation et la distribution entre deux variables; 2. Le tracé de diffusion de base est implémenté par sn.jointplot (data = pointes, x = "total_bill", y = "Tip", kind = "dispers"), le centre est un tracé de dispersion et l'histogramme est affiché sur les côtés supérieur et inférieur et droit; 3. Ajouter des lignes de régression et des informations de densité à un kind = "reg" et combiner marginal_kws pour définir le style de tracé de bord; 4. Lorsque le volume de données est important, il est recommandé d'utiliser "Hex"

Utilisez httpx.asyncclient pour initier efficacement les demandes HTTP asynchrones. 1. 2. Combiner asyncio.gather à se combiner avec Asyncio.gather peut considérablement améliorer les performances, et le temps total est égal à la demande la plus lente; 3. Prise en charge des en-têtes personnalisés, des paramètres d'authentification, de base_url et de délai d'expiration; 4. Peut envoyer des demandes de poste et transporter des données JSON; 5. Faites attention pour éviter de mélanger le code asynchrone synchrone. Le support proxy doit prêter attention à la compatibilité back-end, ce qui convient aux robots ou à l'agrégation API et à d'autres scénarios.

Les listes de chaînes peuvent être fusionnées avec la méthode join (), telles que '' .join (mots) pour obtenir "HelloworldFrompython"; 2. Les listes de nombres doivent être converties en chaînes avec MAP (STR, nombres) ou [STR (x) Forxinnumbers] avant de rejoindre; 3. Toute liste de types peut être directement convertie en chaînes avec des supports et des devis, adaptées au débogage; 4. Les formats personnalisés peuvent être implémentés par des expressions de générateur combinées avec join (), telles que '|' .join (f "[{item}]" ForIteminitems)

PythonCanBeoptimizedFormemory-Boundoperations AdreductoverHeadHroughGenerators, EfficientDatastructures et ManagingObjectliFetimes.first, useGeneratorsInSteadofListStoproceSlargedataseSeItematatime, EvitingLoadingEnteryToMeToMeMory.

Installez PYODBC: utilisez la commande PiPInstallpyodbc pour installer la bibliothèque; 2. Connectez SQLServer: utilisez la chaîne de connexion contenant le pilote, le serveur, la base de données, l'UID / PWD ou TrustEd_Connection via la méthode pyoDBC.Connect () et prendre en charge l'authentification SQL ou l'authentification Windows respectivement; 3. Vérifiez le pilote installé: exécutez pyodbc.Drivers () et filtrez le nom du pilote contenant «SQLServer» pour vous assurer que le nom du pilote correct est utilisé tel que «ODBCDriver17 pour SQLServer»; 4. Paramètres clés de la chaîne de connexion

ShutLil.rmtree () est une fonction de Python qui supprime récursivement l'intégralité de l'arborescence du répertoire. Il peut supprimer les dossiers spécifiés et tous les contenus. 1. Utilisation de base: utilisez ShutLil.rmtree (Path) pour supprimer le répertoire, et vous devez gérer FileLenotFoundError, PermissionError et autres exceptions. 2. Application pratique: vous pouvez effacer les dossiers contenant des sous-répertoires et des fichiers en un seul clic, tels que des données temporaires ou des répertoires mis en cache. 3. Remarques: L'opération de suppression n'est pas restaurée; FilenotFoundError est lancé lorsque le chemin n'existe pas; Il peut échouer en raison d'autorisations ou d'occupation des fichiers. 4. Paramètres facultatifs: les erreurs peuvent être ignorées par ignore_errors = true
