Réécrire le nœud d'échantillonnage de SPSS Modeler avec Python ①: N premiers cas, échantillonnage aléatoire

Lorsqu'il s'agit de données provenant d'un grand nombre d'enregistrements, le processus d'analyse prend du temps. Dans de tels cas, il est courant de créer un sous-ensemble (échantillon) à partir de tous les cas, d'en faire une taille traitable, puis de l'analyser. De plus, même si l'analyse finale est effectuée sur tous les cas, il arrive souvent que le traitement soit allégé avec un petit sous-ensemble et que l'analyse préliminaire soit effectuée. Faire un petit échantillon de toutes les données de cette manière est appelé échantillonnage (échantillonnage).

C'est le nœud d'échantillonnage qui effectue cet échantillonnage dans SPSS Modeler. Je vais expliquer ce nœud d'échantillonnage et le réécrire avec des pandas Python.

Il existe deux types d'échantillonnage: (1) l'échantillonnage simple et (2) l'échantillonnage complexe qui reflète les tendances des données. J'expliquerai chacun d'eux dans deux articles.

① Échantillonnage simple ← Cet article
①-1. N premiers cas
①-2. Échantillonnage aléatoire
② Échantillonnage complexe
②-1. Échantillonnage en couches
②-2. Échantillonnage en grappes

0. données brutes

Effectuer pour les données POS suivantes avec ID. Nous utilisons des données PDV attachées à une pièce d'identité qui enregistrent qui (CUSTID) a acheté quand (SDATE) et quoi (PRODUCTID, classification principale du produit L_CLASS, classification intermédiaire du produit M_CLASS) et combien (SOUS-TOTAL).

Il y a 28 599 cas dans 6 domaines. image.png

1m. ①-1. Première version des N cas Modeler

Extrayez 100 éléments depuis le début. C'est un processus très léger. Il est également utile lors de la prévisualisation de données dont la taille est connue. Il s'agit du mode par défaut pour l'échantillonnage Modeler.

■ Image après traitement 100 caisses sont extraites quelle que soit la commande. image.png

Utilisez un nœud d'échantillonnage. image.png

La méthode d'échantillonnage est «simple» et la méthode d'échantillonnage est «les n premiers cas» et 100 cas sont spécifiés. image.png

À propos, le refoulement SQL est efficace pour les "n premiers cas" du nœud d'échantillonnage. Voici un exemple d'application du refoulement SQL à Db2. FETCH FIRST 100 ROWS ONLY est utilisé.

SELECT T0.CUSTID AS CUSTID,T0.SDATE AS SDATE,T0.PRODUCTID AS PRODUCTID,T0."L_CLASS" AS "L_CLASS",T0."M_CLASS" AS "M_CLASS",T0.SUBTOTAL AS SUBTOTAL FROM (SELECT T0.CUSTID AS CUSTID,T0.SDATE AS SDATE,T0.PRODUCTID AS PRODUCTID,T0."L_CLASS" AS "L_CLASS",T0."M_CLASS" AS "M_CLASS",T0.SUBTOTAL AS SUBTOTAL FROM SAMPLETRANDEPT4EN2019S T0 FETCH FIRST 100 ROWS ONLY) T0

Dans le cas d'une entrée de fichier, le même résultat sera renvoyé à chaque fois que les "n premiers éléments" sont exécutés de manière répétée. Cependant, RDB ne garantit pas la commande, donc le même résultat peut ne pas toujours être retourné. Si vous souhaitez garantir le même résultat, insérez un nœud de tri, etc. pour corriger l'ordre, puis utilisez le nœud d'échantillonnage.

1p. ①-1. Première version de N pandas

Utilisez la fonction head pour obtenir les N premiers éléments des pandas.

df.head(100)

image.png

2m. ①-2. Version du modeleur d'échantillonnage aléatoire

