はじめに
最近、データを触ってみたり、データ分析、機械学習に触れる経験を積むためにkaggleやNishika、signateなどのデータコンペに参加しています。
面白そうなコンペに参加しては、データを眺めたり、EDAしたり、ヒストグラム作成したりしてから、じゃあ機械学習するかーって感じで進めています。
今回はそれらの作業が面倒なのでアプリケーションを作成して勝手にやらせればいいのでは?と思い、Webアプリケーションを作成したのでまとめていこうと思います。
背景
機械学習に行う際には、様々な作業が発生します。
そこで1つ頭の中に
面倒臭くね?
一からコードを書くの面倒なんですよね。
ということでStreamlitでWebアプリケーションを作成すれば、勝手にやってくれるんじゃね?と思い立ち、作ってみました(かなり雑)
機能
今回付けた機能は以下の通りです。
- データの概要確認(データ型、欠損値、統計値)
- ヒストグラム、箱ひげ図
- ヒートマップによる相関係数
- LightGBMによる機械学習モデルの学習/推論(ハイパーパラメータの変更可)
- 特徴量の重要度
- 推論結果の保存
それでは見ていきましょう
アプリの見た目
最初の画面はこのような感じとなっております。
では、適当にkaggleからタイタニックのデータを取ってきて読み込んでみます。
読み込むとこんな感じですね。
サイドバーにチェックボックスが表示されます。いわゆるページってやつです。
それではEDA
にチェックを入れてみましょう。
このように、データの概要、ヒストグラム等が自動で表示されます。
これで面倒なコードを書かなくて済む…
なぜか、数値型のデータのみしか可視化できないようなので数値型のカラムだけを抽出して表示しています。
欠損値やデータ型も確認してるので、ここでデータフレーム自体を弄って欠損値補完したり、エンコーディングしたりデータ加工できればいいんですけど、イマイチやり方がわからないのでわかる方いましたら教えてください!!!
ちなみに、試しにやってみてはいたんですが、マルチセレクトを複数個用意した場合、データが保持できない問題が起きました。
例えば、欠損値補完をしたあとにエンコーディングしようとするとすべて処理がなかったことにされます。
どうにかできればいいんですけどね~。私の知っている限りでは難しいので今後実装します。
サイドバーにハイパーパラメータを設定できるようにスライダーを作成しました。
個人的にいつも設定しているパラメータを入れています。
内部関数には固定のパラメータは事前に設定しています(metrics
やboosting_type
など)。
見切れていますが、特徴量の重要度も可視化しています。
最後にテストデータを読み込ませれば、自動でLightGBMにより推論し、結果を表示してくれます。
csvファイルを保存
ボタンを押すことで結果を保存することができます。
まとめ
ご覧いただきありがとうございます!
今回はデータ入れれば全部やってくれるアプリを作成しました。
作成時間はだいたい1~2時間でしたので、個人的には満足です。
今後はアプリ内でデータ加工できるようにスクリプトを修正していけたらと思いますので、アドバイスお願いいたしますm(__)m
それでは!!!