[PYTHON] Introduction de DataLiner ver.1.3 et comment utiliser Union Append

introduction

Nous avons implémenté toutes les principales fonctions attendues pour la sortie de DataLiner 1.3.1. À l'avenir, le rythme de développement consistera à ajouter des corrections de bogues et à effectuer un prétraitement de temps en temps.

Article de publication: https://qiita.com/shallowdf20/items/36727c9a18f5be365b37 GitHub: https://github.com/shallowdf20/dataliner Document: https://shallowdf20.github.io/dataliner/preprocessing.html

Installation

! pip install -U dataliner

Changements dans la version 1.3

Il y a les quatre suivants.

Ensuite, je présenterai l'utilisation spécifique.

Comment utiliser

Tout d'abord, importez le package à utiliser cette fois.

import dataliner as dl
from sklearn.pipeline import make_pipeline
from sklearn.ensemble import RandomForestClassifier

À partir de cette version, des données titanesques sont incluses dans le package, ce qui facilite son essai. Utilisez la méthode load_titanic pour charger les exemples de données titaniques.

X, X_test, y = dl.load_titanic()

Maintenant, X est les données à l'exclusion de "survécu" dans train.csv, X_test est test.csv et y est la colonne "survécu" dans train.csv.

Comment utiliser

Cette fois, je présenterai le processus appelé ** Union Append **.

Dans le prétraitement DataLiner, pratiquement tout le prétraitement qui ajoute de nouvelles fonctionnalités à partir de fonctionnalités existantes reçoit le nom de classe Append 〇〇.

C'est pourquoi nous avons changé ArithmeticFeatureGenerator en AppendArithmeticFeatures dans cette version. Les exceptions sont BinarizeNaN et CountRowNaN, mais ce sont les processus qui sont effectués avant le traitement de complétion / catégorie de valeur manquante en principe, donc ce nom est utilisé.

Ici, par exemple, disons que vous souhaitez ajouter des fonctionnalités dans leur ensemble, et supposons que vous construisez un pipeline comme suit.

process = make_pipeline(
    dl.ImputeNaN(),
    dl.TargetMeanEncoding(),
    dl.StandardScaling(),
    dl.AppendCluster(),
    dl.AppendAnomalyScore(),
    dl.AppendPrincipalComponent(),
    dl.AppendClusterTargetMean(),
    dl.AppendClassificationModel(model=RandomForestClassifier(n_estimators=100, max_depth=5)),
    dl.AppendClusterDistance(),
    dl.AppendArithmeticFeatures(),
)
process.fit_transform(X, y)

Dans cette méthode, par exemple, la quantité de fonctionnalités ajoutée par Append Cluster est utilisée comme données d'origine du prochain Append Anomaly Score. (Et le montant de la fonctionnalité augmentera régulièrement dans tous les Append 〇〇 ci-dessous)

Vous souhaiterez peut-être effectuer un traitement en parallèle au lieu d'un tel traitement en série afin que toutes les fonctionnalités qui sont à la base d'Append 〇〇 soient les mêmes. Vous pouvez utiliser Union Append dans ce cas.

process = make_pipeline(
    dl.ImputeNaN(),
    dl.TargetMeanEncoding(),
    dl.StandardScaling(),
    dl.UnionAppend([
        dl.AppendCluster(),
        dl.AppendAnomalyScore(),
        dl.AppendPrincipalComponent(),
        dl.AppendClusterTargetMean(),
        dl.AppendClassificationModel(model=RandomForestClassifier(n_estimators=100, max_depth=5)),
        dl.AppendClusterDistance(),
        dl.AppendArithmeticFeatures(),
    ]),
)
process.fit_transform(X, y)

En indiquant la classe Append ○○ que vous souhaitez appliquer à UnionAppend dans un tableau, toutes les fonctionnalités de base du traitement dans UnionAppend sont unifiées et les résultats du traitement de chaque Append ○○ sont combinés et renvoyés. Le résultat de l'exécution est le suivant.