Extraire aléatoirement n% de tous les cas. L'échantillonnage des N premiers enregistrements est une méthode légère, sauf si les données d'origine ont tendance à être biaisées par ordre. Cependant, en général, les données sont souvent enregistrées dans l'ordre d'occurrence, et la tendance des données diffère souvent selon l'ordre d'occurrence. Par exemple, avec une journée de données, il est possible que les tendances des données diffèrent entre le matin et le soir. L'échantillonnage aléatoire (méthode d'échantillonnage aléatoire simple) est la méthode d'échantillonnage la plus courante qui permet de résoudre ces problèmes.

Veuillez noter que ce processus est une image de lancer de dés pour tous les enregistrements, donc si la quantité de données est importante, ce sera un processus lourd.

Après tout, cela se fait dans le nœud d'échantillonnage. image.png

La méthode d'échantillonnage est «Simple» et la méthode d'échantillonnage est «% aléatoire», soit 0,2%.

En outre, le paramètre de départ aléatoire est vérifié. En cochant cela, le même résultat sera renvoyé lorsque l'échantillonnage est exécuté à plusieurs reprises. Ceci est généralement vérifié car l'analyse devient instable lorsque les données changent. Si vous souhaitez modifier le résultat de l'échantillonnage, cliquez sur le bouton Générer la graine et modifiez la graine pour changer le résultat d'échantillonnage suivant. image.png

■ Image après traitement Nous avons sélectionné au hasard 0,2%. 68 cas ont été extraits de 28 599 cas. Contrairement aux N premiers cas, les données des 100001 premiers clients ne sont pas sélectionnées, et les transactions de chaque client sont également peu sélectionnées.

image.png

À propos, le refoulement SQL est efficace pour le "% aléatoire" du nœud d'échantillonnage. Voici un exemple d'application du refoulement SQL à Db2. BERNOULLI (0.200000) REPEATABLE (377028) est utilisé. Différents RDB peuvent utiliser des méthodes différentes. En particulier, j'estime que certains RDB ne supportent pas les semences (les résultats d'échantillonnage ne sont pas reproductibles).

SELECT T0.CUSTID AS CUSTID,T0.SDATE AS SDATE,T0.PRODUCTID AS PRODUCTID,T0."L_CLASS" AS "L_CLASS",T0."M_CLASS" AS "M_CLASS",T0.SUBTOTAL AS SUBTOTAL FROM (SELECT T0.CUSTID AS CUSTID,T0.SDATE AS SDATE,T0.PRODUCTID AS PRODUCTID,T0."L_CLASS" AS "L_CLASS",T0."M_CLASS" AS "M_CLASS",T0.SUBTOTAL AS SUBTOTAL FROM SAMPLETRANDEPT4EN2019S T0 TABLESAMPLE BERNOULLI(0.200000) REPEATABLE(377028)) T0

Comme indiqué précédemment, l'échantillonnage aléatoire peut être un processus lourd pour traiter tous les cas, il est donc préférable de mettre en cache les résultats de l'échantillonnage ou de les sortir dans un fichier ou une table pour une analyse ultérieure plus efficace. Je vais.

image.png

