[PYTHON] Prédiction des prix des logements (retour par régression linéaire (kaggle)) ver1.0

1. Introduction

Cette fois, nous allons résoudre le problème de prévision du prix de vente. Dans un premier temps, j'aimerais faire une prédiction à partir d'une équation de régression du premier ordre très simple. A l'origine, c'est le vrai plaisir de traiter et d'optimiser un grand nombre de fonctionnalités, mais je voudrais commencer par faire une simple prédiction.

URL de référence https://www.kaggle.com/katotaka/kaggle-prediction-house-prices

La version utilisée est ici.

Python 3.7.6 numpy 1.18.1 pandas 1.0.1 matplotlib 3.1.3 scikit-learn 0.22.1

2 À propos du programme

Bibliothèque etc.


import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
import seaborn as sns

#Paramètres d'affichage en ligne dans Jupyter Notebook (sans cela, le graphique s'ouvrira dans une fenêtre séparée)
%matplotlib inline 

J'ai importé des pandas pour le chargement de csv, numpy pour le traitement des nombres, matplotlib et seaborn pour le dessin graphique et sklern.linear_model pour la régression.

Lecture des données d'entraînement


df = pd.read_csv("train.csv")
df

001.png

Il n'est pas possible de tout afficher en même temps en raison du grand nombre de fonctionnalités, mais de nombreuses conditions de logement (zone, face à la route, avoir une piscine, etc.) sont répertoriées. Il évalue et prédit si ces conditions affectent le prix de vente.

Identifier les caractéristiques avec un coefficient de corrélation élevé


corrmat = df.corr()
k = 10 #number of variables for heatmap
cols = corrmat.nlargest(k, 'SalePrice')['SalePrice'].index
cm = np.corrcoef(df[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)
plt.show()

002.png

Je voudrais trouver une fonctionnalité avec un coefficient de corrélation élevé par rapport au prix du logement. Jetons un coup d'œil à la carte thermique Seaborn. On peut voir que la quantité d'entités avec un coefficient de corrélation élevé avec SalePrice est Global Qual (qualité globale). Il est facile de comprendre que plus la qualité est élevée, plus le prix est élevé.

Analyse régressive et affichage du diagramme de dispersion


X = df[["OverallQual"]].values
y = df["SalePrice"].values
slr = LinearRegression()
slr.fit(X,y)

#Création de diagramme de dispersion
plt.scatter(X,y)
plt.xlabel('OverallQual')
plt.ylabel('House Price($)')

#Affichage de la courbe approximative
plt.plot(X, slr.predict(X), color='red')

#affichage graphique
plt.show()

003.png

J'ai fait un graphique de la relation entre la qualité globale et le prix de vente. La tendance générale est correcte. Cependant, lorsque la qualité globale est faible, elle est sous-estimée. En outre, on peut voir qu'il existe une grande variation là où la qualité globale est élevée. Je pense que ceux-ci peuvent être prédits plus précisément par d'autres quantités de caractéristiques, mais cette fois, je vais les prédire tels qu'ils sont.

Prévoir


#Lire les données de test
df_test = pd.read_csv('test.csv')

#Définissez la valeur de qualité globale des données de test sur X_Prêt à tester
X_test = df_test[["OverallQual"]].values

y_test_pred = slr.predict(X_test)
df_test[["Id", "SalePrice"]].to_csv("submission.csv", index = False)

Le SCORE envoyé à Kaggle était de 0,84342 (sur 4720 équipes à la 4563e place). Dès le prochain article, j'aimerais l'analyser en détail et faire un bon score.

Recommended Posts

Prédiction des prix des logements (retour par régression linéaire (kaggle)) ver1.0
Régression linéaire
Prédiction des prix des logements (prétraitement des données: premier semestre) ver1.1
[Pratique pour les débutants] Lire ligne par ligne "Prédiction des prix des maisons" de kaggle (5ème: Dummy of categorical variables)
[Pratique pour les débutants] Lire ligne par ligne "Prédire les prix des logements" de kaggle (Partie 2: Confirmation des valeurs manquantes)
[TensorFlow] Régression linéaire carrée minimale par méthode de descente de gradient (méthode de descente la plus raide)
[Pratique pour les débutants] Lisez ligne par ligne "Prédire les prix des logements" de kaggle (Partie 3: Se préparer à remplir les valeurs manquantes)