본문 바로가기
통계데이터과학과

어떤 지역의 주택가격을 예측하는 모델

by 공부하는노년 2024. 6. 13.
반응형

어떤 지역의 주택가격을 예측하는 모델을 만들기 위한 데이터를 주피터노트북을 이용하여 분석하는 과정을 알아봅니다. 주어진 houseprice.csv 파일을 사용하여 회귀 분석을 수행하고, 시각화를 포함한 분석 과정을 단계별로 설명드립니다.

1. 데이터 로드 및 기본 정보 확인

먼저, 데이터를 로드하고 기본 정보를 확인합니다.

import pandas as pd

# CSV 파일 경로
file_path = '/mnt/data/houseprice.csv' # 파일 경로를 정확하게 찾아 입력해야 함

# 데이터 로드
df = pd.read_csv(file_path)

# 데이터의 기본 정보 확인
print(df.info())
print(df.describe())

2. 결측치 확인 및 처리

결측치가 있는지 확인하고 처리합니다.

# 결측치 확인
print(df.isnull().sum())

# 결측치가 있다면 적절한 처리 방법 적용 (예: 평균값으로 대체)
df.fillna(df.mean(), inplace=True)

3. 데이터 시각화

데이터 분포를 시각화하여 이해를 돕습니다.

import matplotlib.pyplot as plt
import seaborn as sns

# 각 변수의 히스토그램
df.hist(bins=30, figsize=(15, 10))
plt.show()

# 상관관계 히트맵
plt.figure(figsize=(10, 8))
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
plt.show()

4. 회귀 분석 모델 생성

회귀 분석을 통해 주택가격을 예측하는 모델을 만듭니다.

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# 특성과 타겟 변수 분리
X = df[['tax', 'ground', 'floor', 'year']]
y = df['price']

# 데이터셋 분리 (훈련 셋과 테스트 셋)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 회귀 모델 학습
model = LinearRegression()
model.fit(X_train, y_train)

# 예측
y_pred = model.predict(X_test)

# 성능 평가
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f'Mean Squared Error: {mse}')
print(f'R2 Score: {r2}')

기본 모델
개선 모델 1
개선 모델 2

5. 결과 시각화

예측 결과와 실제 값을 비교하여 시각화합니다.

plt.figure(figsize=(10, 6))
plt.scatter(y_test, y_pred, alpha=0.3)
plt.xlabel('Actual Prices')
plt.ylabel('Predicted Prices')
plt.title('Actual vs Predicted Prices')
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], color='red', linewidth=2)
plt.show()

 

댓글