3
3

データ解析面倒だから半自動化してみた

Posted at

はじめに

最近、データを触ってみたり、データ分析、機械学習に触れる経験を積むためにkaggleやNishika、signateなどのデータコンペに参加しています。
面白そうなコンペに参加しては、データを眺めたり、EDAしたり、ヒストグラム作成したりしてから、じゃあ機械学習するかーって感じで進めています。
今回はそれらの作業が面倒なのでアプリケーションを作成して勝手にやらせればいいのでは?と思い、Webアプリケーションを作成したのでまとめていこうと思います。

背景

機械学習に行う際には、様々な作業が発生します。
そこで1つ頭の中に
面倒臭くね?
一からコードを書くの面倒なんですよね。
ということでStreamlitでWebアプリケーションを作成すれば、勝手にやってくれるんじゃね?と思い立ち、作ってみました(かなり雑)

機能

今回付けた機能は以下の通りです。

  1. データの概要確認(データ型、欠損値、統計値)
  2. ヒストグラム、箱ひげ図
  3. ヒートマップによる相関係数
  4. LightGBMによる機械学習モデルの学習/推論(ハイパーパラメータの変更可)
  5. 特徴量の重要度
  6. 推論結果の保存

それでは見ていきましょう

アプリの見た目

タイトルなし.png

最初の画面はこのような感じとなっております。
では、適当にkaggleからタイタニックのデータを取ってきて読み込んでみます。
タイトルなし.png

読み込むとこんな感じですね。
サイドバーにチェックボックスが表示されます。いわゆるページってやつです。
それではEDAにチェックを入れてみましょう。
タイトルなし.png

タイトルなし.png

タイトルなし.png

このように、データの概要、ヒストグラム等が自動で表示されます。
これで面倒なコードを書かなくて済む…
なぜか、数値型のデータのみしか可視化できないようなので数値型のカラムだけを抽出して表示しています。

欠損値やデータ型も確認してるので、ここでデータフレーム自体を弄って欠損値補完したり、エンコーディングしたりデータ加工できればいいんですけど、イマイチやり方がわからないのでわかる方いましたら教えてください!!!
ちなみに、試しにやってみてはいたんですが、マルチセレクトを複数個用意した場合、データが保持できない問題が起きました。
例えば、欠損値補完をしたあとにエンコーディングしようとするとすべて処理がなかったことにされます。
どうにかできればいいんですけどね~。私の知っている限りでは難しいので今後実装します。

それでは、MLにチェックを入れてみましょう。
タイトルなし.png

サイドバーにハイパーパラメータを設定できるようにスライダーを作成しました。
個人的にいつも設定しているパラメータを入れています。
内部関数には固定のパラメータは事前に設定しています(metricsboosting_typeなど)。
見切れていますが、特徴量の重要度も可視化しています。

タイトルなし.png
最後にテストデータを読み込ませれば、自動でLightGBMにより推論し、結果を表示してくれます。
csvファイルを保存ボタンを押すことで結果を保存することができます。

まとめ

ご覧いただきありがとうございます!
今回はデータ入れれば全部やってくれるアプリを作成しました。
作成時間はだいたい1~2時間でしたので、個人的には満足です。
今後はアプリ内でデータ加工できるようにスクリプトを修正していけたらと思いますので、アドバイスお願いいたしますm(__)m
それでは!!!

3
3
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3