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 **
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
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
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
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.
criminalité: taux de criminalité par habitant par ville
zn: Pourcentage de zones résidentielles divisées en lots de plus de 25 000 pieds carrés.
industrie: pourcentage de non-commerçants par ville (ratio de superficie)
chas: variable fictive Charles River (= 1 si la route touche la rivière; 0 autre).
nox: concentration d'oxyde d'azote (1/10 million)
rm: nombre moyen de pièces par logement
â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)
dis: Moyenne pondérée des distances jusqu'à 5 centres d'emploi de Boston
rad: Indice d'accessibilité aux autoroutes périphériques
impôt: taux d'imposition des immobilisations par 10 000 dollars
ptratio: ratio élèves-enseignant par ville
noir: = 1000 (Bk-0,63) ^ 2, où Bk est le pourcentage de noirs dans la ville.
lstat: Faible état de la population (%)
medv (** variable objective **): nombre médian de maisons dans lesquelles réside le propriétaire (\ $ 1000s)
À 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)
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
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
Vous pouvez également régler le modèle à l'aide de tune_model.
tuned_lr = tune_model('lr')
résultat
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.
Visualisez les résultats de l'analyse à l'aide de plot_model.
plot_model(tuned_lr)
résultat
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
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
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