> 백엔드 개발 > 파이썬 튜토리얼 > Scikit-learn을 사용한 주택 가격 예측: 완전한 가이드

Scikit-learn을 사용한 주택 가격 예측: 완전한 가이드

WBOY
풀어 주다: 2024-09-07 14:34:09
원래의
644명이 탐색했습니다.

Predicting House Prices with Scikit-learn: A Complete Guide

L'apprentissage automatique transforme divers secteurs, dont l'immobilier. Une tâche courante consiste à prédire les prix des logements en fonction de diverses caractéristiques telles que le nombre de chambres, de salles de bains, la superficie en pieds carrés et l'emplacement. Dans cet article, nous explorerons comment créer un modèle d'apprentissage automatique à l'aide de scikit-learn pour prédire les prix de l'immobilier, couvrant tous les aspects, du prétraitement des données au déploiement du modèle.

Table des matières

  1. Introduction à Scikit-learn
  2. Définition du problème
  3. Collecte de données
  4. Prétraitement des données
  5. Sélection des fonctionnalités
  6. Formation de modèle
  7. Évaluation du modèle
  8. Réglage du modèle (optimisation des hyperparamètres)
  9. Déploiement du modèle
  10. Conclusion

1. Introduction à Scikit-learn

Scikit-learn est l'une des bibliothèques les plus utilisées pour l'apprentissage automatique en Python. Il propose des outils simples et efficaces pour l’analyse et la modélisation des données. Qu'il s'agisse de classification, de régression, de clustering ou de réduction de dimensionnalité, scikit-learn fournit un ensemble complet d'utilitaires pour vous aider à créer des modèles d'apprentissage automatique robustes.

Dans ce guide, nous allons construire un modèle de régression en utilisant scikit-learn pour prédire les prix de l'immobilier. Passons en revue chaque étape du processus.


2. Définition du problème

La tâche à accomplir est de prédire le prix d'une maison en fonction de ses caractéristiques telles que :

  • Nombre de chambres
  • Nombre de salles de bains
  • Superficie (en pieds carrés)
  • Emplacement

Il s'agit d'un problème d'apprentissage supervisé où la variable cible (prix de l'immobilier) est continue, ce qui en fait une tâche de régression. Scikit-learn fournit une variété d'algorithmes de régression, tels que la Régression linéaire et la Forêt aléatoire, que nous utiliserons dans ce projet.


3. Collecte de données

Vous pouvez soit utiliser un ensemble de données du monde réel comme l'ensemble de données Kaggle House Prices, soit collecter vos propres données à partir d'une API publique.

Voici un exemple de ce à quoi pourraient ressembler vos données :

Bedrooms Bathrooms Area (sq.ft) Location Price ($)
3 2 1500 Boston 300,000
4 3 2000 Seattle 500,000

여기서 타겟 변수는 가격입니다.


4. 데이터 전처리

머신러닝 모델에 데이터를 입력하기 전에 사전 처리가 필요합니다. 여기에는 누락된 값 처리, 범주형 기능 인코딩, 데이터 크기 조정이 포함됩니다.

누락된 데이터 처리

실제 데이터세트에서는 데이터 누락이 흔히 발생합니다. 중앙값과 같은 통계 측정값을 사용하여 누락된 값을 채우거나 누락된 데이터가 있는 행을 삭제할 수 있습니다.

data.fillna(data.median(), inplace=True)
로그인 후 복사

범주형 기능 인코딩

머신러닝 모델에는 숫자 입력이 필요하므로 위치와 같은 범주형 특성을 숫자로 변환해야 합니다. 라벨 인코딩은 각 카테고리에 고유 번호를 할당합니다.

from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
data['Location'] = encoder.fit_transform(data['Location'])
로그인 후 복사

기능 스케일링

특징 크기에 민감한 알고리즘의 경우 면적 및 가격과 같은 특성의 크기를 동일하게 유지하는 것이 중요합니다. 스케일링을 적용하는 방법은 다음과 같습니다.

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
로그인 후 복사

5. 기능 선택

모든 기능이 대상 변수에 동일하게 기여하는 것은 아닙니다. 특징 선택은 가장 중요한 특징을 식별하는 데 도움이 되어 모델 성능을 향상시키고 과적합을 줄입니다.

이 프로젝트에서는 SelectKBest를 사용하여 대상 변수와의 상관 관계를 기반으로 상위 5개 기능을 선택합니다.

