機械学習でフルマラソンのゴールタイムを予測～②：Garminで学習データを作成してみた～

##概要

前回からの続きです。
【機械学習でフルマラソンのゴールタイムを予測】と題して、ランニングの練習時のデータからフルマラソン（42.195㎞）を走った場合のゴールタイムを予測するために、データ収集からモデル作成・予測までの一連の流れを書いていきます。

前回記事[（機械学習でフルマラソンのゴールタイムを予測～①：RuntasticのデータをGarmin Connectに取込～）](https://qiita.com/train/items/086db17bdb824fcd5752)では、これまでRuntastic（アプリ）とGarmin（ランニング用スマートウォッチ）を使って記録した練習時のデータを１か所（Garmin）に統合すべく、RuntasticのデータをGarminに取り込む方法について記載しました。

今回はその統合したデータをcsv形式で出力し、不要な項目の削除と必要なデータの追加を行う手順について記載していきます。
![moon-2092807_1280.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498362/c2e5fd5a-a49e-5831-a653-5ca31042c435.jpeg)
[pixtabay](https://pixabay.com/ja/illustrations/%E6%9C%88-%E3%83%94%E3%83%A9%E3%83%9F%E3%83%83%E3%83%89-%E3%82%A8%E3%82%B8%E3%83%97%E3%83%88-2092807/)より

##Garmin Connectからデータをエクスポート

学習データとするランニング練習時のデータを
Garminのクラウドからcsv形式でエクスポートします。

①[Garmin Connect](https://connect.garmin.com/)にサインイン
![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498362/cf9f8517-e1e8-31fa-4607-dbc11d655081.jpeg)

②アクティビティ->すべてのアクティビティ をクリック
　CSVをエクスポートをクリック
![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498362/5116ff4c-5952-63cd-6f98-b010f568732b.jpeg)
 
③CSVファイルがダウンロードされますが、なぜか文字化けしてしまいます。
　※列名・行名以外の値はマスキングしています。
![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498362/3f2f0a25-b950-76a6-2578-361c2933ced4.jpeg)

④文字化けを解消するため、メモ帳で③のcsvファイルを開きます。
　ダウンロードしたCSVファイルをエクスプローラ上で右クリック->
　プログラムから開く->メモ帳 をクリック
　このようにしてメモ帳で開くと文字化けせずに開けます。
![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498362/3156063e-dad8-22ab-0727-8358351d8075.jpeg)

⑤左上のファイル->名前を付けて保存のダイアログボックスで文字コードANSIを選択し保存。
![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498362/27882389-44ed-cf7b-7210-5ea434e1f0c8.jpeg)

⑥OKをクリック
![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498362/5a8dc3a6-734e-6145-0657-e0f612056355.jpeg)

⑦再度csv形式で開くと文字化けせずに開けることが確認できます。
![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498362/09edc33f-4fd3-ed59-20eb-2fd13abffe71.jpeg)

##データ項目の削除と追加

- **データ項目の削除**

Garmin Connectからエクスポートしたcsvファイルには、以下の30項目のデータが記載されています。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
アクティビティタイプ、日付、お気に入り、タイトル、距離、カロリー、タイム、平均心拍数、最大心拍数、有酸素TE、平均ピッチ、最高ピッチ、1㎞あたりの平均ペース、1㎞あたりの最高ペース、高度上昇、高度下降、平均歩幅、平均上下動比、平均上下動、Training Stress ScoreR、グリット、フロー、総クライミング時間、潜水時間、最低気温、水面休息、減圧、ベストラップタイム、走行回数、最高気温
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

とてもたくさんありますが、"潜水時間"などランニングに関係ない項目や、一部データが取れていない項目があるため、分析に必要な項目に絞ります。

今回はタイムや走行距離に影響がありそうな以下の10項目に絞りました。
これら以外の列はこの時点で削除します。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
日付、距離、タイム、平均心拍数、最大心拍数、有酸素TE、平均ピッチ、1㎞あたりの平均ペース、1㎞あたりの最高ペース、平均歩幅
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

- **データ項目の追加**

これら10項目の他にタイムや走行距離に影響を与える因子として考えられる以下の4項目をcsvファイルに列追加します。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
走り始めの気温、走り始めの風速、その週の就業時間、その週の１日あたりの平均睡眠時間
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

よって、最終的にこれら14項目で学習データを作成していきます。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
日付（yyyy/mm/dd HH:MM:ss）、距離（㎞）、タイム（HH:MM:ss）、平均心拍数（bpm）、最大心拍数（bpm）、有酸素TE、平均ピッチ（歩/分）、1㎞あたりの平均ペース（HH:MM:ss/㎞）、1㎞あたりの最高ペース（HH:MM:ss/㎞）、平均歩幅（cm/歩）、走り始めの気温（℃）、走り始めの風速（m/秒）、その週の就業時間（h/週）、その週の１日あたりの平均睡眠時間（HH:MM:ss/日）
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

- **学習データの作成**

Garminでもともと記録されていて、エクスポートしたcsvファイル記載されている項目以外に自分で追加した項目（走り始めの気温、走り始めの風速、その週の就業時間、その週の１日あたりの平均睡眠時間）については、地道に１つずつ調べてデータを埋めていく必要があります。

走り始めの気温と風速は、気象庁の[過去の気象データ検索](https://www.data.jma.go.jp/obd/stats/etrn/index.php?prec_no=44&block_no=47662&year=1900&month=1&day=1&view=p1)より地域ごとに10分単位でデータを取得することができます。
もっと便利な方法があるのかもしれませんが、それを調べている時間の方が勿体ないのでここは地道に１練習日（＝学習データ１レコード分）ずつ調べてcsvファイルの該当箇所に書き加えていきます。

就業時間、平均睡眠時間についても同様に職場の就業記録や睡眠時に腕に身につけているスマートウォッチで記録されたデータから、該当の日付のデータを調べてcsvファイルに書き加えます。

このようにして地道に学習データを作成した結果、以下のような学習データを63レコード分作成することができました！

1レコードのサンプルデータ↓

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

次回はこの学習データを使いPythonで可視化していきます！
![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498362/faf66efc-b5a8-b053-74a9-c91345c9a70e.jpeg)
[pixtabay](https://pixabay.com/ja/illustrations/%E3%82%B9%E3%82%B1%E3%83%AB%E3%83%88%E3%83%B3-%E5%A5%B3%E6%80%A7-2504341/)より