はじめに
世間ではサム・アルトマンがOpenAIから解雇された話題で持ちきりですね(ヘイシャア!!では全く話題になっていない)。
ChatGPTのサービス終了だけはしないでくださいお願いします!!GPT-4の値段10倍になってもいいです、お願いします!!生きていけません!!
・・・やっぱ10倍は厳しいです!2倍で勘弁してください!
取り乱しました、すみません。
さて、前回記事でPyCaretをstreamlit上に構築することに成功しました。これを社内展開しようと目論んだのですが、ヘイシャアの全員のパソコンにPython環境があるわけではないので、どうしたものかと思いました。
前回記事↓
作戦
①Python環境を全パソコンに構築(無理ゲー)
②アプリをexe化して配布(保守管理がむずい。できなくはない。)
③Python専用パソコンを購入し、共有化(お金ない)
④GooglColabで実行(ワンチャン)
というわけでGooglColabでstreamlitを実行してみることにしました。
何事も先駆者はいらっしゃいますので参考にさせていただきましょう。
GooglColab
では実際にやってみます。
GooglColabにはstreamlitがインストールされていないので、何はともあれstreamlitのインストールです。
!pip install streamlit
なお、どんなライブラリが入っているかは以下のコードで一覧が出力できます。
pip freeze
続いてPyCaretもGooglColabにはインストールされていないのでインストールしましょう。依存ライブラリが多すぎてエラー吐きがちなのでSuccessするまでセルの実行を繰り返します。
#エラー吐きがちなので成功するまで実行
!pip install pycaret
メインのapp.pyファイルを作成します。
%%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ファイルを作成していきます。
!mkdir "pages"
作成したpagesフォルダにpythonファイルを作成していきます。中身のコードは前回記事を参照してください。
%%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'])
...省略
%%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'])
...省略
%%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'])
...省略
streamlitの実行
GooglColabからstreamlitを起動するにはlocaltunnelやngrokを使用してローカルで実行中のアプリを外部公開する手順が必要となります。ngrokは登録が必要そうなので、簡単に使用できるlocaltunnelを使ってみます。
外部公開になるので、アドレスを知っている人は誰でもアクセスできます。注意してください。
必要ないかもしれませんが、app.pyを開いておきます。
from google.colab import files
files.view("/content")
files.view("app.py")
localtunnel経由で実行します。
!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
ここに、先ほど出力された
External URL:http://***.***.***.***:8501
の***のIPアドレスを入力して、Submitします。
はい、できました。結構すんなりできました。エンドポイントのIPアドレスがどれかわからずあれこれ試したくらいです。
でもあれれ?エラーが出てるよ?
まぁ、追々直します。モデル構築は問題なさそうですし。(←直してから投稿しろ)
おわりに
とりあえずGooglColabでstreamlitを起動できることは確認できました!もはや半分以上趣味になっていますが、機能追加して、誰でも簡単にEDAやMLができるようブラッシュアップしていきます!
ではまた。