Prédire le temps objectif d'un marathon complet avec l'apprentissage automatique-③: j'ai essayé de visualiser les données avec Python-

Aperçu

C'est une continuation du précédent. De la collecte de données à la création / prédiction de modèles afin de prédire le temps objectif lors de la course d'un marathon complet (42,195 km) à partir des données au moment de la pratique de la course sous le titre de [Prédire le temps objectif du marathon complet par apprentissage automatique] J'écrirai une série de flux de.

Dans l'article précédent (Prédire le temps objectif d'un marathon complet avec apprentissage automatique-②: j'ai essayé de créer des données d'entraînement avec Garmin-), j'ai créé des données d'entraînement. Pour ce faire, nous avons décrit la procédure pour supprimer les éléments inutiles et ajouter les données nécessaires.

Cette fois, avant de créer un modèle de prédiction qui prédit le temps cible d'un marathon complet en utilisant les données d'entraînement créées, nous décrirons comment visualiser les données et voir la tendance générale. Certains d'entre eux sont faciles à faire dans Excel, mais j'espère que vous aurez l'opportunité de savoir comment écrire du code si vous voulez faire de même en Python. 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 À partir de% 8F% A1-% E3% 83% 9A% E3% 83% 83% E3% 83% 88-984097 /)

Contenu des données d'entraînement

Nous créons des données d'entraînement comprenant 14 éléments dont on pense qu'ils affectent la distance et le rythme pendant la course.

  1. Date de la pratique (aaaa / mm / jj HH: MM: ss) Nom de l'article: Heure de la pratique
  2. Distance (km) Nom de l'article: Distance
  3. Heure (HH: MM: ss) Nom de l'élément: Heure
  4. Fréquence cardiaque moyenne (bpm) Nom de l'élément: fréquence cardiaque moyenne
  5. Fréquence cardiaque maximale (bpm) Nom de l'élément: Fréquence cardiaque maximale
  6. Aerobic TE Nom de l'article: Aerobic TE
  7. Pas moyen (pas / minute) Nom de l'élément: Pas moyen
  8. Allure moyenne par 1 km (HH: MM: ss / km) Nom de l'article: Allure moyenne
  9. Allure maximale par 1 km (HH: MM: ss / km) Nom d'article: Allure maximale
  10. Foulée moyenne (cm / pas) Nom de l'article: Foulée moyenne
  11. Température au début du fonctionnement (℃) Nom de l'article: température
  12. Vitesse du vent au début de la course (m / sec) Nom de l'article: Vitesse du vent
  13. Heures de travail de la semaine (h / semaine) Nom de l'article: Travail
  14. Temps de sommeil moyen par jour de la semaine (HH: MM: ss / jour) Nom de l'article: Temps de sommeil moyen

Exemple de données pour un enregistrement

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

Kilométrage mensuel

Tout d'abord, importez ce dont vous pensez avoir besoin pour visualiser les données. Pour le moment, je pense que cela suffit.

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

Vous pouvez dessiner un graphique du kilométrage mensuel avec le code suivant.

RunnningDataVisualization.ipynb


df = pd.read_csv(r'Activities.csv', index_col=["PracticeTime"],parse_dates=True) 
#"PracticeTime"Pour lire comme un type de date, spécifiez l'index comme index d'argument_Faites-le avec col
#parse_Spécifiez True pour les dates et l'index_Définir l'élément spécifié par col comme index de type de date

#Dessinez un graphique
df_m = df.resample(rule="M").sum()
df_m_graph = df_m['Distance']
df_m_graph.plot.bar()

#Définir divers formats d'affichage des graphiques
plt.title("Distance per month", fontsize = 22) #Donnez au graphique un nom de titre
plt.grid(True) #Ajouter une ligne d'échelle au graphique
plt.xlabel("month", fontsize = 15)  #Étiqueter l'axe horizontal du graphique
plt.ylabel("km", fontsize = 15)  #Étiqueter l'axe vertical du graphique
plt.yticks( np.arange(0, 60, 5) ) #Ajuster la taille du graphique


