Hello there, ('ω')ノ
🏠 プロジェクト概要
目標は、アメリカのアイオワ州エイムズ市の住宅価格を、間取り・築年数・面積などのデータから予測することです。 これを通して、以下のようなプロセスを学びます:
✨ 全体の流れ(初心者でもできる構成)
- データの読み込み
- データの確認(EDA)
- 前処理(欠損値・カテゴリ変数)
- 特徴量の整備
- モデルの学習と予測
- 提出ファイルの作成
🧭 ステップ①:データの読み込み
まずは、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, (^^ゞ