5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

猿でもわかるAI・機械学習入門シリーズ 🐵🔰| [第5回] データが命!良いAIを作るためのデータ前処理入門

Posted at

📊 データが命!良いAIを作るためのデータ前処理入門【猿でもわかるAI・機械学習入門シリーズ #5】🐵🔰

みなさん、こんにちは!✨ 機械学習の基礎を少しずつ理解してきましたか?

前回は「Pythonで機械学習モデルを作る方法」を紹介しましたが、今回は 「AIの精度を上げるために最も重要な工程」 である データ前処理(Preprocessing) について解説します!

機械学習の世界では、よく 「Garbage in, Garbage out(ゴミを入れたらゴミが出る)」 という言葉が使われます。つまり、データの質が悪いと、どんなに高度なアルゴリズムを使っても良い結果は得られません! 🚨

では、どうやって「質の良いデータ」にすればいいのか?本記事で データ前処理の基本テクニック を学んでいきましょう!💡


📌 1. データ前処理って何?

データ前処理とは、 「機械学習モデルに適した形にデータを整える作業」 のことです。

実際のデータは 欠損値(Missing Values) があったり、異常値(Outliers) が含まれていたり、フォーマットがバラバラ だったりします。そのまま学習させると、AIは正しく学習できません💥

✨ データ前処理の主な目的

ノイズを減らして、AIが学習しやすいデータにする
データのバラつきを統一して、予測の精度を上げる
不要なデータを除外し、効率の良い学習を実現する


🔧 2. 実践!Pythonでデータ前処理

🎯 ステップ1:データを読み込む

まずは、前処理を行うためのサンプルデータを用意しましょう。

import pandas as pd

# サンプルデータを作成
data = {
    "年齢": [25, 30, 35, None, 45, 50, 120, 40, None, 29],  # Noneは欠損値
    "収入": [300, 400, None, 600, 800, 1000, 5000, 750, 700, 380],  # Noneは欠損値
    "職業": ["会社員", "自営業", "会社員", "会社員", "公務員", "自営業", "会社員", None, "公務員", "会社員"]
}

df = pd.DataFrame(data)
print(df)

📌 このデータには、欠損値(None)や異常値(120歳の年齢)が含まれています!


🎯 ステップ2:欠損値の処理

欠損値を処理する方法はいくつかありますが、代表的な方法は 「削除」「補完(埋める)」 の2つです。

📝 方法1:欠損値を削除する

df_cleaned = df.dropna()  # 欠損値を含む行を削除
print(df_cleaned)

📌 ただし、削除するとデータが減ってしまうので注意!⚠️

📝 方法2:平均値や中央値で埋める

df["年齢"].fillna(df["年齢"].median(), inplace=True)  # 年齢の欠損値を中央値で埋める
df["収入"].fillna(df["収入"].mean(), inplace=True)  # 収入の欠損値を平均値で埋める
print(df)

📌 平均値・中央値で補完することで、データのバランスを維持できます!


🎯 ステップ3:異常値の処理

例えば、「120歳」というデータは明らかに異常値 ですよね?このような値を処理する方法を見ていきましょう!

📝 方法1:閾値(しきい値)を決めて削除

df = df[(df["年齢"] >= 18) & (df["年齢"] <= 80)]  # 年齢が18〜80歳の範囲に収まるデータのみ残す
print(df)

📌 現実的な範囲を決めて、異常値を排除しましょう!

📝 方法2:標準偏差を使って異常値を検出

import numpy as np

mean = df["収入"].mean()
std_dev = df["収入"].std()

# 平均値±2標準偏差の範囲内に収まるデータのみ残す
df = df[(df["収入"] >= mean - 2 * std_dev) & (df["収入"] <= mean + 2 * std_dev)]
print(df)

📌 統計的に異常値を検出する方法もあります!


🎯 ステップ4:カテゴリデータの処理

「職業」のように、テキスト(カテゴリデータ) を含むデータも機械学習ではそのまま使えません。数値に変換する必要があります!

📝 方法1:ラベルエンコーディング(Label Encoding)

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()
df["職業"] = encoder.fit_transform(df["職業"])
print(df)

📌 「会社員」→0、「自営業」→1、「公務員」→2 のように数値に変換!

📝 方法2:ワンホットエンコーディング(One-Hot Encoding)

df = pd.get_dummies(df, columns=["職業"])
print(df)

📌 「職業_会社員」「職業_自営業」「職業_公務員」といった列ができ、それぞれ0 or 1に変換されます!


🎯 まとめ

データ前処理は、AIの精度を大きく左右する重要なステップ!
欠損値は「削除」か「補完(平均・中央値)」で処理
異常値は「閾値を設定」または「標準偏差」を使って検出・除去
カテゴリデータは「ラベルエンコーディング」や「ワンホットエンコーディング」で数値化

次回は 「機械学習モデルの学習と評価の流れを理解しよう」 を解説します!📌 お楽しみに!🎉

それでは、またね~👋✨


📢 質問や感想はコメント欄へ!
📝 シリーズ記事一覧はこちら → [リンク]
📍 X(Twitter)もフォローしてね → [@あなたのアカウント]

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?