以下の内容はhttps://cysec148.hatenablog.com/entry/2025/10/07/062817より取得しました。


機械学習の基本的な流れ

Hello there, ('ω')ノ

🏠 プロジェクト概要

目標は、アメリカのアイオワ州エイムズ市の住宅価格を、間取り・築年数・面積などのデータから予測することです。 これを通して、以下のようなプロセスを学びます:

✨ 全体の流れ(初心者でもできる構成)

  1. データの読み込み
  2. データの確認(EDA)
  3. 前処理(欠損値・カテゴリ変数)
  4. 特徴量の整備
  5. モデルの学習と予測
  6. 提出ファイルの作成

🧭 ステップ①:データの読み込み

まずは、train.csv(訓練用データ)と test.csv(予測用データ)を読み込んで、構造を見てみましょう。

import pandas as pd

# データの読み込み
train = pd.read_csv('/kaggle/input/house-prices-advanced-regression-techniques/train.csv')
test = pd.read_csv('/kaggle/input/house-prices-advanced-regression-techniques/test.csv')

# データの形状と最初の5行を確認
print("Train shape:", train.shape)
print("Test shape:", test.shape)
train.head()

🧭 ステップ②:目的変数の確認とEDA(簡単なデータ分析)

住宅価格(SalePrice)がどう分布しているか見てみます。

import matplotlib.pyplot as plt
import seaborn as sns

# 価格の分布
sns.histplot(train['SalePrice'], kde=True)
plt.title("SalePrice の分布")
plt.show()

# 欠損値が多い列の上位を確認
missing = train.isnull().sum().sort_values(ascending=False)
missing[missing > 0].head(10)

🧭 ステップ③:前処理(欠損値の処理と結合)

ここでは、trainとtestを結合して、同じ処理をまとめてやります。

# SalePrice を取り出しておく
y = train['SalePrice']

# 'Id'は予測に不要なので削除
train.drop(['SalePrice', 'Id'], axis=1, inplace=True)
test_ids = test['Id']
test.drop(['Id'], axis=1, inplace=True)

# データを結合
all_data = pd.concat([train, test], axis=0)
print("all_data shape:", all_data.shape)

🧭 ステップ④:カテゴリ変数の処理と欠損値埋め

# 数値型とカテゴリ型に分ける
numeric_cols = all_data.select_dtypes(include=['int64', 'float64']).columns
categorical_cols = all_data.select_dtypes(include=['object']).columns

# 数値型 → 平均値で埋める
for col in numeric_cols:
    all_data[col] = all_data[col].fillna(all_data[col].mean())

# カテゴリ型 → 最頻値で埋める
for col in categorical_cols:
    all_data[col] = all_data[col].fillna(all_data[col].mode()[0])

# カテゴリ変数をダミー変数(0/1)に変換
all_data = pd.get_dummies(all_data)

🧭 ステップ⑤:再分割・モデル学習・予測

from sklearn.linear_model import LinearRegression

# 訓練用・テスト用に再分割
X_train = all_data[:len(y)]
X_test = all_data[len(y):]

# 線形回帰モデルの学習
model = LinearRegression()
model.fit(X_train, y)

# 予測
preds = model.predict(X_test)

🧭 ステップ⑥:提出ファイルの作成

# 提出用ファイル作成
submission = pd.DataFrame({
    'Id': test_ids,
    'SalePrice': preds
})

submission.to_csv('submission.csv', index=False)

✅ 最後に

これで一通り、

データの読み込み → 前処理 → 学習 → 予測 → 提出

という一連の流れが体験できました!


💬 次にやると良いこと

  • 特徴量エンジニアリング(もっと精度を上げたいとき)
  • ログ変換や正規化
  • 複数のモデル(例:RandomForest、XGBoost)
  • クロスバリデーション

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/10/07/062817より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14