BLOG
投稿日:2022/09/01

気温予測Webアプリを作ってみた(Flask, Keras)

野田です。世の中には機械学習そのものに関する記事や書籍は沢山あるものの、アプリの形でユーザーが気軽に機械学習を体験できるような記事や書籍が限られているように感じていました。一方で私自身、弊社の機械学習勉強会で気温の予測を行った経験があります。そこで、気温予測の機械学習Webアプリを作ることを例にして、このブログをご覧になっている方とアプリ作成の知見を共有できないかと考えました。

作ったアプリはこのようなものになっています。上側に「New York」「London」「Tokyo」のボタンがあり、クリックするだけで対象の都市の1週間分の最高気温と最低気温が表示されます。バックグラウンドで学習済みのモデルを読み込み、予測を行う仕組みになっています。

 

1. Flask概要

Pythonで機械学習を行う事ができるGUIライブラリとしてはいくつかありますが、今回はFlaskを選びました。有名なGUIライブラリとしては、Flaskの他にTkinterが挙げられます。下の表にメリット・デメリットを載せます。

ライブラリ メリット デメリット
Tkinter python標準ライブラリのため、アプリ制作者の導入コストが少ない。 デザインの細かい調整が行いにくい。
Flask デザインの細かい調整が行いやすい。 Tkinterに比べアプリ制作者の導入コストがやや大きい。

Flaskであれば多数のcssのテンプレートからデザインを選ぶことが可能ですし、見た目の細かい調整もできます。そのようなメリットを享受しながら、コード数行でもアプリを作ることができるので、アプリ制作者にとっては便利です。また、今回の気温予測のアプリ制作では取り入れてないものの、データベース参照やAPIによるサービスの提供など、昨今では欠かせない技術の導入もFlaskなら可能です。さらにユーザーにとっても、Pythonの環境を整えなくても済むので嬉しいです。なお、他のPythonで利用できるWebフレームワークにフルスタックであるDjangoがありますが、今回はDjangoに比べ学習コストが低いFlaskを使いました。

2. 機械学習

気温を予測するチュートリアルはKerasの公式サイトに用意されています 。このチュートリアルでは、マックスプランク研究所で計測された10分ごとの気象データを元にして、1時間毎の気温の予測を行っています。学習モデルにはLSTM(Long Short Term Memory)を用いています。LSTMが開発される前にRNN(Recurrent Neural Network)で問題となっていた誤差消失問題が解消されているため、LSTMを用いれば長期依存のデータを学習させることが可能です。時系列データを取り扱える他、自然言語処理にも適用できます。

今回私が行った機械学習では、東京、ニューヨーク、ロンドンの各都市において、1日ごとの気象データを入手し、最高気温と最低気温を予測することを行いました。気象データを提供するAPIサービスも存在はしますが、無料でどこまでデータが取得できるかが調査仕切れなかったので、今回はWebサイトから直接データを取得することにしました。日本については気象庁、アメリカについてはNational Weather Service、イギリスについてはEuropean Climate Assessment & Datasetのデータを取得しています。

始めは2015年から2022年のデータを使って予測をしていました。東京、ニューヨークについては予測された気温と実際の気温とが大まかに一致していましたが、ロンドンについては30度も違う結果が現れました。これについては、西岸海洋性気候で年間の気温の変化が小さいことが影響していると考えられます。そこでロンドンだけは1970年からのデータを読ませることにしました。ロンドンの最高気温を例に載せますが、予測された7日分の気温と実際の気温は以下のグラフの通りになります。細かい振動までは再現できていませんが、実際の気温の平均をとるような値を取っていることが分かります。

3. アプリ実装

Flaskの実装をする際に参考にした書籍は「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」佐藤昌基、 平田哲也著、寺田学監修、翔泳社出版です。この書籍の卓越した所は、書かれている通りにコード実装を進めることで、Webアプリの制作が可能である点です。実際に、8章の「物体検知機能を作る」まで読み進めることで、OpenCVによる画像認識を行い画像から猫を検出することができました。本アプリは、上記書籍に書かれているコードを参考にして作っています。

4. 終わりに

機械学習でWebアプリを作成する手順について説明させて頂きましたが、いかがでしたでしょうか?機械学習でアプリを作成する方々にとって、この記事が参考になれば幸いです。