0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kaggle×Colab×FastAPIで実現!糖尿病リスク予測ツールの作り方【初心者向け】

Posted at

はじめに

データサイエンスを始めたばかりの方にとって、「実践的なプロジェクト」をいかに小さく始め、かつ公開して人に使ってもらうかは非常に大きな壁です。

今回私は、糖尿病リスクを予測するAIツールを開発し、それをWordPressブログ上で一般の方が実際に使える形に公開しました。

本記事では、以下のような観点で取り組みの概要をご紹介します。

・Kaggleのデータセットを活用したモデル構築

・Google Colabによる開発・可視化・学習

・FastAPI × Render によるAPI化

・WordPressとの連携で診断フォームを実装

・実際に使える“公開型ツール”としての整備

データサイエンス初学者の方、FastAPIを使ったAPI化に興味のある方、あるいはWordPress上でAI診断ツールを公開してみたい方にとって、具体的なヒントになるはずです。

プロジェクト概要

「生活習慣病の代表格である糖尿病を、生活習慣データから予測できたら便利なのでは?」という着想からスタート。

予測だけでなく、ユーザーにとって分かりやすく、かつ行動につながるアドバイスを表示できるように意識しました。

また、Mini-MVP方式(最小機能で素早く構築 → 必要なら拡張)で開発したため、初学者でも十分に再現可能です。

使用したデータと開発環境

データセット:Kaggleで公開されている糖尿病関連のライフスタイルデータ

開発環境:Google Colab

使用技術:

LightGBMによる学習モデルの作成

SHAPによる特徴量の重要度分析

pickle形式でのモデル保存

FastAPI + RenderでのAPIサーバー構築

WordPressで診断フォームを埋め込み

工夫したポイント

特徴量選定:GenHlth(自覚的健康状態)、HighBP(高血圧)、Age(年齢)、BMI(体格指数)、HighChol(高コレステロール)を中心に構成。

SHAPによる可視化:どの特徴がリスクに影響しているかを視覚的に確認。

CORS対応:WordPressとRender APIの連携時に発生するCORSエラーの対処。

投稿サイズ制限の回避:長文+HTMLで保存できない事態に対して、Classic EditorやPHP設定変更で対応。

診断ツールの使い方(イメージ)

ユーザーは、以下のような項目を選択・入力します:

・高血圧・高コレステロールの有無

・コレステロール検査履歴

・BMI、年齢区分、性別

・自覚的な健康状態(5段階)

入力後、「診断する」ボタンを押すと、推定された糖尿病リスクと、行動につながるアドバイスが表示されます。

実際にツールを使ってみるには?

WordPressブログ上で実際に動作する診断フォームを公開しています。

ブログで実際の診断ツールを使ってみる

スマートフォンでもサクッと使える設計ですので、ぜひ体験してみてください!

まとめ

このように、Kaggleのデータセット → Colabでのモデル構築 → API化 → WordPressでの一般公開という流れを踏めば、データサイエンス初心者でも実践的なアウトプットが可能になります。

ポイントは、「完璧に作るよりもまず動かす」こと。そして、できる範囲で人に使ってもらう経験を積むこと。

今後はさらにモデルを改良し、より説明性や精度の高いツールに仕上げていきたいと考えています。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?