PassengerId Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked Cluster_Number Anomaly_Score Principal_Component_0 Principal_Component_1 Principal_Component_2 Principal_Component_3 Principal_Component_4 cluster_mean Predicted_RandomForestClassifier Cluster_Distance_0 Cluster_Distance_1 Cluster_Distance_2 Cluster_Distance_3 Cluster_Distance_4 Cluster_Distance_5 Cluster_Distance_6 Cluster_Distance_7 Age_multiply_SibSp PassengerId_multiply_SibSp SibSp_multiply_Parch
-1.729 0.8269 -0.9994 -0.7373 -0.5921 0.4326 -0.4734 -0.1954 -0.5022 -0.3479 -0.5397 1 0.094260 -1.4177 0.1906 -0.35640 -1.398 -0.5801 0.1677 0 2.861 1.265 4.352 3.466 5.616 3.461 2.782 5.667 -0.2561 -0.7479 -0.2048
-1.725 -1.5652 -0.9994 1.3548 0.6384 0.4326 -0.4734 -0.1954 0.7864 0.1665 2.0434 5 -0.047463 1.9956 0.1777 -0.14888 -2.449 0.6941 0.4874 1 3.768 4.335 5.799 3.681 3.946 3.028 4.993 4.830 0.2762 -0.7463 -0.2048
-1.721 0.8269 -0.9994 1.3548 -0.2845 -0.4743 -0.4734 -0.1954 -0.4886 -0.3479 -0.5397 0 0.076929 -0.8234 0.2181 -1.24773 -1.380 -1.2529 0.7321 1 1.870 2.311 4.937 3.759 5.490 3.548 3.376 5.467 0.1349 0.8164 0.2245
-1.717 -1.5652 -0.9994 1.3548 0.4077 0.4326 -0.4734 0.2317 0.4205 0.8250 -0.5397 0 -0.000208 1.5823 0.2699 0.10503 -1.536 -1.6788 0.7321 1 2.835 3.547 5.352 3.058 4.090 3.970 4.338 3.846 0.1763 -0.7429 -0.2048
-1.714 0.8269 -0.9994 -0.7373 0.4077 -0.4743 -0.4734 -0.1954 -0.4861 -0.3479 -0.5397 1 0.106421 -1.2160 -0.7344 -0.09900 -1.500 -0.7327 0.1677 0 2.866 1.148 5.064 2.921 5.567 3.463 2.689 5.594 -0.1934 0.8127 0.2245

Le traitement des données de test est comme d'habitude.

process.transform(X_test)
PassengerId Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked Cluster_Number Anomaly_Score Principal_Component_0 Principal_Component_1 Principal_Component_2 Principal_Component_3 Principal_Component_4 cluster_mean Predicted_RandomForestClassifier Cluster_Distance_0 Cluster_Distance_1 Cluster_Distance_2 Cluster_Distance_3 Cluster_Distance_4 Cluster_Distance_5 Cluster_Distance_6 Cluster_Distance_7 Age_multiply_SibSp PassengerId_multiply_SibSp SibSp_multiply_Parch
1.733 0.8269 -0.9994 -0.7373 0.3692 -0.4743 -0.4734 -0.1954 -0.4905 -0.3479 0.06949 6 0.08314 -0.92627 -1.0572 0.17814 1.514 0.78456 0.1087 0 3.095 2.724 5.232 2.986 5.397 3.045 1.1646 5.405 -0.17512 -0.8219 0.2245
1.737 0.8269 -0.9994 1.3548 1.3306 0.4326 -0.4734 -0.1954 -0.5072 -0.3479 -0.53969 0 0.01921 -0.45407 -0.2239 0.40615 1.531 -0.36302 0.7321 0 2.677 3.744 5.022 3.451 5.503 3.924 2.7926 5.414 0.57556 0.7513 -0.2048
1.741 -0.3692 -0.9994 -0.7373 2.4843 -0.4743 -0.4734 -0.1954 -0.4531 -0.3479 0.06949 3 0.02651 0.04527 -2.0548 1.70715 1.119 0.49872 0.2277 0 4.047 3.880 6.207 2.345 5.441 3.955 2.9554 5.527 -1.17825 -0.8256 0.2245
1.745 0.8269 -0.9994 -0.7373 -0.2076 -0.4743 -0.4734 -0.1954 -0.4737 -0.3479 -0.53969 6 0.11329 -1.17022 -0.7993 0.02809 1.770 0.37658 0.1087 0 3.011 2.615 5.099 3.238 5.522 3.420 0.9194 5.466 0.09846 -0.8275 0.2245
1.749 0.8269 -0.9994 1.3548 -0.5921 0.4326 0.7672 -0.1954 -0.4008 -0.3479 -0.53969 0 0.02122 -0.63799 1.2879 -0.38498 1.920 -0.06859 0.7321 1 2.269 3.601 3.888 4.139 5.238 3.679 2.6813 5.425 -0.25613 0.7563 0.3319

