recherche
Maisondéveloppement back-endTutoriel PythonDétection et gestion des problèmes de multicolinéarité en régression à l'aide de Python

Détection et gestion des problèmes de multicolinéarité en régression à l'aide de Python

Aug 18, 2023 pm 03:05 PM
pythonmulticolinéaritéTraitement de régression

La multicolinéarité fait référence au degré élevé d'intercorrélation entre les variables indépendantes dans le modèle de régression. Cela peut conduire à des coefficients inexacts dans le modèle, ce qui rend difficile l'évaluation de l'impact de différentes variables indépendantes sur la variable dépendante. Dans ce cas, il est nécessaire d'identifier et de gérer la multicolinéarité du modèle de régression et de combiner différentes procédures et leurs résultats, que nous expliquerons étape par étape.

Méthode

  • Détecter la multicolinéarité

  • Gestion de la multicolinéarité

Algorithme

Étape 1 − Importer les bibliothèques nécessaires

Étape 2 - Charger les données dans les pandas Dataframes

Étape 3 - Créer une matrice de corrélation à l'aide de prédicteurs

Étape 4 − Créez une carte thermique de la matrice de corrélation pour visualiser la corrélation

Étape 5 - Calculez le facteur d'inflation de la variance pour chaque prédicteur de la sortie

Étape 6 − Déterminer le prédicteur

Étape 7 - Le prédicteur doit être supprimé

Étape 8 - Réexécutez le modèle de régression

Étape 9 - Vérifiez à nouveau.

Méthode 1 : Détection de la multicolinéarité

Utilisez la fonction corr() du package pandas pour déterminer la matrice de corrélation des variables indépendantes. Utilisez la bibliothèque Seaborn pour générer des cartes thermiques afin d'afficher la matrice de corrélation. Utilisez la fonction variance_inflation_factor() du package statsmodels pour déterminer le facteur d'inflation de la variance (VIF) pour chaque variable indépendante. Un VIF supérieur à 5 ou 10 indique une multicolinéarité élevée.

La traduction chinoise de

Exemple-1

est :

Exemple-1

Dans ce code, une fois les données chargées dans le Pandas DataFrame, la variable prédictive X et la variable dépendante y sont séparées. Pour calculer le VIF pour chaque variable prédictive, nous utilisons la fonction variation_inflation_factor() du package statsmodels. Dans la dernière étape du processus, nous stockons les valeurs VIF ainsi que les noms des prédicteurs dans un tout nouveau Pandas DataFrame, puis affichons les résultats. À l'aide de ce code, un tableau contenant le nom de la variable et la valeur VIF pour chaque variable prédictive sera généré. Lorsqu'une variable a une valeur VIF élevée (supérieure à 5 ou 10, selon la situation), il est important d'analyser la variable plus en profondeur.

import pandas as pd
from statsmodels.stats.outliers_influence import variance_inflation_factor

# Load data into a pandas DataFrame
data = pd.read_csv("mydata.csv")

# Select independent variables
X = data[['independent_var1', 'independent_var2', 'independent_var3']]

