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.
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.
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.
Utilisez un nœud d'échantillonnage.
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.
À 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.
Utilisez la fonction head pour obtenir les N premiers éléments des pandas.
df.head(100)
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.
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 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.
À 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.
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 après traitement 100 prélèvements aléatoires ont été réalisés.
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)
Si vous souhaitez réaffecter l'index, effectuez reset_index (drop = True).
df.sample(frac=0.002, random_state = 1).reset_index(drop=True)
Lorsque vous spécifiez le nombre d'observations, spécifiez n au lieu de frac.
df.sample(n=100, random_state = 1)
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
Noeud d'échantillonnage https://www.ibm.com/support/knowledgecenter/ja/SS3RA7_18.2.1/modeler_mainhelp_client_ddita/clementine/mainwindow_navigationstreamsoutputtab.html
Recommended Posts