Boston Housing 데이터를 활용한 선형회귀 분석 실습
2025. 7. 2. 17:48ㆍPython(AI)/ML
Boston Housing 데이터를 활용한 선형회귀 분석 실습
이번 포스팅에서는 인공지능 7단계를 기반으로, Boston Housing 데이터를 활용하여 주택 가격을 예측하는 회귀 모델을 학습하고 평가해봤습니다.
✅ 인공지능 7단계 프로세스
문제 정의
- 수치형 데이터를 예측하므로 지도학습(회귀) 문제입니다.
데이터 수집
boston_housing.csv데이터 사용.
데이터 전처리
- 불필요한 컬럼 제거
- 범주형 컬럼(
CHAS,RAD) 타입 정리 - 정답 데이터(
MEDV) 분리 및 이름 변경 →PRICE
EDA (탐색적 데이터 분석)
- 상관관계 분석 (heatmap 활용)
- 모델 학습에 도움이 되는 변수 우선순위 파악
전처리: 데이터 정규화
StandardScaler를 활용한 정규화 수행- 평균 0, 표준편차 1로 맞추어 스케일 차이 제거
모델 선택 및 하이퍼파라미터 조정
LinearRegression,SGDRegressor,Ridge비교Ridge에서는 alpha 값을 조정하여 규제 강도 비교
모델 학습 및 평가
.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)