Les données que vous gérez lorsque vous utilisez des bibliothèques et des outils tels que l'apprentissage automatique sont très importantes. Sans les données, vous ne pouvez même pas faire de démonstration. Il est préférable d'utiliser des données réelles, mais je pense que dans de nombreux cas, vous ne disposez pas du type de données réelles que vous recherchez. Récemment, certaines entreprises ont publié des données réelles qui sont faciles à utiliser pour l'analyse, mais qui sont limitées à des fins de recherche. Dans certains cas, les conditions d'utilisation peuvent ne pas être remplies.
Si vous ne disposez pas des données, vous pouvez les créer vous-même, il est donc pratique de créer librement des données factices. Lors de la création de données factices, il est nécessaire de concevoir un moyen de les créer en fonction de l'objectif. Je pense qu'il peut être grossièrement divisé en deux.
Dans la mesure du rendement, s'il s'agit d'une chose simple comme la mesure de la vitesse de lecture de toutes les données, je pense qu'il existe de nombreux cas où les exigences sont satisfaites tant que la quantité de données est combinée. Cependant, lorsque vous effectuez des mesures de performances complexes telles que la jonction et le filtrage de données avec un taux de compression et SQL, il est nécessaire de faire attention à la cardinalité des données. Si toutes les valeurs sont identiques et que seule la quantité de données est combinée, le taux de compression peut être anormalement bon par rapport aux données réelles, entraînant des valeurs mesurées inutilisables.
L'analyse des données nécessite des données factices avec un scénario légèrement plus détaillé que celui requis pour les mesures de performance. De plus, en le montrant dans une démo, je pense que je vais montrer de quel type de résultat d'analyse il s'agit, donc cela n'a pas l'air bien avec une liste de nombres et de chaînes de caractères sans signification.
Cette fois, je voudrais présenter la procédure de création de données factices utilisées dans l'analyse des données avec un peu d'attention, plutôt que de la remplir avec des nombres aléatoires uniformes.
Décidez des attributs que vous souhaitez avoir lors de la création des données client. Je souhaite créer des données factices pour les éléments suivants.
attribut | Caractéristiques des données | Exemple |
---|---|---|
N ° de client | Valeur unique | 12345 |
Nom du client | Tout nom japonais | Taro Tanaka |
âge | Distribution uniforme | 30 ans |
la taille | distribution normale | 176cm |
revenu annuel | Enregistrer la distribution normale | 4,56 millions de yens |
Drapeau de propriété de voiture | 0 possession,1 Aucun(4:6) | 1 |
Statut matrimonial | 0 célibataire,1 marié,2 Séparation(3:6:1) | 2 |
Cette fois, c'est un peu pour l'explication, mais je pense que 20 à 30 attributs sont parfaits comme données factices.
Cette fois, je vais créer des données factices en utilisant Python. J'ai choisi Python parce que je peux utiliser NumPy pour générer des valeurs pour diverses distributions et Faker C'est parce que le package appelé est assez pratique. (La principale raison est ma langue préférée personnelle)
Puisqu'il s'agit d'une valeur unique, vous pouvez la compléter en créant des nombres dans l'ordre par séquence.
lang:python3.4.3
for i in range(1000)
i
En utilisant le package Faker, vous pouvez facilement créer des données factices telles que des noms. Bien que les types de données aient diminué, il est possible de générer des données pour chaque pays.
lang:python3.4.3
from faker import Faker
fake = Faker('ja_JP')
fake.name()
Il existe une grande variété, et vous pouvez générer uniquement le nom de famille ou l'adresse e-mail. Il y a peu de modèles en japonais, mais il y en a pas mal en anglais.
lang:python3.4.3
from faker import Faker
fake = Faker('ja_JP')
fake.last_name()
fake.email()
Comme c'est l'âge de l'utilisateur, les valeurs de 15 à 85 sont générées aléatoirement avec une distribution uniforme.
lang:python3.4.3
import numpy as np
from numpy.random import *
randint(15,85)
Je ne sais pas quel type de cas la hauteur est incluse dans les données client, mais je ne peux pas penser à d'autres valeurs d'attribut qui sont généralement appelées distribution normale.
lang:python3.4.3
import numpy as np
from numpy.random import *
normal(170,6)
Comme la moyenne et la dispersion sont différentes pour les hommes et les femmes, je pense que ce serait bien de la générer deux fois. De plus, étant donné que la moyenne et la variance par sexe et âge sont publiées dans les résultats de l'enquête du ministère de la Santé, du Travail et du Bien-être social, je pense que si une distribution normale est générée plusieurs fois en fonction de cela, ce sera des données factices très réalistes.
Bien que le revenu annuel moyen soit de 4 millions de yens, la médiane est de 2 millions de yens et il existe une grande différence entre le revenu annuel moyen et médian. Cela est dû au fait qu'il existe un certain nombre de valeurs aberrantes. Dans le secteur financier, ça s'appelle grosse queue. Lors de la création de telles données, générons des nombres aléatoires avec une distribution normale logarithmique.
lang:python3.4.3
import numpy as np
from numpy.random import *
lognormal(0,1)
Certaines des données sont appelées un indicateur géré oui ou non, comme ce que vous avez fait ou ce que vous avez. Comme il est essentiellement géré par 0 ou 1, diverses méthodes de génération peuvent être envisagées. Générez un nombre, divisez par 2 et utilisez le reste. Cette fois, nous créerons des données avec un taux de propriété de 60%, 1 étant la personne qui possède la voiture et 0 la personne qui ne possède pas la voiture.
lang:python3.4.3
import numpy as np
from numpy.random import *
CarFlagList = [0,1]
Weight = [0.4,0.6]
np.random.choice(CarFlagList,p=Weight)
Contrairement aux drapeaux, certains sont dans plusieurs états au lieu de deux. Il est possible de l'exprimer avec une combinaison d'indicateurs, mais il n'est pas gérable d'augmenter les attributs inutilement, il est donc courant d'avoir plusieurs valeurs docilement. Cette fois, nous allons créer des nombres aléatoires à partir de 3 types de données: 0 célibataire, 1 marié, 2 divorcé comme état matrimonial. Le rapport de chacun est de 3: 6: 1.
lang:python3.4.3
import numpy as np
from numpy.random import *
MariageList = ["0 célibataire","1 marié","2 Séparation"]
Weight = [0.3,0.6,0.1]
np.random.choice(MariageList ,p=Weight)
Vous pouvez créer un nombre aléatoire par presque la même procédure que le drapeau de possession de voiture. Cette fois, la valeur n'est pas un nombre mais une chaîne de caractères, mais il est pratique de pouvoir y répondre de manière flexible également.
Depuis que j'ai écrit un ensemble de modèles de génération de nombres aléatoires, je peux créer des données factices pour chaque scénario en tournant une boucle avec cette combinaison et l'instruction For. Dans un certain projet, j'ai créé des données factices pour 70 colonnes, mais c'était le plus difficile de définir les pondérations pour chacune des 70 colonnes. ..
Recommended Posts