[PYTHON] J'ai essayé de prédire le prix de l'immobilier à Boston avec PyCaret

introduction

J'ai essayé d'utiliser la bibliothèque d'apprentissage automatique PyCaret qui a été publiée l'autre jour. L'analyse des caractéristiques des données et la comparaison des performances avec plusieurs modèles seront automatisées et je pense que le temps de travail des scientifiques des données jusqu'à présent sera considérablement réduit.

Cette fois, je vais essayer de résoudre le problème immobilier de Boston du problème de retour avec PyCaret.

** Article précédent: 1. J'ai essayé de classer la qualité du vin par PyCaret ** ** 2. J'ai essayé de prédire la survie du Titanic avec PyCaret **

1. Installez PyCaret

Exécutez le code ci-dessous pour l'installer. J'utilise Anaconda, mais j'ai lancé et installé un environnement virtuel dédié à PyCaret. Dans un environnement virtuel existant géré par Conda, une erreur peut se produire. (Probablement à cause de la collision entre pip et conda)

pip install pycaret

2. Acquisition de données

PyCaret fournit plusieurs ensembles de données open source avec get_data (). Une liste des ensembles de données fournis se trouve sur le lien ci-dessous. https://pycaret.org/get-data/#datasets

Cette fois, nous utiliserons l'ensemble de données sur les prix immobiliers de Boston.

from pycaret.datasets import get_data
dataset = get_data('boston')

Résultats image.png

Jetons un coup d'œil au contenu des données en utilisant le profile_report () de Pandas.

import pandas_profiling
dataset.profile_report()

résultat image.png

Une description des données.

La taille des données de Boston Real Estate est de 506 lignes x 14 colonnes. Ces données sont une description des variables explicatives.

  1. criminalité: taux de criminalité par habitant par ville

  2. zn: Pourcentage de zones résidentielles divisées en lots de plus de 25 000 pieds carrés.

  3. industrie: pourcentage de non-commerçants par ville (ratio de superficie)

  4. chas: variable fictive Charles River (= 1 si la route touche la rivière; 0 autre).

  5. nox: concentration d'oxyde d'azote (1/10 million)

  6. rm: nombre moyen de pièces par logement

  7. âge: pourcentage d'unités habitées par des propriétaires construits avant 1940. (L'année de l'enquête de l'ensemble de données est 1978)

  8. dis: Moyenne pondérée des distances jusqu'à 5 centres d'emploi de Boston

  9. rad: Indice d'accessibilité aux autoroutes périphériques

  10. impôt: taux d'imposition des immobilisations par 10 000 dollars

  11. ptratio: ratio élèves-enseignant par ville

  12. noir: = 1000 (Bk-0,63) ^ 2, où Bk est le pourcentage de noirs dans la ville.

  13. lstat: Faible état de la population (%)

  14. medv (** variable objective **): nombre médian de maisons dans lesquelles réside le propriétaire (\ $ 1000s)

3. Prétraitement des données

À l'aide de sample (), divisez 90% de l'ensemble de données en données d'entraînement et 10% en données de test.

data = dataset.sample(frac=0.9, random_state=786).reset_index(drop=True)
data_unseen = dataset.drop(data.index).reset_index(drop=True)

print('Data for Modeling: ' + str(data.shape))
print('Unseen Data For Predictions: ' + str(data_unseen.shape))

