Vorhersage der Zielzeit eines vollständigen Marathons mit maschinellem Lernen - Visual: Visualisierung von Daten mit Python-

Überblick

Es ist eine Fortsetzung des vorherigen. Von der Datenerfassung bis zur Modellerstellung / -vorhersage, um die Zielzeit beim Laufen eines vollständigen Marathons (42,195 km) anhand der Daten zum Zeitpunkt des Lauftrainings unter dem Titel [Vorhersage der Zielzeit des vollständigen Marathons durch maschinelles Lernen] vorherzusagen. Ich werde eine Reihe von Fluss von schreiben.

Im vorherigen Artikel (Vorhersage der Zielzeit eines vollständigen Marathons mit maschinellem Lernen - ②: Ich habe versucht, Trainingsdaten mit Garmin- zu erstellen) habe ich Trainingsdaten erstellt. Zu diesem Zweck haben wir das Verfahren zum Löschen unnötiger Elemente und zum Hinzufügen der erforderlichen Daten beschrieben.

Bevor wir dieses Mal ein Vorhersagemodell erstellen, das die Zielzeit eines vollständigen Marathons anhand der erstellten Trainingsdaten vorhersagt, werden wir beschreiben, wie die Daten visualisiert und der Gesamttrend angezeigt werden. Einige davon sind in Excel einfach zu erledigen, aber ich hoffe, Sie haben die Möglichkeit zu wissen, wie man Code schreibt, wenn Sie dasselbe in Python tun möchten. cat-984097_1920.jpg [pixtabay](https://pixabay.com/ja/photos/%E7%8C%AB-%E3%83%A1%E3%82%AC%E3%83%8D-%E7%9C%BC%E9 Von% 8F% A1-% E3% 83% 9A% E3% 83% 83% E3% 83% 88-984097 /)

Inhalt der Trainingsdaten

Wir erstellen Trainingsdaten mit 14 Elementen, von denen angenommen wird, dass sie die Distanz und das Tempo beim Laufen beeinflussen.

  1. Übungsdatum (JJJJ / MM / TT HH: MM: SS) Artikelname: Übungszeit
  2. Entfernung (km) Artikelname: Entfernung
  3. Zeit (HH: MM: ss) Artikelname: Zeit
  4. Durchschnittliche Herzfrequenz (BPM) Artikelname: Durchschnittliche Herzfrequenz
  5. Maximale Herzfrequenz (BPM) Artikelname: Maximale Herzfrequenz
  6. Aerobic TE Artikelname: Aerobic TE
  7. Durchschnittliche Tonhöhe (Schritte / Minute) Elementname: Durchschnittliche Tonhöhe
  8. Durchschnittliches Tempo pro 1 km (HH: MM: ss / km) Artikelname: Durchschnittliches Tempo
  9. Maximales Tempo pro 1 km (HH: MM: ss / km) Artikelname: Maximales Tempo
  10. Durchschnittlicher Schritt (cm / Schritt) Artikelname: Durchschnittlicher Schritt
  11. Temperatur zu Beginn des Betriebs (℃) Artikelname: Temperatur
  12. Windgeschwindigkeit zu Beginn des Laufens (m / s) Artikelname: Windgeschwindigkeit
  13. Arbeitszeit der Woche (h / Woche) Artikelname: Arbeit
  14. Durchschnittliche Schlafzeit pro Wochentag (HH: MM: ss / Tag) Artikelname: Durchschnittliche Schlafzeit

Beispieldaten für einen Datensatz

Practice Time Distance Time Average heart rate Max heart rate Aerobic TE Average pitch Average pace Max pace Average stride temperature Wind speed Work Average sleep time
2020/2/23 16:18:00 8.19 0:59:35 161 180 3.6 176 00:07:16 00:06:11 0.78 7.9 9 44.5 6:12:00

Monatlicher Kilometerstand

Importieren Sie zunächst das, was Sie für die Visualisierung der Daten benötigen. Vorerst denke ich, dass dies ausreicht.

RunnningDataVisualization.ipynb


import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.dates as mdates
import seaborn as sns

Mit dem folgenden Code können Sie ein Diagramm der monatlichen Kilometerleistung zeichnen.

RunnningDataVisualization.ipynb


df = pd.read_csv(r'Activities.csv', index_col=["PracticeTime"],parse_dates=True) 
#"PracticeTime"Geben Sie den Index als Argumentindex an, um ihn als Datumstyp zu lesen_Mach es mit col
#parse_Geben Sie True für Datum und Index an_Legen Sie das durch col angegebene Element als Datumstypindex fest

#Zeichnen Sie ein Diagramm
df_m = df.resample(rule="M").sum()
df_m_graph = df_m['Distance']
df_m_graph.plot.bar()

#Stellen Sie verschiedene Grafikanzeigeformate ein
plt.title("Distance per month", fontsize = 22) #Geben Sie dem Diagramm einen Titelnamen
plt.grid(True) #Fügen Sie dem Diagramm eine Skalierungslinie hinzu
plt.xlabel("month", fontsize = 15)  #Beschriften Sie die horizontale Achse des Diagramms
plt.ylabel("km", fontsize = 15)  #Beschriften Sie die vertikale Achse des Diagramms
plt.yticks( np.arange(0, 60, 5) ) #Passen Sie die Größe des Diagramms an


Ausführungsergebnis
キャプチャ.JPG

Wenn Sie es so betrachten, können Sie sehen, dass Sie in den heißen Sommermonaten nicht üben konnten.

Streudiagramm-Beziehung zwischen Tempo und Tonhöhe

Als nächstes werde ich ein Streudiagramm zeichnen, um zu sehen, ob es eine Korrelation zwischen dem Tempo und der Neigung pro km gibt. Wenn sich das Tempo verlangsamt, nimmt die Tonhöhe (Schritte pro Minute) im Allgemeinen ab, aber was ist mit der Realität?

RunnningDataVisualization.ipynb


df = df.sort_values("Average pace") #Sortieren Sie das Tempo in der Reihenfolge der Geschwindigkeit
plt.scatter(df['Average pace'], df['Average pitch'],s=40 ,marker="*", linewidths="4", edgecolors="orange") #Zeichnen Sie ein Streudiagramm

plt.title("Scatter plot of pace and pitch", fontsize = 22)
plt.ylabel('Average pitch', fontsize = 15)
plt.xlabel('Average pace', fontsize = 15)
plt.grid(True)
plt.xticks(rotation=90)
plt.figure(figsize=(50, 4))


Ausführungsergebnis
キャプチャ.JPG

Sie können sehen, dass die Tonhöhe von Zeit zu Zeit unterschiedlich ist, unabhängig davon, ob das Tempo schnell oder langsam ist.

Streudiagramm-Beziehung zwischen Tempo und Schritt-

Was ist dann mit der Beziehung zwischen Tempo und Schritt? Wenn sich das Tempo verlangsamt, nimmt der Schritt (Schrittlänge pro Schritt) wahrscheinlich ab.

RunnningDataVisualization.ipynb


df = df.sort_values("Average pace")
plt.scatter(df['Average pace'], df['Average stride'],s=40 ,marker="*", linewidths="4", edgecolors="blue")
plt.title("Scatter plot of pace and stride", fontsize = 22)
plt.ylabel('Average stride', fontsize = 15)
plt.xlabel('Average pace', fontsize = 15)
plt.grid(True)
plt.xticks(rotation=90)
plt.figure(figsize=(10, 10),dpi=200)
plt.show()


Ausführungsergebnis
キャプチャ.JPG

Im Gegensatz zum vorherigen Diagramm für Tempo und Tonhöhenstreuung können Sie sehen, dass die Punktsammlung irgendwie nach unten abfällt. Mit anderen Worten kann gelesen werden, dass der Schritt bis zu 25 cm beträgt, je langsamer das Tempo ist.

Wenn ich viel laufe, wird es immer einen Moment geben, in dem sich das Tempo verlangsamt, aber war dies eine der Ursachen? Sie können überzeugt sein, indem Sie mit Python visualisieren. ←

Korrelationskoeffizient zwischen Merkmalsgrößen

Lassen Sie uns abschließend den Korrelationskoeffizienten zwischen den einzelnen Merkmalsgrößen ermitteln. Die Korrelation mit Kilometerstand, Herzfrequenz usw. in den vier Merkmalsgrößen (Temperatur, Windgeschwindigkeit, wöchentliche Arbeitszeit, durchschnittliche Schlafzeit) wurde zusätzlich zu den von Garmin aufgezeichneten Daten von mir zu den Trainingsdaten hinzugefügt Wenn eine starke Merkmalsmenge auftritt, wird davon ausgegangen, dass sie einen gewissen Einfluss auf das Tempo und die Laufleistung hat.

Dieses Mal wusste ich nicht, wie man den Korrelationskoeffizienten von Zeitdaten berechnet, also berechnete ich nur den Korrelationskoeffizienten zwischen den Merkmalsmengen numerischer Daten.

Geben Sie bei der Berechnung des Korrelationskoeffizienten die durchschnittlichen Herzfrequenz- und maximalen Herzfrequenzwerte, die beim Lesen von csv aus der Zeichenfolge als Zeichenfolgen gelesen wurden, in einen numerischen Wert um.

RunnningDataVisualization.ipynb



#Typkonvertierung
df['Average heart rate'] = df['Average heart rate'].fillna(0).astype(np.int64)
df['Max heart rate'] = df['Max heart rate'].fillna(0).astype(np.int64)

#Korrelationskoeffizient visualisieren
df_corr = df.corr()
print(df_corr) #Zeigen Sie den Korrelationskoeffizienten zwischen Merkmalsgrößen in einer Liste an
fig = plt.subplots(figsize=(8, 8)) #Leicht verständliche Visualisierung
sns.heatmap(df_corr, annot=True,fmt='.2f',cmap='Blues',square=True)


Ausführungsergebnis
キャプチャ.JPG キャプチャ.JPG

Von den drei Merkmalsgrößen, auf die wir uns konzentrierten (Temperatur, Windgeschwindigkeit und wöchentliche Arbeitszeit), hatte keine einen absoluten Korrelationskoeffizienten von mehr als 0,5 mit anderen Merkmalsgrößen. Mit anderen Worten ist ersichtlich, dass diese drei Merkmale den Kilometerstand oder das Tempo nicht wesentlich beeinflussen.

Wenn Sie darüber nachdenken, üben Sie an Tagen, die zu heiß, zu kalt oder zu windig sind, nicht das Laufen, und wenn Sie unter der Woche viel arbeiten, werden Sie viel körperliche Müdigkeit haben. Sie werden sich dafür entscheiden, das Laufen nicht zu üben. Dieses Ergebnis überzeugt also auch.

Leider konnte ich die Feature-Menge, die sich auf Kilometerstand und Tempo auswirkt, nicht finden, indem ich nur den Korrelationskoeffizienten berechnete. Durch Visualisieren beim Betrachten verschiedener Daten wie dieser bin ich es, wenn ich laufe. Es ist eine gute Gelegenheit, auf die Trends und das Üben zurückzublicken.

Nächstes Mal werden wir endlich ein Vorhersagemodell erstellen und den Vorhersageprozess drehen.

Recommended Posts

Vorhersage der Zielzeit eines vollständigen Marathons mit maschinellem Lernen - Visual: Visualisierung von Daten mit Python-
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
[Maschinelles Lernen] Überprüfen Sie die Leistung des Klassifikators anhand handgeschriebener Zeichendaten
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
[Bildbuch zum maschinellen Lernen] Memo, wenn die Python-Übung am Ende des Buches ausgeführt wurde, während die Daten überprüft wurden
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Führen Sie eine Pipeline für maschinelles Lernen mit Cloud Dataflow (Python) aus.
Prognostizieren Sie das Geschlecht von Twitter-Nutzern durch maschinelles Lernen
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
Der erste Schritt des maschinellen Lernens ~ Für diejenigen, die versuchen möchten, mit Python zu implementieren ~
Implementierung der Clustering-K-Form-Methode für Zeitreihendaten [Unüberwachtes Lernen mit Python Kapitel 13]
Maschinelles Lernen mit Python! Vorbereitung
Beginnend mit maschinellem Python-Lernen
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Die Geschichte eines Rubinisten, der mit Python :: Dict-Daten mit Pycall kämpft
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
Die Zusammenfassung des maschinellen Lernens in Python für Anfänger ist sehr kurz.
Eine konkrete Methode zur Vorhersage von Pferderennen und zur Simulation der Wiederherstellungsrate durch maschinelles Lernen
[Python, Ruby] Selen-Holen Sie sich Webseiteninhalte mit Webdriver
Erstellen einer Windows 7-Umgebung für eine Einführung in das maschinelle Lernen mit Python
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
[Python3] Definition eines Dekorators, der die Ausführungszeit einer Funktion misst
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 4)
Die Idee, die Konfigurationsdatei mit einer Python-Datei anstelle von yaml zu füttern
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 5)
Lösen Sie Teilsummenprobleme mit der vollständigen Suche in Python
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
Erstellen Sie ein Kompatibilitätsbewertungsprogramm mit dem Zufallsmodul von Python.
Feature Engineering für maschinelles Lernen ab Teil 1 Google Colaboratory - Validierung und Diskriminierung von Zähldaten
Schreiben Sie den Felderstellungsknoten von SPSS Modeler mit Python neu. Merkmalsextraktion aus Zeitreihensensordaten
Die Geschichte, wie man mit Python einen 100-Yen-Frühstücks-Bot für die Universität macht
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B- und C-Probleme von ABC182 mit Python!
Berechnen Sie die kürzeste Route eines Diagramms mit der Dyxtra-Methode und Python
REST-API eines mit Python erstellten Modells mit Watson Machine Learning (CP4D-Edition)
[Python] [Maschinelles Lernen] Anfänger ohne Wissen versuchen vorerst maschinelles Lernen
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Quellcode für die Trennung von Tonquellen (Übungsreihe zum maschinellen Lernen), der mit Python gelernt wurde
Berechnen Sie die Wahrscheinlichkeit, eine Tintenfischmünze zu sein, mit dem Bayes-Theorem [Python]
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
Zeichnen Sie die CSV von Zeitreihendaten mit einem Unixtime-Wert in Python (matplotlib).
Ich habe GAN mit Keras gemacht, also habe ich ein Video des Lernprozesses gemacht.