제퍼넷 로고

부동산 가격 예측 모델을 구축하는 방법은 무엇입니까?

시간

개요

데이터 과학자는 주택 가격을 정확하게 예측할 수 있는 모델을 개발하여 부동산 업계를 혁신할 수 있는 힘을 가지고 있습니다. 이 블로그 게시물은 처음부터 끝까지 부동산 가격 예측 모델을 구축하는 방법을 알려줍니다. 에 대해 배울 준비 데이터 수집 분석, 모델 선택 및 평가. 이 가이드를 통해 귀하는 정보에 입각한 결정을 내리고 고객을 최고의 투자 기회로 안내할 수 있는 기술을 갖게 될 것입니다. 시작하자!

학습 목표:

이 기사에서는 다음을 수행합니다.

1. 가격 예측 모델 구축을 이해합니다.

2. 데이터 분석, 선택, 예측, 해석 등과 같은 모델 구축 프로세스를 이해합니다.

3. 주어진 데이터 세트로 정보에 입각한 결정을 내리는 방법을 배웁니다.

차례

  1. 데이터 및 문제 설명 이해
    1.1 문제 설명
    1.2 데이터 설명
  2. 가격 예측 모델의 데이터 분석
    2.1 결 측값
    2.2 누락된 값 처리
    2.3 Outliers
    2.4 탐색 적 데이터 분석
    2.5 모델 개발
  3. 결론

데이터 및 문제 설명 이해

우리가 사용할 데이터는 아이오와주 에임스에 있는 주거용 주택의 (거의) 모든 측면을 설명하는 79개의 설명 변수가 포함된 데이터세트인 Ames Housing Dataset입니다. 데이터 세트는 Kaggle에서 사용할 수 있으며 다운로드할 수 있습니다. 여기에서 지금 확인해 보세요.. 데이터 세트에는 1460개의 행과 81개의 열이 포함되어 있습니다. 대상 변수는 SalePrice 열입니다. 데이터 세트는 train.csv와 test.csv의 두 부분으로 나뉩니다. train.csv 파일에는 대상 변수가 포함되어 있고 test.csv 파일에는 포함되어 있지 않습니다. test.csv 파일은 보이지 않는 데이터에 대한 모델의 성능을 테스트합니다.

문제 정책

문제는 집의 특성을 고려하여 집의 판매 가격을 예측하는 것입니다. 기능은 데이터 세트의 열이며 대상 변수는 SalePrice 열입니다. 대상 변수가 연속적이므로 문제는 회귀 문제입니다.

데이터 설명

데이터 설명은 Kaggle에서 사용할 수 있으며 찾을 수 있습니다. 여기에서 지금 확인해 보세요.. 데이터 설명에는 데이터 세트의 각 열에 대한 자세한 설명이 포함됩니다. 데이터 설명은 데이터 세트의 각 열에 대한 자세한 설명을 제공하므로 매우 유용합니다. 또한 데이터 세트의 결측값에 대한 정보도 제공합니다.

가격 예측 모델의 데이터 분석

이 섹션에서는 누락된 값을 찾고 이상치 및 대상 변수와 기능 간의 관계입니다.

파이썬 코드:

결 측값

# 누락된 값이 있는 열 목록 만들기 missing_values ​​= [col for col in data.columns if data[col].isnull().any()]

# 각 열의 누락된 값의 수와 누락된 값의 백분율을 출력합니다.

missing_values의 열:

print(col, round(data[col].isnull().mean(), 3), ' 결측값 %')

코드 출력

산출

누락된 값 처리

# 누락된 값이 15% 이상인 열 삭제 data.drop(['Alley', 'FireplaceQu', 'PoolQC', 'Fence', 'MiscFeature'], axis=1, inplace=True)
# 나머지 열의 누락된 값을 가장 빈번한 값으로 채우기 new_missing_values ​​= [col for col in data.columns if data[col].isnull().any()] for col in new_missing_values: if data[col].dtype == 'O': data[col].fillna(data[col].mode()[0], inplace=True) 그렇지 않으면: data[col].fillna(data[col].median(), inplace=True )

Outliers

