Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse

Da ich im vorherigen Artikel die Gesamtklassifikation des maschinellen Lernens zusammengefasst habe, werde ich jede konkrete Implementierung aus dieser Zeit beschreiben.

Klicken Sie hier für den vorherigen Artikel https://qiita.com/U__ki/items/4ae54da6cadec8a84d1b

Implementierung einer einfachen Regressionsanalyse

Das Thema ist diesmal "Wie groß ist der Fernseher, der zur Größe des Raums passt?" Vielleicht haben einige Leute beschlossen, vom Frühling zu ziehen. Für diejenigen, die sich fragen, wie sie die Größe des Fernsehgeräts bestimmen können, das der Größe des neuen Raums entspricht, möchte ich die Größe des Fernsehgeräts, das der Größe des Raums entspricht, mithilfe einer einfachen Regressionsanalyse ermitteln.

Ich beschloss, simulierte Daten mit Pandas zu erstellen und sie dann anhand dieser Daten zu analysieren.

Erstellen einer CSV-Datei mit Pandas

Unter Bezugnahme auf diesen Artikel (* https://www.olive-hitomawashi.com/lifestyle/2019/10/post-294.html*) lauten die empfohlenen Daten zur TV-Größe, die der Raumgröße entsprechen, wie folgt. tat. (Wenn Sie dies haben, brauchen Sie diesen Artikel nicht)

[TV-Größe] 6. Potenz: 24 Zoll 8 Tatami-Matten: 32 Zoll 10 Tatami-Matten: 40 Zoll 12 Tatami-Matten: 50 Zoll

Geben Sie diese Daten als CSV-Datei mit Pandas aus.

create_csv.py


#CSV-Erstellung Pandas
import pandas as pd
df=pd.DataFrame([
    ["6", "24"],
    ["8", "32"],
    ["10", "40"],
    ["12", "50"]],
    columns=["room_size", "tv_inch"]
)
df.to_csv("room_tv.csv", index=False)

df ist eine Abkürzung für Data Flame. Durch Setzen von index = False wird auch die Indexnummer in csv entfernt. Dadurch wird eine neue Datei mit dem Namen room_tv.csv im selben Ordner erstellt.

Wenn die folgenden Dateien im Ordner erstellt werden, ist dies erfolgreich.

room_tv.csv


room_size,tv_inch
6,24
8,32
10,40
12,50

Jetzt haben Sie die CSV-Datei, um diese Zeit zu verwenden.

Einfache Regressionsanalyse

Als nächstes werden wir dieses Mal die einfache Hauptregressionsanalyse durchführen.

Die einfache Regressionsanalyse besteht aus den folgenden drei Komponenten. ** ・ Modellentscheidung ** ** - Auswertungsfunktion einstellen ** ** - Minimieren Sie die Bewertungsfunktion (bestimmen Sie die Steigung) **

Modellbestimmung

Laden Sie zuerst csv.

main.py


df=pd.read_csv("room_tv.csv")

Wenn Sie ein Jupyter-Notizbuch verwenden, werden die zuvor erstellten Daten wie unten gezeigt angezeigt. スクリーンショット 2020-11-04 13.47.21.png

Als nächstes schauen wir uns diesmal die Daten an. Matplotlib ist leicht zu verstehen und mit Python zu veranschaulichen.

main.py


x=df["room_size"]
y=df["tv_inch"]

import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()

Hier ist x die Größe des Raums und y die Größe des Fernsehgeräts.

スクリーンショット 2020-11-04 13.50.08.png

Ich habe Daten, die einfach zu handhaben scheinen. Diesmal scheint es, dass eine lineare Funktion damit umgehen kann (** Modellbestimmung **).

Derzeit können Sie diese Daten so verwenden, wie sie sind, aber wenn Sie diese Daten verwenden y=ax+b Dann erscheinen zwei Variablen, a und b. Die Berechnung kann so wie sie ist durchgeführt werden, aber es wird eine ** Datenmittelung ** durchgeführt, um eine Variable zu reduzieren.

** Datenmittelung ** Nehmen Sie den Durchschnittswert aller Daten und verwenden Sie den von den einzelnen Daten abgezogenen Wert. Mit Pandas ist es extrem einfach, den Durchschnittswert der Daten zu ermitteln oder für alle Daten zu subtrahieren. Auf diese Weise kann nur y = ax berücksichtigt werden.

main.py


#Ermitteln Sie den Durchschnittswert der Daten
xm=x.mean()
ym=y.mean()

#Zentralisiert durch Subtrahieren des Durchschnittswerts von allen Daten
xc=x-xm
yc=y-ym

#Redisplay
plt.scatter(xc,yc)
plt.show()

Mit dem obigen Code wurde die folgende Abbildung angezeigt. スクリーンショット 2020-11-04 16.15.33.png

Es scheint, dass sich gegenüber dem vorherigen Diagramm nicht viel ändert, aber da Abschnitt (b) nicht berücksichtigt werden muss, werden zukünftige Berechnungen viel einfacher sein.

\hat{y}=ax

Sie müssen nur ein etwa finden.

Bestimmung der Bewertungsfunktion

Ich möchte die Formel so bestimmen, dass der vorhergesagte Wert (durch maschinelles Lernen) im Vergleich zum gemessenen Wert der kleinste ist. Die Sache dafür heißt die Bestimmung der Bewertungsfunktion. Es hat die gleiche Bedeutung wie "Verlustfunktion" in der Datenwissenschaft. Obwohl die Erklärung hier verringert wird, wird der quadratische Fehler bestätigt und der kleinere bestimmt. Verwendung von y als Messwert und y ^ (Waihat) als Vorhersagewert

\begin{align}
L&=(y_1-\hat{y_1})^2+(y_2-\hat{y_2})^2+....+(y_N-\hat{y_1N})^2\\
 &=\sum_{n=1}^{N}(y_n-\hat{y_n})^2
\end{align}

Kann vertreten werden durch. Zu diesem Zeitpunkt wird * L * als Bewertungsfunktion bezeichnet.

Bewertungsfunktion minimieren

Die Bewertungsfunktion erscheint als quadratische Funktion, wie wir zuvor gesehen haben. Daher ist der Punkt, an dem die Neigung 0 ist, das Minimum, und der Punkt, an dem der quadratische Fehler klein ist, wird erhalten.

Wenn Sie den Punkt finden möchten, an dem die Steigung der quadratischen Gleichung 0 ist, was im Bereich der Mathematik der High School liegt, können Sie den Punkt unterscheiden und finden, an dem "= 0" ist.

Weil die Variable a ist

\frac{\partial}{\partial a}(L)=0

Fragen. Ersetzen Sie die obige Formel und erweitern Sie sie

\begin{align}
L&=\sum_{n=1}^{N}y_n^2-2(\sum_{n=1}^{N}x_ny_n)a+(\sum_{n=1}^{N}x_n^2)a^2\\
&=c_o-2c_1a+c_2a^2
\end{align}

Ersatz

\frac{\partial}{\partial a}(c_o-2c_1a+c_2a^2)=0\\
\\
a=\frac{\sum_{n=1}^{N}x_ny_n}{\sum_{n=1}^{N}x_n^2} 


Schreiben wir einen Code dazu.

main.py



#Finden Sie den Wert jedes Quadrats aus der Formel
xx=xc*xc
xy=xc*yc

#Frage nach einer
a=xy.sum()/xx.sum()

#Versuchen Sie zu zeichnen
plt.scatter(xc,yc, label="y")
plt.plot(x,a*x, label="y_hat", color="green")
plt.legend()
plt.show()

Die Grafik ist unten dargestellt. スクリーンショット 2020-11-04 17.08.40.png

Da x im Bereich des Messwertes bestimmt wird, ist das Liniensegment kurz, es wurde jedoch a erhalten.

Aus dem Obigen wurde die Neigung a erhalten. Da es jedoch zentralisiert ist, wenn es tatsächlich angewendet wird

Vergessen Sie nicht, x (x-Wert) -x (Durchschnittswert) mit a und schließlich y (Durchschnittswert) zu multiplizieren.

Abschließend werde ich eine Zusammenfassung davon schreiben.

main.py



import pandas as pd
import matplotlib.pyplot as plt

df=pd.read_csv("room_tv.csv")
x=df["room_size"]
y=df["tv_inch"]

#Mittelwertbildung
xm=x.mean()
ym=y.mean()

#Zentralisierung
xc=x-xm
yc=y-ym

xx=xc*xc
xy=xc*yc

a=xy.sum()/xx.sum()

plt.scatter(xc,yc, label="y")
plt.plot(x,a*x, label="y_hat", color="green")
plt.legend()
plt.show()


Bonus

main.py



#Datenübersicht
df.describe()

Dadurch werden die Daten wie folgt analysiert. Nützlich für die Verarbeitung komplexerer und großer Datenmengen. スクリーンショット 2020-11-04 16.09.41.png

Schließlich

Der Code war kurz, aber sehr aussagekräftig. Das nächste Mal möchte ich eine multiple Regressionsanalyse durchführen. Als zukünftige Entwicklungen werde ich nicht nur programmierbezogene Elemente wie Codierung und Fehlerbehandlung veröffentlichen, sondern auch solche, die sich auf die Neurowissenschaften beziehen.

Recommended Posts

Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
Algorithmus für maschinelles Lernen (Einzelregressionsanalyse)
Python Scikit-learn Lineare Regressionsanalyse Nichtlineare einfache Regressionsanalyse Maschinelles Lernen
Maschinelles Lernen mit Python! Vorbereitung
Einfache Regressionsanalyse mit Python
Beginnend mit maschinellem Python-Lernen
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Erste einfache Regressionsanalyse in Python
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Algorithmus für maschinelles Lernen (multiple Regressionsanalyse)
Logistische Regressionsanalyse Selbst erstellt mit Python
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 7 Regressionsanalyse
Verstärken Sie Bilder für maschinelles Lernen mit Python
[Shakyo] Begegnung mit Python zum maschinellen Lernen
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
Datenanalyse beginnend mit Python (Datenvorverarbeitung - maschinelles Lernen)
Aufbau einer KI / maschinellen Lernumgebung mit Python
[Maschinelles Lernen] Regressionsanalyse mit Scicit Learn
"Gauß-Prozess und maschinelles Lernen" Gauß-Prozessregression nur mit Python-Numpy implementiert
Datenanalyse mit Python 2
Python lernen mit ChemTHEATER 03
"Objektorientiert" mit Python gelernt
Python lernen mit ChemTHEATER 05-1
Logistische Regression beim maschinellen Lernen
Sprachanalyse mit Python
Python lernen mit ChemTHEATER 02
Lineare Regression des maschinellen Lernens
Python lernen mit ChemTHEATER 01
Python: Überwachtes Lernen (Rückkehr)
Sprachanalyse mit Python
Führen Sie eine Regressionsanalyse mit NumPy durch
Datenanalyse mit Python
Regressionsanalyse mit Python
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
EV3 x Python Maschinelles Lernen Teil 2 Lineare Regression
[Python] Datenanalyse, maschinelles Lernen (Kaggle) -Datenvorverarbeitung-
[Python] Sammeln Sie Bilder mit Icrawler für maschinelles Lernen [1000 Blatt]
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Einfache LASSO-Regressionsanalyse mit Python (keine Theorie)
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Maschinelles Lernen mit Pokemon gelernt
2. Multivariate Analyse in Python 1-1. Einfache Regressionsanalyse (Scikit-Learn)
[Python] Morphologische Analyse mit MeCab
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Führen Sie eine Pipeline für maschinelles Lernen mit Cloud Dataflow (Python) aus.
Multiple Regressionsanalyse mit Keras
Emotionsanalyse von Python (word2vec)
Verbessertes Lernen ab Python
Verstehe maschinelles Lernen ~ Ridge Regression ~.
Lernnotizen zur Python-Datenanalyse
Planare Skelettanalyse mit Python
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Japanische morphologische Analyse mit Python
Maschinelles Lernen Minesweeper mit PyTorch
Python Machine Learning Programming> Schlüsselwörter
Coursera Machine Learning Challenge in Python: ex1 (lineare Regression)
Algorithmus für maschinelles Lernen (einfaches Perzeptron)