Vous pouvez également décider du nombre de cas et effectuer un échantillonnage aléatoire. Dans ce cas, calculez le rapport par (nombre d'échantillons) / (nombre total) * 100 minutes et réglez. Si vous souhaitez échantillonner au hasard 100 éléments avec ces données, ce sera 100/28599 * 100 = 0,349%.

Si vous définissez le% aléatoire sur 0,35 et spécifiez le nombre maximum sur 100, le nombre est limité à 100. image.png

■ Image après traitement 100 prélèvements aléatoires ont été réalisés. image.png

2p. ①-2. Version de pandas d'échantillonnage aléatoire

Utilisez la fonction sample pour obtenir un échantillonnage aléatoire avec des pandas. Réglez le rapport avec frac. C'est une fraction, pas un taux de 100% (1 est 100%). Ici, 0,2% est spécifié. Spécifiez une graine aléatoire avec random_state.

df.sample(frac=0.002, random_state = 1)

image.png

Si vous souhaitez réaffecter l'index, effectuez reset_index (drop = True).

df.sample(frac=0.002, random_state = 1).reset_index(drop=True)

image.png

Lorsque vous spécifiez le nombre d'observations, spécifiez n au lieu de frac.

df.sample(n=100, random_state = 1)

image.png

3. Échantillon

L'échantillon est placé ci-dessous.

courant https://github.com/hkwd/200611Modeler2Python/raw/master/sample/sample.str notebook https://github.com/hkwd/200611Modeler2Python/blob/master/sample/sampling.ipynb Les données https://raw.githubusercontent.com/hkwd/200611Modeler2Python/master/data/sampletranDEPT4en2019S.csv

■ Environnement de test Modeler 18.2.1 Windows 10 64bit Python 3.6.9 pandas 0.24.1

4. Informations de référence

Noeud d'échantillonnage https://www.ibm.com/support/knowledgecenter/ja/SS3RA7_18.2.1/modeler_mainhelp_client_ddita/clementine/mainwindow_navigationstreamsoutputtab.html

Recommended Posts

Réécrire le nœud d'échantillonnage de SPSS Modeler avec Python ①: N premiers cas, échantillonnage aléatoire
Réécrire le nœud d'échantillonnage de SPSS Modeler avec Python (2): échantillonnage en couches, échantillonnage en grappes
Réécrivez le nœud d'ajout d'enregistrement de SPSS Modeler avec Python.
Réécrivez le nœud de création de champ de SPSS Modeler avec Python. Extraction de caractéristiques à partir de données de capteurs de séries temporelles
Réécrivez le nœud d'enregistrement en double de SPSS Modeler avec Python. ① Identifiez le premier article acheté. (2) Identification de l'article le plus vendu dans la catégorie de produits
Modifier les paramètres d'un nœud dans un super nœud avec le script SPSS Modeler Python
First Python 3 ~ Le début de la répétition ~
Créez un programme de jugement de compatibilité avec le module aléatoire de python.
Vérifier l'existence du fichier avec python
[Python3] Réécrire l'objet code de la fonction
Réécrire le nœud de filtre de SPSS Modeler avec Python
Réécrivez le nœud de reconfiguration de SPSS Modeler avec Python. Agrégation par catégorie de produits achetés
Remarque: Comment obtenir le dernier jour du mois avec python (ajouté le premier jour du mois)
Préparer l'environnement d'exécution de Python3 avec Docker
Mathématiques Todai 2016 résolues avec Python
[Note] Exportez le html du site avec python.
Calculez le nombre total de combinaisons avec python
Vérifiez la date du devoir de drapeau avec Python
Renommer la balise avec un espace de noms en lxml
Convertir le code de caractère du fichier avec Python3
[Python] Déterminez le type d'iris avec SVM
La première étape de l'apprentissage automatique ~ Pour ceux qui veulent essayer l'implémentation avec python ~
Deuxième moitié de la première journée d'étude de Python Essayez d'utiliser l'API Twitter avec Bottle
Détruire l'expression intermédiaire de la méthode sweep avec Python
Calculer le coefficient de régression d'une analyse de régression simple avec python
Résumé du flux de base de l'apprentissage automatique avec Python
Bilan du premier défi du machine learning avec Keras
[Python] Comment réécrire le style de table avec python-pptx [python-pptx]
Obtenez l'état de fonctionnement de JR West avec Python
Pourquoi le premier argument de la classe [Python] est-il self?
Gestion des versions de Node, Ruby et Python avec anyenv
le zen de Python
J'ai essayé de trouver l'entropie de l'image avec python
Essayez de gratter les données COVID-19 Tokyo avec Python
L'histoire de la mise en œuvre du sujet Facebook Messenger Bot avec python
Unifier l'environnement de l'équipe de développement Python en commençant par Poetry
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
La première API à créer avec le framework Python Djnago REST
Calculez des millions de chiffres dans la racine carrée de 2 avec python
J'ai écrit la grammaire de base de Python dans Jupyter Lab
Exécutez l'intelligence de votre propre bibliothèque python avec VScode.
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
[Homologie] Comptez le nombre de trous dans les données avec Python
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Estimer la posture du marqueur AR avec Python + OpenCV + drone
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Récupérez la source de la page à charger indéfiniment avec python.
J'ai essayé de résoudre la première question de l'examen d'entrée en mathématiques 2019 de l'Université de Tokyo avec python sympy