from sklearn.feature_selection import SelectKBest, f_regression
selector = SelectKBest(score_func=f_regression, k=5)
X_new = selector.fit_transform(X, y)
로그인 후 복사

6. 모델 훈련

이제 데이터를 전처리하고 최상의 기능을 선택했으므로 모델을 학습할 차례입니다. 선형 회귀Random Forest

라는 두 가지 회귀 알고리즘을 사용하겠습니다.

선형 회귀

선형 회귀는 데이터를 직선으로 연결하여 예측 값과 실제 값 간의 차이를 최소화합니다.

from sklearn.linear_model import LinearRegression
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)
로그인 후 복사

랜덤 포레스트

Random Forest는 다중 결정 트리를 사용하고 그 결과를 평균화하여 정확도를 높이고 과적합을 줄이는 앙상블 방법입니다.

from sklearn.ensemble import RandomForestRegressor
forest_model = RandomForestRegressor(n_estimators=100)
forest_model.fit(X_train, y_train)
로그인 후 복사

훈련-테스트 분할

모델이 얼마나 잘 일반화되는지 평가하기 위해 데이터를 학습 세트와 테스트 세트로 분할했습니다.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_new, y, test_size=0.2, random_state=42)
로그인 후 복사

7. 모델 평가

모델을 훈련한 후에는 평균 제곱 오차(MSE)R 제곱(R²)과 같은 지표를 사용하여 성능을 평가해야 합니다.

평균 제곱 오차(MSE)

MSE는 예측값과 실제값 간의 평균 제곱 차이를 계산합니다. MSE가 낮을수록 성능이 향상됩니다.

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
로그인 후 복사

R 제곱(R²)

R²는 모델이 목표 변수의 분산을 얼마나 잘 설명하는지 알려줍니다. 값이 1이면 완벽한 예측을 의미합니다.

from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
로그인 후 복사

이러한 측정항목을 사용하여 선형 회귀 모델과 Random Forest 모델의 성능을 비교합니다.


8. 모델 튜닝(하이퍼파라미터 최적화)

모델 성능을 더욱 향상시키기 위해 초매개변수를 미세 조정할 수 있습니다. Random Forest의 경우 n_estimators(트리 수) 및 max_length(트리의 최대 깊이)와 같은 하이퍼매개변수가 성능에 큰 영향을 미칠 수 있습니다.

초매개변수 최적화를 위해 GridSearchCV를 사용하는 방법은 다음과 같습니다.

from sklearn.model_selection import GridSearchCV

param_grid = {
    'n_estimators': [50, 100, 200],
    'max_depth': [None, 10, 20]
}

grid_search = GridSearchCV(RandomForestRegressor(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

best_model = grid_search.best_estimator_
로그인 후 복사

9. 모델 배포

모델을 훈련하고 조정한 후 다음 단계는 배포입니다. Flask를 사용하여 예측을 제공하는 간단한 웹 애플리케이션을 만들 수 있습니다.

다음은 주택 가격 예측을 제공하는 기본 Flask 앱입니다.

from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)

# Load the trained model
model = joblib.load('best_model.pkl')

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json
    prediction = model.predict([data['features']])
    return jsonify({'predicted_price': prediction[0]})

if __name__ == '__main__':
    app.run()
로그인 후 복사

joblib를 사용하여 훈련된 모델을 저장합니다.

import joblib
joblib.dump(best_model, 'best_model.pkl')
로그인 후 복사

이렇게 하면 API에 요청을 보내 예측을 할 수 있습니다.


10. 결론

이 프로젝트에서는 집값 예측을 위해 scikit-learn을 사용하여 머신러닝 모델을 구축하는 전체 과정을 살펴보았습니다. 데이터 전처리 및 기능 선택부터 모델 학습, 평가, 배포까지 각 단계를 실제 코드 예제로 다루었습니다.

머신러닝을 처음 접하는 사람이든 실제 프로젝트에 scikit-learn을 적용하려는 사람이든 이 가이드는 다양한 회귀 작업에 적용할 수 있는 포괄적인 워크플로를 제공합니다.

모델의 성능과 정확성을 높이기 위해 다양한 모델, 데이터 세트, 기술을 자유롭게 실험해 보세요.

회귀 #AI #데이터 분석 #데이터 전처리 #MLModel #RandomForest #LinearRegression #Flask #APIDevelopment #RealEstate #TechBlog #Tutorial #DataEngineering #DeepLearning #PredictiveAnalytics #DevCommunity

위 내용은 Scikit-learn을 사용한 주택 가격 예측: 완전한 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