개요
학습 목표:
이 기사에서는 다음을 수행합니다.
1. 가격 예측 모델 구축을 이해합니다.
2. 데이터 분석, 선택, 예측, 해석 등과 같은 모델 구축 프로세스를 이해합니다.
3. 주어진 데이터 세트로 정보에 입각한 결정을 내리는 방법을 배웁니다.
차례
- 데이터 및 문제 설명 이해
1.1 문제 설명
1.2 데이터 설명 - 가격 예측 모델의 데이터 분석
2.1 결 측값
2.2 누락된 값 처리
2.3 Outliers
2.4 탐색 적 데이터 분석
2.5 모델 개발 - 결론
데이터 및 문제 설명 이해
문제 정책
문제는 집의 특성을 고려하여 집의 판매 가격을 예측하는 것입니다. 기능은 데이터 세트의 열이며 대상 변수는 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()
산출
모든 기능은 대상 변수와 양의 상관 관계가 있습니다.
모델 개발
# 범주형 변수를 숫자 데이터 유형으로 인코딩 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의 소유가 아니며 작성자의 재량에 따라 사용됩니다.
관련
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- 플라토 블록체인. Web3 메타버스 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 출처: https://www.analyticsvidhya.com/blog/2023/02/how-to-build-a-real-estate-price-prediction-model/