„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Vorhersage von Immobilienpreisen mit Scikit-learn: Ein vollständiger Leitfaden

Vorhersage von Immobilienpreisen mit Scikit-learn: Ein vollständiger Leitfaden

Veröffentlicht am 02.11.2024
Durchsuche:922

Predicting House Prices with Scikit-learn: A Complete Guide

Maschinelles Lernen verändert verschiedene Branchen, darunter auch die Immobilienbranche. Eine häufige Aufgabe ist die Vorhersage von Immobilienpreisen auf der Grundlage verschiedener Merkmale wie der Anzahl der Schlafzimmer, Badezimmer, der Quadratmeterzahl und der Lage. In diesem Artikel untersuchen wir, wie man mithilfe von scikit-learn ein Modell für maschinelles Lernen erstellt, um Immobilienpreise vorherzusagen und dabei alle Aspekte von der Datenvorverarbeitung bis zur Modellbereitstellung abzudecken.

Inhaltsverzeichnis

  1. Einführung in Scikit-learn
  2. Problemdefinition
  3. Datenerfassung
  4. Datenvorverarbeitung
  5. Funktionsauswahl
  6. Modelltraining
  7. Modellbewertung
  8. Modelloptimierung (Hyperparameteroptimierung)
  9. Modellbereitstellung
  10. Abschluss

1. Einführung in Scikit-learn

Scikit-learn ist eine der am häufigsten verwendeten Bibliotheken für maschinelles Lernen in Python. Es bietet einfache und effiziente Werkzeuge zur Datenanalyse und -modellierung. Egal, ob Sie sich mit Klassifizierung, Regression, Clustering oder Dimensionsreduktion befassen, scikit-learn bietet eine umfangreiche Reihe von Dienstprogrammen, die Sie beim Aufbau robuster Modelle für maschinelles Lernen unterstützen.

In diesem Leitfaden erstellen wir ein Regressionsmodell mithilfe von scikit-learn, um Hauspreise vorherzusagen. Lassen Sie uns jeden Schritt des Prozesses durchgehen.


2. Problemdefinition

Die vorliegende Aufgabe besteht darin, den Preis eines Hauses anhand seiner Merkmale vorherzusagen, wie zum Beispiel:

  • Anzahl der Schlafzimmer
  • Anzahl der Badezimmer
  • Fläche (in Quadratfuß)
  • Standort

Dies ist ein überwachtes Lernproblem, bei dem die Zielvariable (Hauspreis) kontinuierlich ist, was es zu einer Regressionsaufgabe macht. Scikit-learn bietet eine Vielzahl von Algorithmen für die Regression, wie zum Beispiel Lineare Regression und Random Forest, die wir in diesem Projekt verwenden werden.


3. Datenerfassung

Sie können entweder einen realen Datensatz wie den Kaggle House Prices-Datensatz verwenden oder Ihre eigenen Daten von einer öffentlichen API sammeln.

Hier ist ein Beispiel dafür, wie Ihre Daten aussehen könnten:

Schlafzimmer Badezimmer Fläche (Quadratfuß) Standort Preis ($)
3 2 1500 Boston 300.000
4 3 2000 Seattle 500.000

Die Zielvariable ist hier der Preis.


4. Datenvorverarbeitung

Bevor wir die Daten in ein maschinelles Lernmodell einspeisen, müssen wir sie vorverarbeiten. Dazu gehört der Umgang mit fehlenden Werten, die Kodierung kategorialer Merkmale und die Skalierung der Daten.

Umgang mit fehlenden Daten

Fehlende Daten kommen in realen Datensätzen häufig vor. Wir können fehlende Werte entweder mit einem statistischen Maß wie dem Median füllen oder Zeilen mit fehlenden Daten löschen:

data.fillna(data.median(), inplace=True)

Kodierung kategorialer Merkmale

Da Modelle für maschinelles Lernen eine numerische Eingabe erfordern, müssen wir kategoriale Merkmale wie den Standort in Zahlen umwandeln. Label Encoding weist jeder Kategorie eine eindeutige Nummer zu:

from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
data['Location'] = encoder.fit_transform(data['Location'])

Funktionsskalierung

Es ist wichtig, Merkmale wie Fläche und Preis zu skalieren, um sicherzustellen, dass sie im gleichen Maßstab liegen, insbesondere für Algorithmen, die empfindlich auf die Merkmalsgröße reagieren. So wenden wir die Skalierung an:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

5. Funktionsauswahl

Nicht alle Funktionen tragen gleichermaßen zur Zielvariablen bei. Die Merkmalsauswahl hilft bei der Identifizierung der wichtigsten Merkmale, was die Modellleistung verbessert und Überanpassungen reduziert.