Résultat (jusqu'à 10 éléments)

Data for Modeling: (455, 14) Unseen Data For Predictions: (51, 14)

Utilisez setup () pour prétraiter les données. À ce moment, spécifiez la variable objective comme argument target = medv.

from pycaret.regression import *
exp_reg101 = setup(data = data, target = 'medv',session_id=12) 

Résultat (jusqu'à 10 éléments) image.png

4. Comparaison de modèles

Utilisez compare_models () pour analyser l'ensemble de données à l'aide de plusieurs modèles de régression et résumer les résultats dans un tableau. C'est une fonctionnalité très utile pour déterminer le modèle de régression à utiliser.

Il existe plus de 10 types de modèles de régression fournis par Pycaret, qui peuvent être confirmés via les liens ci-dessous.

https://pycaret.org/regression/

compare_models()

Le régresseur catBoost avait RMSE = 3,1399 et R ^ 2 = 0,859. Cette fois, nous parlerons de l'évaluation des performances de PyCaret avec régression linéaire (R ^ 2 = 0,6739) à la 8e place.

résultat image.png

5. Génération d'un modèle analytique

Sélectionnez un modèle de classification et modélisez-le. Utilisez create_model (). Cette fois, nous utiliserons le modèle de régression linéaire.

lr = create_model('lr')

La moyenne pour le R-2 était de 0,6739. (méthode k-fold, n_fold = 10) résultat image.png

6. Réglage du modèle analytique

Vous pouvez également régler le modèle à l'aide de tune_model.

tuned_lr = tune_model('lr')

résultat image.png

La moyenne de R ^ 2 avant réglage était de 0,6739, et la moyenne après réglage était de 0,6739, ce qui ne s'est pas amélioré. Pour la régression linéaire, tuned_model () peut ne pas être très prometteur.

7. Visualisation du modèle analytique

Visualisez les résultats de l'analyse à l'aide de plot_model.

plot_model(tuned_lr)

résultat image.png

8. Évaluation du modèle analytique

Il est possible d'effectuer plusieurs évaluations en même temps à l'aide de evaluer_model ().

evaluate_model(lr)

Si vous appuyez sur le bouton dans le cadre jaune, chaque résultat d'évaluation sera affiché.

résultat image.png

9. Prévisions

Après avoir finalisé le modèle avec finalize_model (), faites une prédiction avec predict_model (). Lors des prédictions, nous utilisons des données de test (ici, unseen_data).

final_lr = finalize_model(tuned_lr)
unseen_predictions = predict_model(final_lr, data=data_unseen)
unseen_predictions.head()

La colonne Label représente le résultat de la prédiction. La colonne medv est la bonne réponse.

résultat image.png

10. Résumé

  1. J'ai analysé le problème de régression avec PyCaret.

10.1 Liste des fonctions Pycaret utilisées pour l'analyse

  1. Prétraitement des données: setup ()
  2. Comparez les modèles: compare_models ()
  3. Générer un modèle analytique: create_model ()
  4. Réglage: tune_model ()
  5. Visualisation: plot_model ()
  6. Évaluation: evaluer_model ()
  7. Prédiction: finalize_model (), predict_model ()

11. Références

1.PyCaret Home Page , http://www.pycaret.org/ 2.PyCaret Classification, https://pycaret.org/classification/ 3. J'ai essayé d'utiliser PyCaret à la vitesse la plus rapide, https://qiita.com/s_fukuzawa/items/5dd40a008dac76595eea 4. J'ai essayé de classer la qualité du vin par PyCaret. https://qiita.com/kotai2003/items/c8fa7e55230d0fa0cc8e 5. J'ai essayé de prédire la survie du Titanic avec PyCaret. https://qiita.com/kotai2003/items/a377f45ddee9829ed2c5

Recommended Posts

J'ai essayé de prédire le prix de l'immobilier à Boston avec PyCaret
J'ai essayé de prédire la survie du Titanic avec PyCaret
J'ai essayé de prédire l'année prochaine avec l'IA
J'ai essayé le clustering avec PyCaret
J'ai essayé de prédire et de soumettre les survivants du Titanic avec Kaggle
J'ai essayé de décrire le trafic en temps réel avec WebSocket
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai essayé de commencer avec Hy
J'ai essayé d'implémenter CVAE avec PyTorch
J'ai essayé de résoudre TSP avec QAOA
Comment écrire hors ligne en temps réel J'ai essayé de résoudre E11 avec python
J'ai essayé de visualiser le modèle avec la bibliothèque d'apprentissage automatique low-code "PyCaret"
J'ai essayé de prédire le comportement du nouveau virus corona avec le modèle SEIR.
Comment écrire en temps réel hors ligne J'ai essayé de résoudre E12 avec python
J'ai essayé d'implémenter la lecture de Dataset avec PyTorch
J'ai essayé d'utiliser lightGBM, xg boost avec Boruta
J'ai essayé d'apprendre le fonctionnement logique avec TF Learn
J'ai essayé de déplacer GAN (mnist) avec keras
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé de détecter rapidement un mouvement avec OpenCV
J'ai essayé d'intégrer Keras dans TFv1.1
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé de sortir LLVM IR avec Python
J'ai essayé de détecter un objet avec M2Det!
J'ai essayé d'automatiser la fabrication des sushis avec python
J'ai essayé d'utiliser Linux avec Discord Bot
J'ai essayé d'étudier DP avec séquence de Fibonacci
J'ai essayé de démarrer Jupyter avec toutes les lumières d'Amazon
J'ai essayé de juger Tundele avec Naive Bays
J'ai essayé PyCaret2.0 (pycaret-nightly)
J'ai essayé de déboguer.
J'ai essayé d'utiliser PyCaret
Introduction à la création d'IA avec Python! Partie 2 J'ai essayé de prédire le prix de l'immobilier dans la ville de Boston avec un réseau neuronal
J'ai essayé de déplacer l'apprentissage automatique (détection d'objet) avec TouchDesigner
J'ai essayé d'extraire des fonctionnalités avec SIFT d'OpenCV
J'ai essayé de déplacer Faster R-CNN rapidement avec pytorch
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2 2
J'ai essayé d'implémenter et d'apprendre DCGAN avec PyTorch
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2
J'ai essayé de démarrer avec le script python de blender_Partie 02
J'ai essayé de générer ObjectId (clé primaire) avec pymongo
J'ai essayé d'implémenter le perceptron artificiel avec python
J'ai essayé de créer un pipeline ML avec Cloud Composer
J'ai essayé de découvrir notre obscurité avec l'API Chatwork
[Introduction à Pytorch] J'ai essayé de catégoriser Cifar10 avec VGG16 ♬
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé d'implémenter Grad-CAM avec keras et tensorflow
J'ai essayé de créer une application OCR avec PySimpleGUI