Résultat de l'exécution
キャプチャ.JPG

Si vous regardez comme ça, vous pouvez voir à quel point vous n'avez pas pratiqué pendant les mois chauds de l'été.

Diagramme de dispersion - Relation entre le rythme et la hauteur -

Ensuite, je vais dessiner un diagramme de dispersion pour voir s'il existe une corrélation entre l'allure et le pas par km. De manière générale, si le rythme ralentit, la hauteur (pas par minute) semble diminuer, mais qu'en est-il de la réalité?

RunnningDataVisualization.ipynb


df = df.sort_values("Average pace") #Trier le rythme par ordre de vitesse
plt.scatter(df['Average pace'], df['Average pitch'],s=40 ,marker="*", linewidths="4", edgecolors="orange") #Dessinez un diagramme de dispersion

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))


Résultat de l'exécution
キャプチャ.JPG

Vous pouvez voir que le ton est différent de temps en temps, que le rythme soit rapide ou lent.

Diagramme de dispersion - Relation entre le rythme et la foulée -

Alors qu'en est-il de la relation entre le rythme et la foulée? Si le rythme ralentit, la foulée (longueur de pas par pas) est susceptible de diminuer.

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()


Résultat de l'exécution
キャプチャ.JPG

Contrairement au diagramme de dispersion du rythme et de la hauteur précédent, vous pouvez voir que la collection de points est en quelque sorte en pente descendante. En d'autres termes, on peut lire que plus le rythme est lent, plus la foulée est petite jusqu'à 25 cm.

Quand je cours beaucoup de distance, il y aura toujours un moment où le rythme ralentit, mais était-ce une des causes? Vous pouvez être convaincu en visualisant avec Python. ←

Coefficient de corrélation entre les quantités d'entités

Enfin, découvrons le coefficient de corrélation entre chaque quantité de caractéristiques. Corrélation avec le kilométrage, la fréquence cardiaque, etc. dans les quatre quantités de caractéristiques (température, vitesse du vent, heures de travail hebdomadaires, temps de sommeil moyen) ajoutées aux données d'entraînement par moi-même en plus des données enregistrées par Garmin Si une forte quantité de caractéristiques apparaît, on considère qu'elle a une certaine influence sur le rythme et le kilométrage.

Cette fois, je ne savais pas comment calculer le coefficient de corrélation des données temporelles, donc je n'ai calculé que le coefficient de corrélation entre les quantités de caractéristiques des données numériques.

Lors du calcul du coefficient de corrélation, convertissez le type de fréquence cardiaque moyenne et les valeurs de fréquence cardiaque maximale lues sous forme de chaîne de caractères lors de la lecture de csv à partir de la chaîne de caractères en une valeur numérique.

RunnningDataVisualization.ipynb



#Conversion de type
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)

#Visualisez le coefficient de corrélation
df_corr = df.corr()
print(df_corr) #Afficher le coefficient de corrélation entre les quantités d'entités dans une liste
fig = plt.subplots(figsize=(8, 8)) #Visualisation facile à comprendre
sns.heatmap(df_corr, annot=True,fmt='.2f',cmap='Blues',square=True)


Résultat de l'exécution
キャプチャ.JPG キャプチャ.JPG

Des trois grandeurs de caractéristiques sur lesquelles nous nous sommes concentrés (température, vitesse du vent et heures de travail sur une base hebdomadaire), aucune d'entre elles n'avait un coefficient de corrélation absolu supérieur à 0,5 avec d'autres quantités de caractéristiques. En d'autres termes, on constate que ces trois caractéristiques n'affectent pas de manière significative le kilométrage ou le rythme.

Eh bien, si vous y réfléchissez, les jours trop chauds, trop froids ou venteux, vous ne pratiquez pas la course à pied en premier lieu, et si vous travaillez beaucoup pendant la semaine, vous aurez beaucoup de fatigue physique. Vous choisirez de ne pas vous entraîner à courir. Ce résultat est donc également convaincant.