en conclusion

Ceci termine l'implémentation des fonctions initialement attendues et le prétraitement utilisé. À l'avenir, si je trouve une correction de bogue et un nouveau pré-traitement / je l'ajouterai si je peux y penser.

Recommended Posts

Introduction de DataLiner ver.1.3 et comment utiliser Union Append
Introduction du cadre de cybersécurité "MITRE CALDERA": utilisation et formation
[Introduction] Comment utiliser open3d
Résumé de l'utilisation de pandas.DataFrame.loc
Comment installer et utiliser Tesseract-OCR
Résumé de l'utilisation de pyenv-virtualenv
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
[Introduction à Azure pour les utilisateurs de kaggle] Comparaison du démarrage et de l'utilisation de la machine virtuelle Azure Notebooks et Azure Notebooks
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Comment installer et utiliser Graphviz
Résumé de l'utilisation de csvkit
[Introduction à Python] Comment utiliser l'opérateur booléen (et ・ ou ・ non)
[Python] Résumé de l'utilisation des pandas
[Introduction à Python] Comment utiliser la classe en Python?
[Python2.7] Résumé de l'utilisation d'unittest
python: Comment utiliser les locals () et globals ()
Jupyter Notebook Principes d'utilisation
Bases de PyTorch (1) -Comment utiliser Tensor-
Comment utiliser le zip Python et énumérer
Résumé de l'utilisation de la liste Python
[Python2.7] Résumé de l'utilisation du sous-processus
Comment utiliser is et == en Python
Comment utiliser les pandas Timestamp et date_range
[Question] Comment utiliser plot_surface de python
[Introduction à Data Scientist] Bases du calcul scientifique, du traitement des données et comment utiliser la bibliothèque de dessins graphiques graph Bases de Scipy
[Introduction à Data Scientist] Bases du calcul scientifique, du traitement des données et comment utiliser la bibliothèque de dessins graphiques graph Bases de Pandas
[Introduction à Data Scientist] Bases du calcul scientifique, du traitement des données et comment utiliser la bibliothèque de dessin de graphes ♬ Bases de Matplotlib
Comment utiliser Folium (visualisation des informations de localisation)
[Python] Comment utiliser deux types de type ()
Introduction du cadre de style Sinatra et comment l'utiliser
[Introduction à l'application Udemy Python3 +] 23. Comment utiliser Tapuru
Pas beaucoup de mention de la façon d'utiliser Pickle
[Python] Comment utiliser la fonction de hachage et taple.
Comment installer le détecteur Cascade et comment l'utiliser
Comment utiliser xml.etree.ElementTree
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
[Introduction to Data Scientist] Bases du calcul scientifique, du traitement des données et comment utiliser la bibliothèque de dessins graphiques ♬ Construction d'environnement
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv