suchen
HeimBackend-EntwicklungPython-TutorialErkennen und Behandeln von Multikollinearitätsproblemen bei der Regression mit Python

Multikollinearität bezieht sich auf den hohen Grad an Interkorrelation zwischen den unabhängigen Variablen im Regressionsmodell. Dies kann zu ungenauen Koeffizienten im Modell führen, wodurch es schwierig wird, den Einfluss verschiedener unabhängiger Variablen auf die abhängige Variable zu beurteilen. In diesem Fall gilt es, die Multikollinearität des Regressionsmodells zu identifizieren und zu behandeln sowie verschiedene Verfahren und deren Ergebnisse zu kombinieren, was wir Schritt für Schritt erläutern werden.

Methode

  • Multikollinearität erkennen

  • Umgang mit Multikollinearität

Algorithmus

Schritt 1 − Erforderliche Bibliotheken importieren

Schritt 2 – Daten in Pandas Dataframes laden

Schritt 3 – Erstellen Sie eine Korrelationsmatrix mit Prädiktoren

Schritt 4 − Erstellen Sie eine Heatmap der Korrelationsmatrix, um die Korrelation zu visualisieren

Schritt 5 – Berechnen Sie den Varianzinflationsfaktor für jeden Prädiktor der Ausgabe

Schritt 6 − Prädiktor bestimmen

Schritt 7 – Der Prädiktor sollte entfernt werden

Schritt 8 – Führen Sie das Regressionsmodell erneut aus

Schritt 9 – Überprüfen Sie es erneut.

Methode 1: Multikollinearität erkennen

Verwenden Sie die Funktion corr() des Pandas-Pakets, um die Korrelationsmatrix der unabhängigen Variablen zu bestimmen. Verwenden Sie die Seaborn-Bibliothek, um Wärmekarten zur Anzeige der Korrelationsmatrix zu erstellen. Verwenden Sie die Funktion variance_inflation_factor() des Pakets statsmodels, um den Varianzinflationsfaktor (VIF) für jede unabhängige Variable zu bestimmen. Ein VIF größer als 5 oder 10 weist auf eine hohe Multikollinearität hin.

Die chinesische Übersetzung von

Beispiel-1

lautet:

Beispiel-1

In diesem Code werden die Prädiktorvariable X und die abhängige Variable y getrennt, sobald die Daten in den Pandas DataFrame geladen sind. Um den VIF für jede Prädiktorvariable zu berechnen, verwenden wir die Funktion „variation_inflation_factor()“ aus dem statsmodels-Paket. Im letzten Schritt des Prozesses speichern wir die VIF-Werte zusammen mit den Namen der Prädiktoren in einem brandneuen Pandas DataFrame und zeigen dann die Ergebnisse an. Mit diesem Code wird eine Tabelle generiert, die den Variablennamen und den VIF-Wert für jede Prädiktorvariable enthält. Wenn eine Variable einen hohen VIF-Wert hat (je nach Situation über 5 oder 10), ist es wichtig, die Variable weiter zu analysieren.

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)

Ausgabe

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

Methode 2: Umgang mit Multikollinearität

Schließen Sie eine oder mehrere stark korrelierte unabhängige Variablen aus dem Modell aus. Mithilfe der Hauptkomponentenanalyse (PCA) können hochkorrelierte unabhängige Variablen zu einer einzigen Variablen kombiniert werden. Regularisierungsmethoden wie die Ridge-Regression oder die Lasso-Regression können verwendet werden, um den Einfluss stark korrelierter unabhängiger Variablen auf die Modellkoeffizienten zu reduzieren. Mit dem oben genannten Ansatz kann der folgende Beispielcode verwendet werden, um Multikollinearitätsprobleme zu identifizieren und zu lösen −

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)

Diese Funktion generiert keine andere Ausgabe als die Ausgabe des VIF-Werts jeder unabhängigen Variablen. Beim Ausführen dieses Codes werden nur die VIF-Werte für jede unabhängige Variable ausgegeben; es werden keine Diagramme oder Modellleistungen gedruckt.

In diesem Beispiel werden die Daten zunächst in einen Pandas DataFrame geladen, dann wird die Korrelationsmatrix berechnet und schließlich wird eine Heatmap erstellt, um die Korrelationsmatrix anzuzeigen. Anschließend haben wir unabhängige Faktoren mit hohen Korrelationen eliminiert, nachdem wir den VIF jeder unabhängigen Variablen getestet hatten. Wir verwendeten die Ridge-Regression, um den Einfluss hochkorrelierter unabhängiger Variablen auf die Modellkoeffizienten zu reduzieren, und nutzten die Hauptkomponentenanalyse, um hochkorrelierte unabhängige Variablen in einer Variablen zu kombinieren.

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)