Malheureusement, je n'ai pas pu trouver le montant de la fonctionnalité qui affecte le kilométrage et le rythme simplement en calculant le coefficient de corrélation, mais en visualisant tout en regardant diverses données comme celle-ci, je suis quand je cours. C'est une bonne occasion de revenir sur les tendances et comment pratiquer.

La prochaine fois, nous allons enfin créer un modèle de prédiction et faire pivoter le processus de prédiction.

Recommended Posts

Prédire le temps objectif d'un marathon complet avec l'apprentissage automatique-③: j'ai essayé de visualiser les données avec Python-
Résumé du flux de base de l'apprentissage automatique avec Python
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Une histoire coincée avec l'installation de la bibliothèque de machine learning JAX
[Apprentissage automatique] Vérifiez les performances du classificateur à l'aide de données de caractères manuscrites
Touchons une partie de l'apprentissage automatique avec Python
J'ai commencé l'apprentissage automatique avec le prétraitement des données Python
Créer un environnement d'apprentissage automatique Python avec des conteneurs
[Livre d'images sur l'apprentissage automatique] Mémo lorsque l'exercice Python à la fin du livre a été effectué lors de la vérification des données
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Exécutez un pipeline de machine learning avec Cloud Dataflow (Python)
Prédire le sexe des utilisateurs de Twitter grâce à l'apprentissage automatique
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Bilan du premier défi du machine learning avec Keras
La première étape de l'apprentissage automatique ~ Pour ceux qui veulent essayer l'implémentation avec python ~
Implémentation de la méthode de clustering k-shape pour les données de séries chronologiques [Apprentissage non supervisé avec python Chapitre 13]
Apprentissage automatique avec Python! Préparation
Commencer avec l'apprentissage automatique Python
Essayez de gratter les données COVID-19 Tokyo avec Python
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
[Homologie] Comptez le nombre de trous dans les données avec Python
Un résumé de l'apprentissage automatique Python pour débutant est très concis.
Une méthode concrète pour prédire les courses de chevaux et simuler le taux de récupération par apprentissage automatique
[python, ruby] sélénium-Obtenez le contenu d'une page Web avec le pilote Web
Création d'un environnement Windows 7 pour une introduction à l'apprentissage automatique avec Python
Apprentissage automatique par python (1) Classification générale
L'histoire de la création d'un pilote standard pour db avec python.
Une fonction qui mesure le temps de traitement d'une méthode en python
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
Mémorandum of scraping & machine learning [technique de développement] par Python (chapitre 4)
L'idée d'alimenter le fichier de configuration avec un fichier python au lieu de yaml
Mémorandum of scraping & machine learning [technique de développement] par Python (chapitre 5)
Résolvez les problèmes de somme partielle avec une recherche complète en Python
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
L'histoire de la création d'un module qui ignore le courrier avec python
Créez un programme de jugement de compatibilité avec le module aléatoire de python.
Ingénierie des fonctionnalités pour l'apprentissage automatique à partir de la partie 1 Google Colaboratory - Validation et discrimination des données de comptage
Réécrivez le nœud de création de champ de SPSS Modeler avec Python. Extraction de caractéristiques à partir de données de capteurs de séries temporelles
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
[Explication AtCoder] Contrôlez les problèmes A, B, C d'ABC182 avec Python!
Calculer l'itinéraire le plus court d'un graphe avec la méthode Dyxtra et Python
API REST du modèle réalisé avec Python avec Watson Machine Learning (édition CP4D)
[Python] [Apprentissage automatique] Les débutants sans aucune connaissance essaient l'apprentissage automatique pour le moment
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Code source pour la séparation des sources sonores (série de pratiques d'apprentissage automatique) appris avec Python
Calculez la probabilité d'être une pièce de calmar avec le théorème de Bayes [python]
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
J'ai fait GAN avec Keras, donc j'ai fait une vidéo du processus d'apprentissage.