猿でもわかるAIプログラミングシリーズ 🐵💻 CSVを読み込んで簡単なAI予測をしてみよう



## 1. はじめに：AI予測って実は簡単？

「AIって難しそう……」「Python書けるけど、どこから始めればいいの？」
そんな悩みを持つエンジニアの皆さんに向けて、今回から**猿でもわかるAIプログラミングシリーズ 🐵💻**を始めます！

本シリーズの目的は、**Pythonと身近なツールだけで、AI的な処理をサクッと試せる環境を作ること**です。記念すべき第1回では、**CSVファイルを読み込んで、機械学習で予測するミニアプリ**を作ってみましょう。

> 💡 「データサイエンス」や「AI」と聞くと敷居が高く感じますが、実はCSVとNumPy、pandas、scikit-learnがあれば簡単なモデルなら誰でも作れます！

## 2. 技術概要：使うライブラリとモデルの紹介

### 🔧 使用する主なライブラリ

| ライブラリ名         | 用途                 |
| -------------- | ------------------ |
| `pandas`       | CSVの読み込み、データフレーム処理 |
| `scikit-learn` | 学習・予測・モデル評価        |
| `matplotlib`   | グラフ描画（任意）          |

```bash
pip install pandas scikit-learn matplotlib
```

### 🤖 今回使うモデル：線形回帰（Linear Regression）

* 「過去のデータから将来を予測する」ためのベーシックな機械学習アルゴリズム
* 特徴量（入力）と目的変数（出力）の**関係性を線形で近似するモデル**
* 学習も高速で、**PoCや社内ツールにぴったり**

## 3. ハンズオン：CSVからAI予測までの流れ

### 🔍 シナリオ

CSVに「月別の広告費と売上」のデータがあり、**来月の広告費をもとに売上を予測したい**とします。

#### 📄 sample\_data.csv の内容

```csv
month,ad_cost,sales
1,100,200
2,150,270
3,200,340
4,250,410
5,300,480
```

### 🧪 コード全体（説明付き）

```python
import pandas as pd
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

# 1. データ読み込み
df = pd.read_csv("sample_data.csv")

# 2. 特徴量（X）と目的変数（y）の分離
X = df[["ad_cost"]]  # 二次元配列にする必要あり
y = df["sales"]

# 3. モデル学習
model = LinearRegression()
model.fit(X, y)

# 4. 予測
next_ad_cost = [[350]]  # 350万円の広告費
predicted_sales = model.predict(next_ad_cost)

print(f"広告費350万円の場合の予測売上: {predicted_sales[0]:.2f}万円")

# 5. 可視化（オプション）
plt.scatter(df["ad_cost"], df["sales"], color="blue", label="実データ")
plt.plot(df["ad_cost"], model.predict(X), color="red", label="予測ライン")
plt.xlabel("広告費（万円）")
plt.ylabel("売上（万円）")
plt.title("広告費と売上の関係")
plt.legend()
plt.grid(True)
plt.show()
```

### ✅ 出力結果例

```
広告費350万円の場合の予測売上: 550.00万円
```

簡単ですよね？ これだけで「AIっぽい予測」を実現できます！

---

## 4. 現場で使えるTipsとよくあるミス

### 💡 Tips（実務経験から）

* **CSVの前処理を侮るな**：数値でない文字列が混じっていると `ValueError` が出ることも。`df.dtypes` で型を事前に確認すると安全です。
* **特徴量は常に二次元で！**：`X = df["ad_cost"]` だと一次元になってしまい `fit()` で怒られます。`df[["ad_cost"]]` のように、列をリストで指定しましょう。
* **モデルを保存して再利用しよう**：PoCなら `joblib.dump(model, 'model.pkl')` でOK。

### ⚠️ よくあるエラー例

| エラー内容                                                  | 原因と対処法                              |
| ------------------------------------------------------ | ----------------------------------- |
| `ValueError: Expected 2D array, got 1D array instead:` | `X = df["col"]` を `df[["col"]]` に修正 |
| `FileNotFoundError`                                    | CSVファイルのパス間違い。`os.getcwd()` で確認     |
| 予測結果が不自然                                               | 外れ値やデータ不足。可視化して傾向を確認しよう             |

---

## 5. 応用編：複数特徴量を使って精度UP

### 例：広告費だけでなく「割引率」「SNS投稿数」も加えてみる

```python
X = df[["ad_cost", "sns_posts", "discount_rate"]]
```

* `LinearRegression()` は複数特徴量にも対応
* 相関係数や `coef_` を見ると、どの特徴量が影響してるかも見えてくる

```python
print(model.coef_)  # 係数一覧
print(model.intercept_)  # 切片
```

---

## 6. まとめ：小さく始めて、現場で育てるAI

### ✅ このハンズオンで得られたこと

* PythonとCSVだけで「AIっぽい予測」ができる
* `pandas` + `scikit-learn` を組み合わせればPoCがすぐに作れる
* グラフ化すれば、上司への説得資料にも使える

### ⚖️ 線形回帰のメリット・デメリット

| 項目      | 内容                  |
| ------- | ------------------- |
| ✅ メリット  | 学習が高速／説明性が高い／実装が簡単  |
| ❌ デメリット | 複雑な非線形関係には弱い／外れ値に敏感 |

---

## 🚀 次回予告

次回は、「**データクリーニングって何？やってみよう**」を予定しています。
引き続き、Pythonで楽しくAIプログラミングしていきましょう！

---

## 👨‍💻 おわりに

「ちょっとした予測」を自動化するだけで、現場の作業効率はグンと上がります。
まずはCSV一枚から、AIへの第一歩を踏み出してみませんか？

> 💬 コメント・LGTM・質問など大歓迎です！