【ITニュース解説】🚢 Titanic App Streamlit "Machine Learning Scikit Learn-Random Forest"
2025年09月17日に「Dev.to」が公開したITニュース「🚢 Titanic App Streamlit "Machine Learning Scikit Learn-Random Forest"」について初心者にもわかりやすく解説しています。
ITニュース概要
Titanicデータの生存予測WebアプリがPythonで開発された。StreamlitでUIを、Scikit-learnで機械学習モデル(RandomForest)を実装。データ可視化と、ユーザーが条件を入力して生存確率を予測できる。HTML/CSS不要でデータ分析からWebアプリ化する実例として役立つ。
ITニュース解説
このニュース記事は、タイタニック号の乗客データを使って、機械学習モデルで生存を予測するウェブアプリケーションを構築したプロジェクトについて解説している。このプロジェクトは、Pythonというプログラミング言語だけで、データ分析、機械学習モデルの構築、そしてそのモデルを操作できるインタラクティブなウェブアプリケーションの開発を一貫して行えることを示している。特に、システムエンジニアを目指す初心者にとって、これらの技術がどのように連携し、実用的なアプリケーションへと結びつくのかを理解する良い手本となる。
このアプリケーションの構築には、いくつかの主要な技術が使われている。まず、「Streamlit」は、Pythonのコードだけでウェブインターフェースを作成するためのライブラリだ。通常、ウェブアプリケーションを作るにはHTML、CSS、JavaScriptといった異なる技術が必要だが、Streamlitを使えばこれらを学ぶことなく、データ分析の結果や機械学習モデルを簡単にウェブ上で公開できる。次に、「Pandas」は、データ分析において非常に重要なライブラリで、表形式のデータを効率的に操作したり、整理したりするのに使われる。タイタニック号の膨大な乗客データも、Pandasを使って読み込み、加工された。そして、「Scikit-learn」は、機械学習のアルゴリズムを豊富に提供するライブラリで、今回はその中から「RandomForestClassifier」という予測モデルが選択された。これは、分類問題(生存するかしないか、といった二択の予測)に適しており、高い性能を発揮することが多い。「Plotly」と「Seaborn」は、データをグラフやチャートとして視覚化するために使われたライブラリで、データの傾向を分かりやすく示す役割を担う。
プロジェクトは大きく三つのステップで構成されている。一つ目は「データ探索と視覚化(EDA)」である。これは、与えられたデータがどのような特性を持っているのか、隠れたパターンや関係性はないかを探る初期段階だ。タイタニック号のデータでは、乗客の性別、年齢、チケットのクラスなどが生存率にどう影響したのかを分析する。例えば、女性の方が生存率が高かったのか、高額なチケットを持っていた人の方が助かりやすかったのか、といった疑問をグラフを使って可視化し、直感的に理解できるようにする。PlotlyやSeabornがこの段階で活躍し、棒グラフや円グラフ、散布図などを作成してデータの傾向を明らかにする。記事中のコード例は、Pandasで性別ごとの生存数を集計し、Plotlyでその割合を円グラフとして表示し、Streamlitの機能でウェブ上に表示する一連の流れを示している。
二つ目のステップは、「機械学習モデルの訓練」である。ここで、実際に乗客のデータから生存の可能性を予測するモデルを構築する。選択されたのはRandomForestClassifierで、これは多数の「決定木」と呼ばれる単純な予測モデルを組み合わせることで、より複雑なパターンを学習し、高精度な予測を行うことができる。モデルを訓練する前には、データの準備が非常に重要となる。例えば、乗客の中には年齢が不明な人もいるため、そのような「欠損値」を、他の乗客の年齢の中央値などで補完する処理を行う。また、性別(男性、女性)や乗船港(寄港地の名前)のような文字で表される「カテゴリカルな変数」は、機械学習モデルが直接扱えないため、数値データに変換する必要がある。これは「ワンホットエンコーディング」と呼ばれる手法で行われる。これらの前処理が完了したら、データセットをモデルの学習に使う「訓練データ」と、学習したモデルの性能を評価するための「テストデータ」に分割する。RandomForestClassifierは、この訓練データを使って、どの特徴(性別、年齢、チケットクラスなど)が生存にどのように影響するかを学習していく。
最後の三つ目のステップは、「予測インターフェースの作成」だ。これは、訓練した機械学習モデルを、ユーザーが実際に利用できるウェブアプリケーションの形にする部分にあたる。Streamlitの強力な機能を使って、ウェブページのサイドバーに、ユーザーが自分の仮想的な情報(例えば、自分が乗客だったらどのクラスのチケットを持ち、何歳で、性別はどうか、など)を入力できるフォームを作成する。ユーザーがこれらの情報を入力し、「予測」ボタンをクリックすると、入力されたデータはモデルが学習したときと同じ形式に変換される。その後、訓練済みのRandomForestClassifierがこの変換されたデータを受け取り、生存するかしないかを予測する。その予測結果は、Streamlitの機能を使って、ウェブページ上に「生存できたでしょう」とか「残念ながら生存できなかったでしょう」といった形で、分かりやすく表示される。
このプロジェクトは、データ分析の洞察を機械学習モデルに落とし込み、さらにそれをStreamlitというツールを使って誰でも利用できるインタラクティブなウェブアプリケーションとして公開する一連のプロセスを、すべてPythonだけで実現できることを示している。システムエンジニアを目指す初心者にとって、これらの技術がどのように連携し、アイデアを具体的なソリューションへと変換できるのかを理解する上で、非常に実践的で有益な例となるだろう。Streamlitの登場により、データサイエンスとウェブ開発の境界が曖昧になり、Pythonのスキルを持つ人々がより多様なアプリケーションを迅速に構築できるようになったことがよくわかる。