猿でもわかるAIプログラミングシリーズ 🐵💻 Seabornでおしゃれなグラフを作ってみた



## 1. はじめに：AI開発における“可視化”の大切さ

AI・機械学習のプロジェクトを進めるうえで、モデル構築だけで満足していませんか？
実際の業務現場では、以下のような壁にぶつかることがよくあります。

* データの前処理が正しくできているか不安
* モデルの挙動がブラックボックス化していて説明が難しい
* チーム内の共有資料に説得力が足りない

そこで登場するのが **「Seaborn」** です。
Python標準のMatplotlibではちょっと物足りない...そんなあなたに、データを“おしゃれかつ意味のある形”で可視化する力を授けてくれるライブラリです。

---

## 2. Seabornとは？〜Matplotlibとの違いを簡単に〜

Seabornは、Matplotlibをベースにした高レベルな可視化ライブラリです。
美しい配色、テーマ、自動レイアウトなど、グラフ作成を圧倒的に楽しくしてくれます。

| 項目       | Matplotlib | Seaborn              |
| -------- | ---------- | -------------------- |
| 美しさ      | 自前で調整が必要   | デフォルトでおしゃれ           |
| 学習コスト    | やや高め       | 直感的に使いやすい            |
| 統計的グラフ   | 弱い         | 強力なサポートあり            |
| データ構造の対応 | numpy配列中心  | pandasのDataFrameに最適化 |

---

## 3. 実例で学ぶ：Seabornを使ったデータ可視化

今回は、`tips`（チップの支払いデータ）というサンプルデータセットを使って可視化してみましょう。

### 📦 必要なライブラリのインストール

```bash
pip install seaborn pandas matplotlib
```

### 🐍 コード例：基本的な散布図とカテゴリ変数の可視化

```python
import seaborn as sns
import matplotlib.pyplot as plt

# サンプルデータ読み込み
tips = sns.load_dataset("tips")

# 散布図：total_billとtipの関係を性別で色分け
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="sex", style="smoker")

plt.title("Total Bill vs Tip by Gender and Smoking")
plt.show()
```

<img src="https://seaborn.pydata.org/_images/seaborn-scatterplot-1.png" width="500">

### 🎨 テーマを変えるだけで“おしゃれ感”が増す

```python
sns.set_theme(style="darkgrid")

sns.boxplot(x="day", y="total_bill", data=tips, palette="pastel")
plt.title("Boxplot of Total Bill by Day")
plt.show()
```

---

## 4. 実務に効くTIPS & よくある落とし穴

### ✅ 実務で役立つTIPS

| TIPS                          | 内容                    |
| ----------------------------- | --------------------- |
| `hue`, `style`, `size` を使いこなす | 複数変数の関係性を1つのグラフで把握可能  |
| `pairplot` でざっくり相関確認          | 探索的データ分析（EDA）で最初にやるべき |
| `FacetGrid` でサブグラフ量産          | 属性ごとの違いを視覚的に伝えるのに最適   |

```python
sns.pairplot(tips, hue="sex")
```

### ⚠️ よくあるエラーとその対処法

| エラー                                           | 原因             | 対処法                |
| --------------------------------------------- | -------------- | ------------------ |
| `ValueError: Could not interpret input 'xxx'` | カラム名のスペルミス     | `tips.columns` で確認 |
| グラフが崩れる                                       | カラムに欠損値が含まれている | `dropna()` で処理     |

---

## 5. 応用編：モデルの評価結果をSeabornで見える化

たとえば、分類モデルの予測結果を混同行列で可視化するケース。

```python
from sklearn.metrics import confusion_matrix
import pandas as pd

# ダミーデータ
y_true = [1, 0, 1, 1, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 1]

cm = confusion_matrix(y_true, y_pred)
cm_df = pd.DataFrame(cm, index=["Actual 0", "Actual 1"], columns=["Predicted 0", "Predicted 1"])

sns.heatmap(cm_df, annot=True, fmt="d", cmap="Blues")
plt.title("Confusion Matrix")
plt.show()
```

このように、**SeabornはAI・機械学習の実験結果をチームに“伝わる形”で共有する武器**になります。

---

## 6. まとめ：Seabornの魅力と今後の展望

### 🌟 Seabornの強み

* コード数行で直感的なグラフを作れる
* チーム共有やドキュメントにそのまま使える美しさ
* pandasとの相性が抜群で実務向き

### ⚠ 弱点もある

* インタラクティブな可視化には向かない（→ PlotlyやAltairへ）
* 3Dグラフやアニメーションは非対応

### 🔮 展望とおすすめの活用シーン

* 機械学習モデルの **前処理・EDA** に
* モデル結果の **レポート資料作成** に
* ダッシュボード連携用に **画像ファイル保存** する運用もおすすめ

---

## ✏️ おわりに

Seabornは“AIっぽい開発”を視覚的に楽しくしてくれる素敵なライブラリです。
「グラフなんてオマケでしょ」と思っていた方こそ、ぜひ一度触ってみてください。


---

ご要望があれば、「社内レポート向けグラフテンプレート集」なども公開予定です。
お気軽にご連絡ください！