Streamlitの初め方:トップ7のStreamlitの例とチュートリアル
Updated on
Streamlitの世界へようこそ!
データサイエンティストや機械学習愛好家の方々にとって、自分の作業内容を共有する場所として最適です。我々は、データサイエンスコミュニティで大きな注目を浴びている、Streamlitで作成された最もエキサイティングな例を探求していきます。感情分析や株式データの可視化から機械学習モデルの提供まで、データスクリプトをシェア可能なWebアプリに変換するのがますます簡単になっていることを、Streamlitを通じて見ていきましょう。
Streamlitとは?
しかし、プロジェクトに飛び込む前に、まずはStreamlitとは何か理解しましょう。Streamlitは、機械学習とデータサイエンスのためにカスタムなWebアプリを作成できるオープンソースのPythonフレームワークです。
わずか数行のコードで、ユーザーがデータを操作したりパラメータを微調整したり、リアルタイムで結果を表示するようなインタラクティブな機能を作成できます。データの探索からモデルの展開まで、データサイエンティストやエンジニアがプロセスを効率化するために設計されています。インターメディエイト以上の経験を持つプロフェッショナル、初心者の方々にも、Streamlitが提供する価値があります。早速探求してみましょう!
Streamlitを使用するメリット:StreamlitとDjango、Flaskの比較
Streamlitは、特にデータサイエンスと機械学習アプリケーションの文脈において、DjangoやFlaskなど他の人気のあるWebフレームワークと比較されています。それでは、どのように比較されるのか見てみましょう。
以下は、Streamlit、Django、Flaskの違いをまとめた比較表です:
機能 | Streamlit | Django | Flask |
---|---|---|---|
データサイエンスと機械学習に特化 | はい | いいえ | いいえ |
使いやすさ | 高い(最小限のコーディングが必要) | 中程度(学習コストが高い) | 中程度(Web開発の理解が必要) |
Web開発の知識が必要 | いいえ | はい | はい |
標準機能の充実度 | いいえ(データサイエンスと機械学習アプリケーションに特化) | はい(ORM、管理パネル、認証サポートなどが含まれています) | いいえ(ミニマリストの設計ですが、ライブラリで拡張可能です) |
柔軟性 | 中程度(複雑なWebアプリケーションには適していません) | 高い(複雑なWebアプリケーションに適しています) | 高い(ツールとライブラリは選択できます) |
シンプルなWebアプリケーションに適している | はい | かもしれない(過剰な機能かもしれません) | はい |
この表は、3つのフレームワークの大まかな比較を提供しています。最適な選択は、特定のニーズやプロジェクトの複雑さによります。
StreamlitとDjangoの比較
Django (opens in a new tab)は、迅速な開発とクリーンな、実用的なデザインを促進する高レベルのPythonウェブフレームワークです。モデル-テンプレート-ビューのアーキテクチャパターンに従い、ORM、管理パネル、認証サポートなどの多くの機能がデフォルトで付属しているため、「完全な形で提供されている電池」として知られています。
Djangoは堅牢で多機能なフレームワークですが、シンプルなデータサイエンスと機械学習アプリケーションには適していない場合があります。学習コストが高く、Web開発の概念をよく理解する必要があります。
一方、Streamlitは、データサイエンスと機械学習アプリケーションに特化しています。わずか数行のコードで、Webアプリを作成できます。Web開発に関する事前の知識は不要です。ただし、Djangoほど機能が豊富ではなく、複雑なWebアプリケーションには適していない場合があります。
StreamlitとFlaskの比較
Flask (opens in a new tab)は、ウェブアプリケーションの最低限の開発機能を提供する軽量なPythonウェブフレームワークです。Djangoよりも柔軟で、ツールやライブラリを自由に選択することができます。
FlaskはシンプルなWebアプリケーションに適していますが、Djangoと同様に、Web開発の概念をよく理解する必要があります。Flaskを使用してデータサイエンスや機械学習のインタラクティブなアプリケーションを作成することは、チャレンジングで時間がかかる場合があります。
Streamlitは、データサイエンスと機械学習に焦点を当てることで、インタラクティブなWebアプリケーションの作成が容易になります。Web開発の作業の多くを処理してくれるため、データサイエンスの部分に集中することができます。
トップなStreamlitの例:はじめるための最高の例
Streamlitを使ったTensorFlow Serving
TensorFlow Serving with Streamlit (opens in a new tab)は、TensorFlow Servingを使用してTensorFlowモデルを提供し、Streamlitを使ってWebアプリで予測結果を視覚化する方法をデモンストレーションするプロジェクトです。このプロジェクトには、モデルのトレーニング、提供用の形式でエクスポート、TensorFlow Servingを使用してモデルを提供するプロセスを紹介するJupyterノートブックが含まれています。Streamlitアプリは、提供されたモデルと予測結果を対話的に操作し、視覚化するためのユーザーフレンドリーなインターフェースを提供します。
このプロジェクトの概要をご紹介します:
-
TensorFlowモデルをトレーニングする: プロジェクトには、MNISTデータセットでシンプルなTensorFlowモデルをトレーニングする方法を示すJupyterノートブックが含まれています。
-
提供用にモデルをエクスポートする: トレーニングされたモデルは、TensorFlow Servingで提供できる形式でエクスポートされます。
-
モデルを提供する: エクスポートされたモデルは、機械学習モデルのための柔軟で高性能な提供システムであるTensorFlow Servingを使用して提供されます。
Streamlitを使用して予測を視覚化する: Streamlitアプリは、提供されたモデルとの対話を可能にするために作成されます。アプリでは、ユーザーがキャンバス上に数字を描くことができ、描かれた画像を提供されたモデルに送信し、予測された数字を表示します。
AIと韻を踏む
Rhyme with AI (opens in a new tab)は、機械学習を使用して韻を生成する楽しいプロジェクトです。このプロジェクトでは、歌詞のコーパスを使用してトレーニングされた言語モデルを使用しています。Streamlitアプリでは、ユーザーが単語を入力すると、モデルが入力された単語と韻を踏む単語のリストを生成します。
プロジェクトの概要は次のとおりです:
-
言語モデルのトレーニング:このプロジェクトでは、歌詞のコーパスを使用して言語モデルをトレーニングしています。モデルはデータのパターンを学習し、トレーニングデータのスタイルに似たテキストを生成できます。
-
韻を生成する:入力された単語に対して、モデルは入力された単語と韻を踏む単語のリストを生成します。モデルはトレーニング中に学習したパターンに基づいて韻を生成します。
-
Streamlitで韻を視覚化する:Streamlitアプリを使用してモデルと対話するために、Streamlitアプリが作成されます。このアプリでは、ユーザーが単語を入力し、生成された韻を表示することができます。
Sentiment Analyzer Tool
Sentiment Analyzer Tool (opens in a new tab)は、テキストの感情分析を行うために機械学習を使用するプロジェクトです。このプロジェクトには、IMDB映画のレビューデータセットを使用して感情分析モデルをトレーニングする方法を示したJupyterノートブックが含まれています。Streamlitアプリは、ユーザーフレンドリーなインターフェースを提供し、ユーザーが入力テキストの感情を分析するためのモデルと対話することができます。
プロジェクトの概要は次のとおりです:
-
感情分析モデルのトレーニング:このプロジェクトには、IMDB映画のレビューデータセットを使用して感情分析モデルをトレーニングする方法を示したJupyterノートブックが含まれています。このモデルは、レビューが肯定的か否定的かを予測する2値分類モデルです。
-
Streamlitで感情分析を行う:モデルと対話するために、Streamlitアプリが作成されます。このアプリでは、ユーザーがテキストを入力し、入力テキストの予測された感情を表示することができます。
Squote:株価の視覚化
Squote (opens in a new tab)は、Streamlitを使用して対話型の株価の視覚化を作成するプロジェクトです。このアプリでは、ユーザーは株を選択し、その過去の価格データを視覚化することができます。
プロジェクトの概要は次のとおりです:
-
株価データの取得:アプリは、yfinanceライブラリを使用して選択された株の過去の価格データを取得します。yfinanceライブラリを使用することで、Yahoo Financeの財務データにアクセスすることができます。
-
Streamlitで株価データを視覚化する:Fetchされたデータと対話するために、Streamlitアプリが作成されます。このアプリでは、ユーザーが株と日付の範囲を選択し、選択した日付範囲内の株価のチャートを表示します。
Streamlitを使用した金融の探索的データ分析
Streamlitでの金融EDA(Exploratory Data Analysis) (opens in a new tab)は、Streamlitを使用して金融データの探索的データ分析(EDA)を行う方法を示したプロジェクトです。このアプリでは、ユーザーは株を選択し、価格、取引量、リターンなどの株価データのさまざまな側面を視覚化することができます。
プロジェクトの概要は次のとおりです:
-
株価データの取得:アプリは、yfinanceライブラリを使用して選択された株の過去の価格と取引量のデータを取得します。
-
StreamlitでEDAを実行する:Fetchされたデータと対話するために、Streamlitアプリが作成されます。このアプリでは、ユーザーが株を選択し、株価のラインチャート、取引量のバーチャート、リターンのヒストグラムなど、株価データのさまざまな視覚化を表示します。
WhatsAppチャットアナライザー
WhatsAppチャットアナライザー (opens in a new tab)は、Streamlitを使用して対話型のWhatsAppチャットアナライザーを作成するプロジェクトです。このアプリでは、ユーザーはチャットファイルをアップロードし、チャットのさまざまな側面(ユーザーごとのメッセージ数、最も活発なユーザー、使用されている単語など)を視覚化することができます。
プロジェクトの概要は次のとおりです:
-
チャットファイルのアップロード:アプリでは、WhatsAppの「チャットのエクスポート」機能を使用してWhatsAppチャットファイルをアップロードすることができます。
-
Streamlitでチャットを分析する:アップロードされたチャットファイルと対話するために、Streamlitアプリが作成されます。このアプリでは、チャットファイルを解析し、チャットデータのさまざまな視覚化を表示します。
ニューヨーク市でのUber乗車
ニューヨーク市でのUber乗車 (opens in a new tab)は、ニューヨーク市でのUber乗車をインタラクティブに視覚化するStreamlitデモです。このアプリでは、ユーザーは日付と時刻を選択し、選択した時刻におけるニューヨーク市内のUber乗車のマップを表示することができます。
プロジェクトの概要は次のとおりです:
-
Uberデータの読み込み:アプリは、ニューヨーク市でのUber乗車のデータセットを読み込みます。このデータセットには、各乗車の日付、時刻、場所が含まれています。
-
StreamlitでUber乗車を表示する:FetchされたUberデータと対話するために、Streamlitアプリが作成されます。このアプリでは、ユーザーが日付と時刻を選択し、選択した時間帯におけるニューヨーク市内のUber乗車のマップを表示します。 これらのプロジェクトは、Streamlitのパワーと汎用性を示しており、データサイエンスや機械学習のためのインタラクティブなWebアプリを作成するために使用できます。株式データの可視化、チャットデータの分析、機械学習モデルの提供など、データスクリプトを共有可能なWebアプリに変換するのは簡単です。
Streamlitチュートリアル
Streamlitは、Pythonとのシームレスな統合とシンプルで使いやすいインターフェースにより、開発者とデータサイエンティストの両方に人気があります。プラットフォームを十分に理解することは、Streamlitチュートリアルの助けを借りればはるかに簡単になります。以下のリソースをご覧ください:
- ゼロから始めるStreamlit入門 (opens in a new tab)
- VSCode内でのStreamlit環境構築方法 (opens in a new tab)
- Streamlitを使用した基本的なダッシュボードの作り方 (opens in a new tab)
- Streamlitセッションステートの理解 (opens in a new tab)
- SnowflakeとStreamlitの統合方法 (opens in a new tab)
- Streamlitデータの簡単な可視化方法 (opens in a new tab)
- Streamlitを使用したチャットボットの作り方 (opens in a new tab)
- Streamlitアプリのデプロイ方法 (opens in a new tab)
しかし、Streamlitのパワーはここで終わりません。データサイエンティストがStreamlitを使用して素早くデータ可視化アプリを作成したい場合、協力的なPythonライブラリがあります。このPythonライブラリは、PyGWalker (opens in a new tab)と呼ばれ、簡単にTableauのようなUIをStreamlitアプリに組み込むことができます。
PyGWalkerコミュニティへの Sven と彼の素晴らしい貢献 (opens in a new tab) に特別な感謝を表します!
さらに、 PyGWalker GitHub ページ (opens in a new tab) もチェックして、PyGWalkerのさらなる例をご覧ください。
結論
Streamlitは、データサイエンスや機械学習のためのインタラクティブなWebアプリを作成するための強力なツールです。使いやすく、最小限のコーディングが必要で、データサイエンティストや機械学習の実践者を特に対象に設計されています。この記事で紹介したプロジェクトは、株式データの可視化から機械学習モデルの提供まで、Streamlitのパワーと汎用性を示しています。
経験豊富なデータサイエンティストが自分の作品を共有したい場合や、初心者が始めたばかりの場合でも、Streamlitを使用するとデータスクリプトを共有可能なWebアプリに簡単かつ迅速に変換することができます。
よくある質問
StreamlitはDjangoより優れていますか?
それは使用用途によります。Djangoは、複雑なWebアプリケーションに適した堅牢で機能豊富なフレームワークですが、Streamlitはデータサイエンスや機械学習のためのインタラクティブなWebアプリを作成するために特に設計されています。自分の作品を共有したいデータサイエンティストや機械学習の実践者であれば、Streamlitの方が良い選択肢になるでしょう。
Streamlitは優れたフレームワークですか?
はい、Streamlitはデータサイエンスや機械学習のためのインタラクティブなWebアプリを作成するための優れたフレームワークです。使いやすく、最小限のコーディングが必要であり、プロジェクトのデータサイエンス部分に集中することができます。
StreamlitはFlaskより優れていますか?
データサイエンスや機械学習のアプリケーションにおいて、一般的にはFlaskよりもStreamlitの方が良い選択です。Flaskは柔軟で軽量なWebフレームワークですが、Flaskを使用してインタラクティブなデータサイエンスや機械学習アプリケーションを作成することは、時間と労力がかかる場合があります。一方、Streamlitはこれらのタイプのアプリケーションに特化しており、簡単にインタラクティブなWebアプリを作成することができます。