In diesem Projekt verwenden wir SelectKBest, um die fünf wichtigsten Features basierend auf ihrer Korrelation mit der Zielvariablen auszuwählen:

from sklearn.feature_selection import SelectKBest, f_regression
selector = SelectKBest(score_func=f_regression, k=5)
X_new = selector.fit_transform(X, y)

6. Modellschulung

Da wir nun die Daten vorverarbeitet und die besten Funktionen ausgewählt haben, ist es an der Zeit, das Modell zu trainieren. Wir verwenden zwei Regressionsalgorithmen: Lineare Regression und Random Forest.

Lineare Regression

Die lineare Regression passt eine gerade Linie durch die Daten und minimiert so die Differenz zwischen den vorhergesagten und den tatsächlichen Werten:

from sklearn.linear_model import LinearRegression
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)

Zufälliger Wald

Random Forest ist eine Ensemble-Methode, die mehrere Entscheidungsbäume verwendet und deren Ergebnisse mittelt, um die Genauigkeit zu verbessern und Überanpassung zu reduzieren:

from sklearn.ensemble import RandomForestRegressor
forest_model = RandomForestRegressor(n_estimators=100)
forest_model.fit(X_train, y_train)

Zug-Test-Split

Um zu bewerten, wie gut sich unsere Modelle verallgemeinern lassen, teilen wir die Daten in Trainings- und Testsätze auf:

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. Modellbewertung

Nachdem wir die Modelle trainiert haben, müssen wir ihre Leistung anhand von Metriken wie Mittlerer quadratischer Fehler (MSE) und R-Quadrat (R²) bewerten.

Mittlerer quadratischer Fehler (MSE)

MSE berechnet die durchschnittliche quadratische Differenz zwischen den vorhergesagten und den tatsächlichen Werten. Ein niedrigerer MSE weist auf eine bessere Leistung hin:

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)

R-Quadrat (R²)

R² sagt uns, wie gut das Modell die Varianz der Zielvariablen erklärt. Ein Wert von 1 bedeutet perfekte Vorhersage:

from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)

Vergleichen Sie die Leistung der Modelle „Lineare Regression“ und „Random Forest“ anhand dieser Metriken.


8. Modelloptimierung (Hyperparameteroptimierung)

Um die Modellleistung weiter zu verbessern, können wir die Hyperparameter feinabstimmen. Für Random Forest können Hyperparameter wie n_estimators (Anzahl der Bäume) und max_ Depth (maximale Tiefe der Bäume) die Leistung erheblich beeinträchtigen.

So verwenden Sie GridSearchCV für die Hyperparameteroptimierung:

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. Modellbereitstellung

Sobald Sie das Modell trainiert und optimiert haben, ist der nächste Schritt die Bereitstellung. Sie können Flask verwenden, um eine einfache Webanwendung zu erstellen, die Vorhersagen liefert.

Hier ist eine einfache Flask-App zur Bereitstellung von Hauspreisvorhersagen:

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()

Speichern Sie das trainierte Modell mit joblib:

import joblib
joblib.dump(best_model, 'best_model.pkl')

Auf diese Weise können Sie Vorhersagen treffen, indem Sie Anfragen an die API senden.


10. Fazit

In diesem Projekt haben wir den gesamten Prozess der Erstellung eines maschinellen Lernmodells mithilfe von Scikit-Learn zur Vorhersage von Immobilienpreisen untersucht. Von der Datenvorverarbeitung und Funktionsauswahl bis hin zum Modelltraining, der Evaluierung und der Bereitstellung wurde jeder Schritt mit praktischen Codebeispielen abgedeckt.

Ganz gleich, ob Sie neu im maschinellen Lernen sind oder scikit-learn in realen Projekten anwenden möchten, dieser Leitfaden bietet einen umfassenden Workflow, den Sie für verschiedene Regressionsaufgaben anpassen können.

Fühlen Sie sich frei, mit verschiedenen Modellen, Datensätzen und Techniken zu experimentieren, um die Leistung und Genauigkeit Ihres Modells zu verbessern.

Regression #AI ​​#DataAnalysis #DataPreprocessing #MLModel #RandomForest #LinearRegression #Flask #APIDevelopment #RealEstate #TechBlog #Tutorial #DataEngineering #DeepLearning #PredictiveAnalytics #DevCommunity

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/amitchandra/predicting-house-prices-with-scikit-learn-a-complete-guide-2kd7?1 Bei Verstößen wenden Sie sich bitte an [email protected] um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3