🚀

Scikit-learnのデータセットをブラウザで見るアプリ作った

2021/12/18に公開

この記事はWEBやデータ分析に関する投稿をみんなでしてみよう Advent Calendar 2021 18日目の記事です。

ちょうど「WEB」と「データ分析」という2大テーマにドンピシャものを力を入れて作っているところなので、今回はその紹介をします。

Scikit-learn dataset viewer

Breast cancer datasetを可視化するWebアプリです。下記URLから見ることができます。

リポジトリ: https://github.com/bluepost59/scikit-learn-dataset-viewer

技術要素

Pyodide

一番コアになる部分です。WASM(Web Assembly)上でPythonを動かすことができるライブラリです。

https://pyodide.org/en/stable/

PythonのエンジンのみでなくNumPyやScikit-learnなどのライブラリも学習も含めてブラウザサイドで動かすことができます。今回はScikit-learnを動かすために使っています。なのでt-SNEもブラウザサイドで動いています。もちろんt-SNE以外にも決定木やサポートベクターマシンなどScikit-learnで実装されているものはすべてブラウザサイドで動かすことができます

残念なところとして、初期ロード時にPythonの処理系をまるごとロードするのでかなりリソースが必要です。結構いいPCでも1分くらいかかってしまいます。スマホでは5分くらいかかりました。通信よりはCPUとメモリを結構食べるようです。

Plotly

自分が今のところ一番イケてると思っているグラフ描画ライブラリです。

https://plotly.com/javascript/

ぐりぐり動かしたり、ズームアップしたり、pngファイルでダウンロードしたりできます。とても使い勝手がいいです。スライダーなどのHTML要素と連携させることもでき、結構滑らかに書き換わります。また内部で「選択したデータを取得する」とか様々なイベントも持っているので、UIにうまく組み込むことができれば有用なライブラリだと思います。

最後に

本当はもっといい感じのコードを書きたかったんですが、ひとまず作り切ることを目的にしたのでごちゃごちゃしてしまいました。Webはあまり経験がなかったので勉強しながら進めてました。特にUI部分に関してはさっぱりです。そのあたりはひとつひとつ習得していきたいと思います。

Pyodideは革新的なライブラリだと思っているんですが、あまり流行ってなさそうで少し残念に思っています。Brythonともどもおすすめしておきます。

(この記事も当日に突貫工事で作りました。お粗末クオリティですみません。。。)

Discussion