continuous_features = [data.columns if data.columns의 col for col in continuous_features의 col: data_copy = data.copy() if 0 in data_copy[col].unique(): 그렇지 않으면 통과: data_copy[col] = np.log(data_copy[col]) data_copy['SalePrice'] = np.log(data_copy['SalePrice']) plt.scatter(data_copy[col], data_copy['SalePrice']) plt. xlabel(col) plt.ylabel('판매가')
가격 예측 모델

산출

탐색 적 데이터 분석

plt.figure(figsize=(10, 15)) # 대상 변수 'SalePrice'와 피처의 상관관계에 대한 히트맵 그리기 sns.heatmap(data.corr()[['SalePrice']].sort_values( by='SalePrice', 오름차순=False), annot=True, cmap='viridis')
가격 예측 모델

산출

'OverallQual', 'GrLivArea' 및 'TotalBsmtSF'가 'SalePrice'와 강한 상관관계가 있음을 알 수 있습니다. 아래 산점도를 확인하십시오.

# 대상 변수와 data.corr()[data.corr()['SalePrice'] > 0.5].index에서 col에 대해 0.5보다 큰 상관관계가 있는 가장 상관관계가 높은 변수 간의 회귀 도표: if col == 'SalePrice ': 그렇지 않으면 전달: sns.regplot(x=data[col], y=data['SalePrice']) plt.show()
가격 예측 모델

산출

모든 기능은 대상 변수와 양의 상관 관계가 있습니다.

모델 개발

이제 데이터를 정리하고 시각화했습니다. 다음 단계는 주택 판매 가격을 예측하는 모델을 구축하는 것입니다. 여러 예측 모델을 포함하여 여러 가지 다른 예측 모델을 사용할 수 있습니다. 선형 회귀, KNN 회귀자, 등 일련의 모델과 파이프라인을 사용하여 모델의 정확도, 정밀도 및 재현율을 평가하여 최상의 모델을 찾습니다. 또한 교차 검증을 사용하여 모델이 잘 일반화되고 있는지 확인합니다.
# 범주형 변수를 숫자 데이터 유형으로 인코딩 from sklearn.preprocessing import LabelEncoder for col in data.columns: if data[col].dtype == 'O': label_encoder = LabelEncoder() data[col] = label_encoder.fit_transform(data [안부])
# 릿지 회귀를 사용하여 모델을 구축해 봅시다 from sklearn.linear_model import Ridge from sklearn.model_selection import cross_val_score from sklearn.metrics import mean_squared_error
# 기능에서 X 및 y 변수 생성 및 대상 변수 X = data[['OverallQual', 'GrLivArea', 'GarageCars', 'GarageArea', 'TotalBsmtSF', '1stFlrSF', 'FullBath', 'TotRmsAbvGrd', 'YearBuilt ', 'YearRemodAdd']] y = 데이터['SalePrice']
# 능선 회귀를 수행하는 함수 def ridge_regression(alpha, data): ridge = Ridge(alpha=alpha) ridge.fit(X, y) 점수 = cross_val_score(ridge, X, y, 점수 = 'neg_mean_squared_error', cv=5) rmse = np.sqrt(-scores) 반환 rmse
# Ridge - alpha alpha = [0.001, 0.01, 0.1, 1, 10, 100, 1000] for i in alpha: print('Alpha: ', i) print('Mean RMSE: ', ridge_regression(i, data).mean()) print('표준편차: ', ridge_regression(i, data).std()) print()
가격 예측 모델

산출

alpha = 100인 경우 RMSE가 가장 낮고 모델의 성능이 가장 좋습니다. RMSE는 38464입니다. 모델은 알파 = 100일 때 최상의 성능을 발휘합니다.

# 알파 = 100인 능선 회귀 모델을 사용합니다. ridge = Ridge(alpha=100) ridge.fit(X, y)
# 테스트 데이터 로드 test_data = pd.read_csv('test.csv')
# 훈련 데이터에서 수행된 모든 변경 수행 test_data.drop(['Alley', 'FireplaceQu', 'PoolQC', 'Fence', 'MiscFeature'], axis=1, inplace=True) new_missing_values ​​= [col for col in test_data.columns if test_data[col].isnull().any()] for col in new_missing_values: if test_data[col].dtype == 'O': test_data[col].fillna(test_data[col]. mode()[0], inplace=True) 그렇지 않으면: test_data[col].fillna(test_data[col].median(), inplace=True)
# test_data.columns의 col에 대한 테스트 데이터의 범주형 변수 인코딩: if test_data[col].dtype == 'O': label_encoder = LabelEncoder() test_data[col] = label_encoder.fit_transform(test_data[col])
# 기능 선택 X_test = test_data[['OverallQual', 'GrLivArea', 'GarageCars', 'GarageArea', 'TotalBsmtSF', '1stFlrSF', 'FullBath', 'TotRmsAbvGrd', 'YearBuilt', 'YearRemodAdd']] # 대상 변수 예측 y_pred = ridge.predict(X_test)

# csv 파일에 예측 저장 output = pd.DataFrame({'Id': test_data.Id, 'SalePrice': y_pred}) output.to_csv('my_submission.csv', index=False)

이 기사에서는 Ames 주택 데이터 세트를 가격 예측 모델로 선택하고 문제 설명을 이해하고 수행합니다. 탐색 적 데이터 분석. 우리는 또한 학습 및 테스트 데이터 세트에서 범주형 변수의 결측값 대치 및 인코딩을 수행했습니다. 그런 다음 서로 다른 알파 값으로 Ridge 회귀를 적용하고 RMSE를 최소화하기 위한 최상의 알파 값을 찾았습니다.

주요 집 약 :

  • 'OverallQual', 'GrLivArea' 및 'TotalBsmtSF' 세 가지 기능은 대상 변수 'SalePrice'와 강한 양의 상관관계를 갖는 것으로 나타났습니다.
  • 모델은 알파 = 100일 때 가장 잘 수행되어 amses가 38464입니다.
  • 이 분석은 부동산 가격 예측 모델에서 여러 기능을 고려하는 것이 중요하다는 것을 보여주었습니다.
  • 다음과 같은 정규화 기술 능선 회귀 모델의 복잡성을 줄이고 과적합을 방지할 수 있습니다.
  • 이 프로젝트의 결과는 부동산에서 데이터 과학을 사용하여 더 많은 정보에 입각한 결정을 내리고 예측을 개선할 수 있는 잠재력을 강조합니다.

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다.

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?