Ich kann anscheinend keine Python-Bibliotheken finden, die eine multiple Regression durchführen. Die einzigen Dinge, die ich finde, sind nur einfache Regressionen. Ich muss meine abhängige Variable (y) gegen mehrere unabhängige Variablen (x1, x2, x3 usw.) zurückführen.
Zum Beispiel mit diesen Daten:
print 'y x1 x2 x3 x4 x5 x6 x7'
for t in texts:
print "{:>7.1f}{:>10.2f}{:>9.2f}{:>9.2f}{:>10.2f}{:>7.2f}{:>7.2f}{:>9.2f}" /
.format(t.y,t.x1,t.x2,t.x3,t.x4,t.x5,t.x6,t.x7)
(Ausgabe für oben :)
y x1 x2 x3 x4 x5 x6 x7
-6.0 -4.95 -5.87 -0.76 14.73 4.02 0.20 0.45
-5.0 -4.55 -4.52 -0.71 13.74 4.47 0.16 0.50
-10.0 -10.96 -11.64 -0.98 15.49 4.18 0.19 0.53
-5.0 -1.08 -3.36 0.75 24.72 4.96 0.16 0.60
-8.0 -6.52 -7.45 -0.86 16.59 4.29 0.10 0.48
-3.0 -0.81 -2.36 -0.50 22.44 4.81 0.15 0.53
-6.0 -7.01 -7.33 -0.33 13.93 4.32 0.21 0.50
-8.0 -4.46 -7.65 -0.94 11.40 4.43 0.16 0.49
-8.0 -11.54 -10.03 -1.03 18.18 4.28 0.21 0.55
Wie würde ich diese in Python zurückführen, um die lineare Regressionsformel zu erhalten:
Y = a1x1 + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 + + a7x7 + c
Y
können miteinander korreliert sein, aber unter der Annahme, dass die Unabhängigkeit den Datensatz nicht genau modelliert.Antworten:
sklearn.linear_model.LinearRegression
werde es tun:Dann
clf.coef_
haben die Regressionskoeffizienten.sklearn.linear_model
hat auch ähnliche Schnittstellen, um verschiedene Arten von Regularisierungen für die Regression durchzuführen.quelle
score
Methode dies tun;sklearn.metrics
hat einige andere Modellbewertungskriterien. Wenn Sie das Zeug wie in Akavalls Antwort wollen, hat statsmodels etwas mehr R-ähnliche Diagnose.Hier ist eine kleine Arbeit, die ich erstellt habe. Ich habe es mit R überprüft und es funktioniert korrekt.
Ergebnis:
Ausgabe:
pandas
bietet eine bequeme Möglichkeit, OLS wie in dieser Antwort angegeben auszuführen:Führen Sie eine OLS-Regression mit Pandas Data Frame aus
quelle
reg_m
Funktion ist unnötig kompliziert.x = np.array(x).T
,x = sm.add_constant(x)
Undresults = sm.OLS(endog=y, exog=x).fit()
ist genug.x = x[::-1]
innerhalb der Funktionsdefinition hinzufügen , um in die richtige Reihenfolge zu gelangencoef +- 2 * std err
(tatsächlich die Student-t-Verteilung, die durch Freiheitsgrade in den Residuen parametrisiert wird). dh größere absolute t-Werte implizieren CIs, die weiter von Null entfernt sind, aber nicht direkt verglichen werden sollten. Die Klärung ist etwas spät, aber ich hoffe, es ist für jemanden nützlichZur Verdeutlichung haben Sie als Beispiel eine multiple lineare Regression angegeben, nicht eine multivariate lineare Regression. Unterschied :
Zusamenfassend:
(Eine andere Quelle .)
quelle
Sie können numpy.linalg.lstsq verwenden :
Ergebnis:
Sie können die geschätzte Ausgabe sehen mit:
Ergebnis:
quelle
Verwenden Sie
scipy.optimize.curve_fit
. Und das nicht nur für die lineare Passform.quelle
Sobald Sie Ihre Daten in einen Pandas-Datenrahmen (
df
) konvertiert haben ,Der Intercept-Term ist standardmäßig enthalten.
Weitere Beispiele finden Sie in diesem Notizbuch .
quelle
Ich denke, dies ist der einfachste Weg, um diese Arbeit zu beenden:
quelle
Die mehrfache lineare Regression kann mithilfe der oben genannten sklearn-Bibliothek behandelt werden. Ich verwende die Anaconda-Installation von Python 3.6.
Erstellen Sie Ihr Modell wie folgt:
quelle
Sie können numpy.linalg.lstsq verwenden
quelle
Sie können die folgende Funktion verwenden und einen DataFrame übergeben:
quelle
Scikit-learn ist eine maschinelle Lernbibliothek für Python, die diese Aufgabe für Sie erledigen kann. Importieren Sie einfach das Modul sklearn.linear_model in Ihr Skript.
Suchen Sie die Codevorlage für die multiple lineare Regression mit sklearn in Python:
Das ist es. Sie können diesen Code als Vorlage für die Implementierung der multiplen linearen Regression in einem beliebigen Dataset verwenden. Zum besseren Verständnis mit einem Beispiel besuchen Sie: Lineare Regression mit einem Beispiel
quelle
Hier ist eine alternative und grundlegende Methode:
Anstelle von
sm.OLS
dir kannst du auchsm.Logit
odersm.Probit
und etc. verwenden.quelle