Boston Housing 데이터를 활용한 선형회귀 분석 실습

2025. 7. 2. 17:48Python(AI)/ML

Boston Housing 데이터를 활용한 선형회귀 분석 실습

이번 포스팅에서는 인공지능 7단계를 기반으로, Boston Housing 데이터를 활용하여 주택 가격을 예측하는 회귀 모델을 학습하고 평가해봤습니다.


✅ 인공지능 7단계 프로세스

  1. 문제 정의

    • 수치형 데이터를 예측하므로 지도학습(회귀) 문제입니다.
  2. 데이터 수집

    • boston_housing.csv 데이터 사용.
  3. 데이터 전처리

    • 불필요한 컬럼 제거
    • 범주형 컬럼(CHAS, RAD) 타입 정리
    • 정답 데이터(MEDV) 분리 및 이름 변경 → PRICE
  4. EDA (탐색적 데이터 분석)

    • 상관관계 분석 (heatmap 활용)
    • 모델 학습에 도움이 되는 변수 우선순위 파악
  5. 전처리: 데이터 정규화

    • StandardScaler를 활용한 정규화 수행
    • 평균 0, 표준편차 1로 맞추어 스케일 차이 제거
  6. 모델 선택 및 하이퍼파라미터 조정

    • LinearRegression, SGDRegressor, Ridge 비교
    • Ridge에서는 alpha 값을 조정하여 규제 강도 비교
  7. 모델 학습 및 평가

    • .fit()을 통해 모델 학습
    • .score()를 통해 R²(결정계수)로 모델 평가

📊 핵심 코드 정리

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge

# 데이터 불러오기
boston_df = pd.read_csv("./data/boston_housing.csv")

# 불필요한 컬럼 제거
boston_df = boston_df.drop(columns=["Unnamed: 0"])

# 범주형 컬럼 타입 변경
boston_df["CHAS"] = boston_df["CHAS"].astype("int")

# 정답 데이터 분리
y = boston_df["MEDV"]
y.name = "PRICE"
X = boston_df.drop(columns=["MEDV"])

# 데이터 정규화
scaler = StandardScaler()
scaler.fit(X)
X_trans = pd.DataFrame(scaler.transform(X), columns=X.columns)

# 훈련/테스트 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X_trans, y, test_size=0.25, random_state=5)

# 모델 생성 및 학습
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)

sgd_model = SGDRegressor(eta0=1e-12, verbose=2)
sgd_model.fit(X_train, y_train)

# Ridge 모델 성능 비교 함수
def ridge_alpha(alpha):
    ridge = Ridge(alpha=alpha)
    ridge.fit(X_train, y_train)
    print("훈련용 데이터 : ", ridge.score(X_train, y_train))
    print("테스트용 데이터 : ", ridge.score(X_test, y_test))

ridge_alpha(0.1)
ridge_alpha(0.5)
ridge_alpha(1)