# Calculate VIF for each independent variable
vif = pd.DataFrame()
vif["VIF Factor"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
vif["features"] = X.columns

# Print the VIF results
print(vif)

Sortie

VIF  Factor      Features 
0    3.068988    Independent_var1
1    3.870567    Independent_var2
2    3.843753    Independent_var3

Méthode 2 : Gérer la multicolinéarité

Excluez du modèle une ou plusieurs variables indépendantes fortement corrélées. L'analyse en composantes principales (ACP) peut être utilisée pour combiner des variables indépendantes hautement corrélées en une seule variable. Des méthodes de régularisation telles que la régression ridge ou la régression lasso peuvent être utilisées pour réduire l'impact de variables indépendantes fortement corrélées sur les coefficients du modèle. En utilisant l'approche ci-dessus, l'exemple de code suivant peut être utilisé pour identifier et résoudre les problèmes de multicolinéarité −

import pandas as pd
import seaborn as sns
from statsmodels.stats.outliers_influence import variance_inflation_factor
from sklearn.decomposition import PCA
from sklearn.linear_model import Ridge

# Load the data into a pandas DataFrame
data = pd.read_csv('data.csv')

# Calculate the correlation matrix
corr_matrix = data.corr()

# Create a heatmap to visualize the correlation matrix
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')

# Check for VIF for each independent variable
for i in range(data.shape[1]-1):
   vif = variance_inflation_factor(data.values, i)
   print('VIF for variable {}: {:.2f}'.format(i, vif))

# Remove highly correlated independent variables
data = data.drop(['var1', 'var2'], axis=1)

# Use PCA to combine highly correlated independent variables
pca = PCA(n_components=1)
data['pca'] = pca.fit_transform(data[['var1', 'var2']])

# Use Ridge regression to reduce the impact of highly correlated independent variables
X = data.drop('dependent_var', axis=1)
y = data['dependent_var']
ridge = Ridge(alpha=0.1)
ridge.fit(X, y)

Cette fonction ne génère aucune autre sortie que la sortie de la valeur VIF de chaque variable indépendante. L'exécution de ce code affichera uniquement les valeurs VIF pour chaque variable indépendante ; aucun graphique ni performance du modèle ne sera imprimé.

Dans cet exemple, les données sont d'abord chargées dans un DataFrame pandas, puis la matrice de corrélation est calculée et enfin une carte thermique est créée pour afficher la matrice de corrélation. Nous avons ensuite éliminé les facteurs indépendants présentant des corrélations élevées après avoir testé le VIF de chaque variable indépendante. Nous utilisons la régression de crête pour réduire l'impact des variables indépendantes hautement corrélées sur les coefficients du modèle et utilisons l'analyse en composantes principales pour combiner des variables indépendantes hautement corrélées en une seule variable.

import pandas as pd

#create DataFrame
df = pd.DataFrame({'rating': [90, 85, 82, 18, 14, 90, 16, 75, 87, 86],
         'points': [22, 10, 34, 46, 27, 20, 12, 15, 14, 19],
         'assists': [1, 3, 5, 6, 5, 7, 6, 9, 9, 5],
         'rebounds': [11, 8, 10, 6, 3, 4, 4, 10, 10, 7]})

#view DataFrame
print(df)

Sortie

   rating  points  assists  rebounds
0      90      22        1        11
1      85      10        3         8
2      82      34        5        10
3      18      46        6         6
4      14      27        5         3
5      90      20        7         4
6      16      12        6         4
7      75      15        9        10
8      87      14        9        10
9      86      19        5         7

À l'aide du package Pandas, une structure de données de tableau appelée DataFrame peut être générée via ce programme Python. Les dimensions spécifiques comprennent quatre colonnes différentes : passes décisives, rebonds, points et notes. La bibliothèque est importée au début du code et est appelée "pd" par la suite pour réduire la complexité. Un DataFrame est finalement construit en exécutant la méthode pd.DataFrame() dans la deuxième ligne de code.

Utilisez la méthode print() sur la troisième ligne de code pour imprimer le DataFrame sur la console. Les valeurs de chaque colonne forment la définition de la liste et servent de clés et de valeurs pour la fonction de saisie du dictionnaire. Les informations sur chaque joueur sont affichées sous forme de tableau, avec des statistiques comprenant des points, des passes décisives et des rebonds disposés en colonnes, chaque ligne représentant un joueur.

Conclusion

En résumé, lorsque deux variables prédictives ou plus dans un modèle sont fortement corrélées les unes aux autres, on parle de multicolinéarité. Cette situation peut rendre difficile l’interprétation des résultats du modèle. Dans ce cas, il est difficile de déterminer comment chaque variable prédictive unique affecte la variable de résultat.

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
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Comment trancher un tableau Python?Comment trancher un tableau Python?May 01, 2025 am 12:18 AM

La syntaxe de base pour le découpage de la liste Python est la liste [Démarrage: arrêt: étape]. 1.Start est le premier index d'élément inclus, 2.STOP est le premier indice d'élément exclu et 3.StEP détermine la taille de l'étape entre les éléments. Les tranches sont non seulement utilisées pour extraire les données, mais aussi pour modifier et inverser les listes.

Dans quelles circonstances les listes pourraient-elles mieux fonctionner que les tableaux?Dans quelles circonstances les listes pourraient-elles mieux fonctionner que les tableaux?May 01, 2025 am 12:06 AM

ListesoutPerformarRaySin: 1) dynamicingizingandfrequentinSertions / Deletions, 2) StoringheteroGeneousData, and3) MemoryEfficiencyForsparsedata, butmayhaveslightperformanceCostSincertorations.

Comment pouvez-vous convertir un tableau Python en une liste Python?Comment pouvez-vous convertir un tableau Python en une liste Python?May 01, 2025 am 12:05 AM

Toconvertapythonarraytoalist, usethelist () Constructororageneratorexpression.1) ImportTheArrayModuleandCreateArray.2) Uselist (Arr) ou [Xforxinarr] à Convertittoalist, considérant la performance et le domaine de l'émie-efficacité pour les étages.

Quel est le but d'utiliser des tableaux lorsque des listes existent dans Python?Quel est le but d'utiliser des tableaux lorsque des listes existent dans Python?May 01, 2025 am 12:04 AM

ChooseArraySoverListsInpyThonforBetterperformanceAndmemeMoryEfficacitéInSpecificScenarios.1) LargenumericalDatasets: ArraySreduceDeMemoryUsage.2)

Expliquez comment itérer les éléments d'une liste et un tableau.Expliquez comment itérer les éléments d'une liste et un tableau.May 01, 2025 am 12:01 AM

Dans Python, vous pouvez utiliser pour les boucles, énumérer et les compréhensions de liste pour traverser les listes; En Java, vous pouvez utiliser des boucles traditionnelles et améliorées pour les boucles pour traverser les tableaux. 1. Les méthodes de traversée de la liste Python incluent: pour la compréhension de la boucle, de l'énumération et de la liste. 2. Les méthodes de traversée du tableau Java comprennent: traditionnel pour la boucle et amélioré pour la boucle.

Qu'est-ce que la déclaration de commutation Python?Qu'est-ce que la déclaration de commutation Python?Apr 30, 2025 pm 02:08 PM

L'article traite de la nouvelle instruction "Match" de Python introduite dans la version 3.10, qui constitue un équivalent pour les instructions de commutation dans d'autres langues. Il améliore la lisibilité du code et offre des avantages de performance par rapport aux if-elif-el traditionnels

Que sont les groupes d'exception à Python?Que sont les groupes d'exception à Python?Apr 30, 2025 pm 02:07 PM

Les groupes d'exception dans Python 3.11 permettent de gérer plusieurs exceptions simultanément, améliorant la gestion des erreurs dans des scénarios simultanés et des opérations complexes.

Que sont les annotations de fonction dans Python?Que sont les annotations de fonction dans Python?Apr 30, 2025 pm 02:06 PM

Les annotations de fonction dans Python ajoutent des métadonnées aux fonctions pour la vérification de type, la documentation et la prise en charge de l'IDE. Ils améliorent la lisibilité du code, la maintenance et sont cruciaux dans le développement de l'API, la science des données et la création de bibliothèques.

See all articles

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

Video Face Swap

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 !

Outils chauds

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version Mac

SublimeText3 version Mac

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

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.