Ausgabe

   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

Mit dem Pandas-Paket kann über dieses Python-Programm eine Array-Datenstruktur namens DataFrame generiert werden. Die spezifischen Dimensionen umfassen vier verschiedene Spalten: Assists, Rebounds, Punkte und Bewertungen. Die Bibliothek wird am Anfang des Codes importiert und wird danach „pd“ genannt, um die Komplexität zu reduzieren. Ein DataFrame wird schließlich erstellt, indem die Methode pd.DataFrame() in der zweiten Codezeile ausgeführt wird.

Verwenden Sie die print()-Methode in der dritten Codezeile, um den DataFrame auf der Konsole zu drucken. Die Werte jeder Spalte bilden die Definition der Liste und dienen als Schlüssel und Werte für die Wörterbucheingabefunktion. Informationen zu jedem Spieler werden in einem Tabellenformat angezeigt, wobei die Statistiken einschließlich Punkte, Assists und Rebounds in Spalten angeordnet sind, wobei jede Zeile einen Spieler darstellt.

Fazit

Zusammenfassend spricht man von Multikollinearität, wenn zwei oder mehr Prädiktorvariablen in einem Modell stark miteinander korrelieren. Diese Situation kann die Interpretation von Modellergebnissen erschweren. In diesem Fall ist es schwierig zu bestimmen, wie sich jede einzelne Prädiktorvariable auf die Ergebnisvariable auswirkt.

Das obige ist der detaillierte Inhalt vonErkennen und Behandeln von Multikollinearitätsproblemen bei der Regression mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:tutorialspoint. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Ist das Tupelverständnis in Python möglich? Wenn ja, wie und wenn nicht warum?Ist das Tupelverständnis in Python möglich? Wenn ja, wie und wenn nicht warum?Apr 28, 2025 pm 04:34 PM

In Artikel wird die Unmöglichkeit des Tupelverständnisses in Python aufgrund von Syntax -Mehrdeutigkeiten erörtert. Alternativen wie die Verwendung von Tuple () mit Generatorausdrücken werden vorgeschlagen, um Tupel effizient zu erstellen (159 Zeichen)

Was sind Module und Pakete in Python?Was sind Module und Pakete in Python?Apr 28, 2025 pm 04:33 PM

Der Artikel erläutert Module und Pakete in Python, deren Unterschiede und Verwendung. Module sind einzelne Dateien, während Pakete Verzeichnisse mit einer __init__.py -Datei sind, die verwandte Module hierarchisch organisieren.

Was ist Docstring in Python?Was ist Docstring in Python?Apr 28, 2025 pm 04:30 PM

In Artikel werden Docstrings in Python, deren Nutzung und Vorteile erörtert. Hauptproblem: Bedeutung von DocStrings für die Code -Dokumentation und -zugriffsfunktion.

Was ist eine Lambda -Funktion?Was ist eine Lambda -Funktion?Apr 28, 2025 pm 04:28 PM

In Artikel werden Lambda -Funktionen, ihre Unterschiede zu regulären Funktionen und deren Nützlichkeit bei Programmierszenarien erläutert. Nicht alle Sprachen unterstützen sie.

Was ist eine Pause, weiter und passieren in Python?Was ist eine Pause, weiter und passieren in Python?Apr 28, 2025 pm 04:26 PM

In Artikel wird in Python Break, Fortsetzung und Pass erörtert, wobei ihre Rolle bei der Kontrolle der Ausführung und des Programmablaufs der Schleife erläutert wird.

Was ist ein Pass in Python?Was ist ein Pass in Python?Apr 28, 2025 pm 04:25 PM

In dem Artikel werden die "Pass" -Anweisung in Python, einem als Platzhalter verwendeten NULL -Operation, in Codestrukturen wie Funktionen und Klassen erörtert, die zukünftige Implementierung ohne Syntaxfehler ermöglicht.

Können wir eine Funktion als Argument in Python übergeben?Können wir eine Funktion als Argument in Python übergeben?Apr 28, 2025 pm 04:23 PM

In Artikel werden die Übergabe von Funktionen als Argumente in Python erläutert und Vorteile wie Modularität und Anwendungsfälle wie Sortier und Dekorateure hervorheben.

Was ist der Unterschied zwischen / und // in Python?Was ist der Unterschied zwischen / und // in Python?Apr 28, 2025 pm 04:21 PM

Artikel erörtert / und // Betreiber in Python: / for True Division, // für die Bodenabteilung. Hauptproblem ist das Verständnis der Unterschiede und Anwendungsfälle.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software