Die Bedeutung einer einfachen Regressionsanalyse kann so oft herausgefunden werden, wie Sie möchten, aber ich hoffe, dass Sie Ihr Verständnis vertiefen können, indem Sie das Programm selbst schreiben, und ich würde es gerne mit Python ausprobieren.
Derzeit gibt es die folgenden Beispiele als Erklärungen für eine einfache Regressionsanalyse.
Die Testumgebung verwendet ein Jupyter-Notebook (ich erinnere mich nicht einmal, wann ich es installiert habe). Die verwendete Version ist wie folgt.
The version of the notebook server is: 6.0.0
Python 3.7.3 (default, Mar 27 2019, 22:11:17)
[GCC 7.3.0]
pandas pandas (pandas, pandas oder pandas) ist eine Bibliothek zum Konvertieren und Analysieren von Daten. Wir werden dies verwenden, um die Daten zu lesen. Die verwendete Version ist wie folgt.
import pandas as pd
print(pd.__version__)
# 0.24.2
Dieses Mal werde ich die Daten zu Größe (x) und Gewicht (y) (sample.csv) für 48 Personen verwenden.
sample.csv
x,y
152,57
173,78
172,83
178,58
166,63
175,66
158,66
163,74
157,64
165,68
176,68
165,60
147,63
153,63
146,47
156,49
145,59
181,66
160,74
140,55
152,55
165,56
170,65
159,51
151,52
167,51
177,82
155,63
159,45
170,66
154,56
163,60
161,70
165,70
150,57
158,53
163,67
186,69
168,68
170,74
155,60
159,49
170,87
163,50
166,58
161,69
159,60
171,71
Lesen Sie die Datei sample.csv und versuchen Sie, die ersten drei Zeilen auszugeben. Es scheint, dass es wie folgt gelesen werden kann.
df = pd.read_csv('sample.csv')
df.head(3)
x y
0 152 57
1 173 78
2 172 83
Beim Lesen von Daten mit pandas.read_csv werden die Daten anscheinend mit einem Typ namens DataFrame erstellt. pandas.read_csv DataFrame
Speichern Sie alle Spaltendaten in den Variablen x und y.
x = df.x
y = df.y
matplotlib matplotlib ist eine Grafikzeichnungsbibliothek. Die verwendete Version ist wie folgt.
import matplotlib
matplotlib.__version__
# '3.1.0'
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.show()
Ein Diagramm mit allen durch eine Linie verbundenen Punkten wurde angezeigt. Was ich erwartet hatte, war ein Diagramm, das nur Punkte zeigt, daher werde ich es wie folgt ändern.
import matplotlib.pyplot as plt
plt.plot(x, y, 'o')
plt.show()
scikit-learn scikit-learn ist eine Bibliothek für maschinelles Lernen, die auf den Python-Paketen NumPy (Nampai oder Nampai) und SciPy (Saipy) zur Durchführung wissenschaftlicher und technologischer Berechnungen basiert. Die verwendete Version ist wie folgt.
import sklearn
print(sklearn.__version__)
# 0.21.2
Es scheint, dass eine einfache Regressionsanalyse mit scikit-learn leicht durchgeführt werden kann. LinearRegression
Erzeugt eine Instanz des LinearRegression-Modells und trainiert (passt) die Daten an.
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x, y)
# ValueError: Expected 2D array, got 1D array instead:
Ich dachte, ich habe einen Fehler bekommen. Wenn ein zweidimensionales Array benötigt wird, scheint es ein eindimensionales Array zu ergeben. Lassen Sie uns die Art und Weise ändern, wie x und y gespeichert werden, und erneut lernen.
x = df[['x']]
y = df[['y']]
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x, y)
# LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
Es scheint, dass er es in dieser Zeit genommen hat. Dieser Teil sollte funktionieren, wenn Sie das ursprüngliche x und y wie folgt definieren.
#Anzahl in Werten.Konvertieren Sie in ndarray Typ und np.reshape(-1, 1)Konvertieren Sie in n Zeilen und 1 Spalte mit
model.fit(x.values.reshape(-1,1), y.values.reshape(-1,1))
Sagen wir es voraus.
plt.plot(x, y, 'o')
plt.plot(x, model.predict(x), linestyle="solid")
plt.show()
Als Ergebnis der Vorhersage der Zielvariablen (y) aus der erklärenden Variablen (x) wurde eine Linie gezogen, die nach rechts zunahm (je größer die Person, desto schwerer das Gewicht).
Es scheint, dass die Attribute coef_ und intercept_ die "Neigung" und den "Abschnitt" dieser geraden Linie enthalten. Wenn Sie sie also ausgeben, können Sie die Geradengleichung erhalten.
print('y = %.2fx + %.2f' % (model.coef_ , model.intercept_))
# y = 0.52x + -20.94
Aus dem Obigen ist es durch Kenntnis von a (Neigung) und b (Abschnitt) möglich, y (Gewicht) aus x (Höhe) vorherzusagen, dh eine "einzelne Regressionsanalyse" wurde realisiert. ..
Recommended Posts