3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

streamlitをGooglColaboratoryで動かしたい男

Posted at

はじめに

世間ではサム・アルトマンがOpenAIから解雇された話題で持ちきりですね(ヘイシャア!!では全く話題になっていない)。
ChatGPTのサービス終了だけはしないでくださいお願いします!!GPT-4の値段10倍になってもいいです、お願いします!!生きていけません!!
・・・やっぱ10倍は厳しいです!2倍で勘弁してください!

取り乱しました、すみません。
さて、前回記事でPyCaretをstreamlit上に構築することに成功しました。これを社内展開しようと目論んだのですが、ヘイシャアの全員のパソコンにPython環境があるわけではないので、どうしたものかと思いました。

前回記事↓

作戦

①Python環境を全パソコンに構築(無理ゲー)
②アプリをexe化して配布(保守管理がむずい。できなくはない。)
③Python専用パソコンを購入し、共有化(お金ない)
④GooglColabで実行(ワンチャン)

というわけでGooglColabでstreamlitを実行してみることにしました。
何事も先駆者はいらっしゃいますので参考にさせていただきましょう。

GooglColab

では実際にやってみます。

GooglColabにはstreamlitがインストールされていないので、何はともあれstreamlitのインストールです。

コードセル_1
!pip install streamlit

なお、どんなライブラリが入っているかは以下のコードで一覧が出力できます。

pip freeze

続いてPyCaretもGooglColabにはインストールされていないのでインストールしましょう。依存ライブラリが多すぎてエラー吐きがちなのでSuccessするまでセルの実行を繰り返します。

コードセル_2
#エラー吐きがちなので成功するまで実行
!pip install pycaret

メインのapp.pyファイルを作成します。

コードセル_3
%%writefile /content/app.py

# Streamlit
import streamlit as st

# Streamlitアプリケーションの実行
st.set_page_config(page_title='データ解析 & 機械学習', layout='wide')
st.set_option('deprecation.showPyplotGlobalUse', False)
st.title('データ解析 & 機械学習')
st.write("半自動でデータ解析と機械学習が行えます。サイドバーから行う作業を選択してください。")

今回のアプリはページに分けたので、「pages」フォルダを作成してその中にPythonファイルを作成していきます。

コードセル_4
!mkdir "pages"

作成したpagesフォルダにpythonファイルを作成していきます。中身のコードは前回記事を参照してください。

コードセル_5
%%writefile /content/pages/データ解析.py

# Streamlit
import streamlit as st
# EDA
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px

@st.cache_data()
def load_data(uploaded_file):
    return pd.read_csv(uploaded_file)

def load_and_explore_data():
    uploaded_file = st.file_uploader('データを読み込んで下さい。', type=['csv'])

...省略
コードセル_6
%%writefile /content/pages/回帰モデル.py

# Streamlit
import streamlit as st
# EDA
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.figure as figure
# ML
from pycaret.regression import *


def load_and_explore_data():
    uploaded_file = st.file_uploader('データを読み込んで下さい。', type=['csv'])

...省略
コードセル_7
%%writefile /content/pages/分類モデル.py

# Streamlit
import streamlit as st
# EDA
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import metrics
# ML
from pycaret.classification import *

@st.cache_data()
def load_data(uploaded_file):
    return pd.read_csv(uploaded_file)

def load_and_explore_data():
    uploaded_file = st.file_uploader('データを読み込んで下さい。', type=['csv'])

...省略

はい、これで準備はできました!
image.png

streamlitの実行

GooglColabからstreamlitを起動するにはlocaltunnelやngrokを使用してローカルで実行中のアプリを外部公開する手順が必要となります。ngrokは登録が必要そうなので、簡単に使用できるlocaltunnelを使ってみます。

外部公開になるので、アドレスを知っている人は誰でもアクセスできます。注意してください。

必要ないかもしれませんが、app.pyを開いておきます。

コードセル_8
from google.colab import files
files.view("/content")
files.view("app.py")

localtunnel経由で実行します。

コードセル_9
!streamlit run app.py & sleep 3 && npx localtunnel --port 8501

すると以下のような出力が得られます。your url is:https://***.loca.ltにアクセスしてみます。

You can now view your Streamlit app in your browser.

  Network URL: http://***.***.***.***:8501
  External URL: http://***.***.***.***:8501

npx: installed 22 in 4.766s
your url is: https://***-***-***.loca.lt

するとエンドポイントの入力を求められます。
image.png

ここに、先ほど出力された

External URL:http://***.***.***.***:8501

の***のIPアドレスを入力して、Submitします。

すると・・・?
image.png

はい、できました。結構すんなりできました。エンドポイントのIPアドレスがどれかわからずあれこれ試したくらいです。

でもあれれ?エラーが出てるよ?
まぁ、追々直します。モデル構築は問題なさそうですし。(←直してから投稿しろ)
image.png

おわりに

とりあえずGooglColabでstreamlitを起動できることは確認できました!もはや半分以上趣味になっていますが、機能追加して、誰でも簡単にEDAやMLができるようブラッシュアップしていきます!

ではまた。

3
5
0

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
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?