Genera nodo
In Synthetic Data Generator, si utilizza il nodo Generate per creare i dati sintetici strutturati.
Il nodo Generate può generare dati sintetici sia partendo da zero, utilizzando le distribuzioni statistiche specificate dall'utente, sia utilizzando automaticamente le distribuzioni ottenute dall'esecuzione di un nodo Mimic su dati esistenti.
- Descrizione
- Il nodo Generate di un flusso Synthetic Data Generator crea dati sintetici basati sulle proprietà statistiche e sulle relazioni del set di dati di origine. Utilizza vari algoritmi e modelli statistici per generare dati artificiali ma realistici.
- È possibile includere il nodo Generate più volte in un flusso per creare diversi tipi di dati sintetici. Tuttavia, i dati sintetici non possono essere uniti in Synthetic Data Generator.
- Utilizzo del nodo
- Se si desidera utilizzare i dati di produzione, aggiungere un nodo Mimic all'area di disegno. Un nodo Generate viene creato automaticamente e aggiunto dopo il nodo Mimic nel flusso, una volta che il nodo Mimic viene eseguito.
- Se si desidera utilizzare uno schema di dati personalizzato, aggiungere un nodo Generate e definire lo schema di dati in esso. Costruire dati tabellari definendo i dati da creare per ogni colonna. Non è possibile collegare un nodo Import o Anonymize direttamente a un nodo Generate.
- Obbligatorio o facoltativo
- Il nodo Generate è obbligatorio. Se si desidera utilizzare uno schema di dati personalizzato, è necessario aggiungere il nodo manualmente. Tuttavia, il nodo viene aggiunto automaticamente dopo un nodo Mimic.
Scripting con il nodo Generate
È possibile utilizzare linguaggi di scripting, come Python, per impostare in modo programmatico le proprietà dei nodi.
Generare le proprietà dei nodi
Le seguenti proprietà sono specifiche del nodo Generate. Per informazioni sulle proprietà comuni dei nodi, vedere Proprietà dei flussi e dei nodi.
| Nome proprietà | Tipo di dati | Descrizione proprietà |
|---|---|---|
correlations |
Proprietà strutturata | Imposta la correlazione tra i campi del set di dati. Per ulteriori informazioni, consultare la sezione Esempi di correlazioni. |
create_iteration_field |
booleano | |
fields |
Proprietà strutturata | Impostare i requisiti di un set di dati personalizzato utilizzando la proprietà fields . Per ulteriori informazioni, vedere l' esempio dei campi |
iteration_field_name |
Stringa | Quando create_iteration_field è impostato su True, il nuovo campo di iterazione utilizza il nome impostato. |
keep_min_max_setting |
booleano | Impostare su True per utilizzare il valore per max_cases |
locale |
Stringa | Il locale determina quali tipi di dizionario sono disponibili per la generazione dei campi; può avere un valore tra ["de_DE", "en_US", "es_ES", "fr_FR", "it_IT", "ja_JP", "ko_KR", "pl_PL", "pt_BR", "ru_RU", "zh_CN"] |
max_cases |
Numero intero | Impostare il numero massimo di righe di dati sintetici da generare. Il valore minimo è 1000. Il valore massimo è 2.147.483.647. |
random_seed |
Numero intero | |
refit_correlations |
booleano | |
replicate_results |
booleano | |
parameter_xml |
Stringa | Restituisce il parametro Xml come stringa |
Esempio di proprietà dei campi
La proprietà fields è una proprietà strutturata con la seguente sintassi:
generate.setPropertyValue("fields", [
[field1, storage, locked, [distribution1], min, max],
[field2, storage, locked, [distribution2], min, max],
[field3, storage, locked, [distribution3], min, max]
])
Si può usare per definire i requisiti personalizzati per i dati sintetici da generare. distribution è una dichiarazione del nome della distribuzione seguita da un elenco contenente coppie di nomi di attributi e valori. Non è possibile impostare direttamente la distribuzione; è necessario utilizzarla insieme alla proprietà fields . Ogni distribuzione è definita nel modo seguente:
[distributionname, [[par1], [par2], [par3]]]
generate = sdg.script.stream().createAt("generate", u"Generate", 726, 322)
generate.setPropertyValue("fields", [["Age", "integer", False, ["Uniform",[["min","1"],["max","2"]]], "", ""]])
Ad esempio, per creare un nodo che generi un singolo campo con una distribuzione binomiale, si può usare il seguente script:
generate_node1 = sdg.script.stream().createAt("generate", u"Generate", 200, 200)
generate_node1.setPropertyValue("fields", [["Education", "Real", False, ["Binomial", [["n", 32],
["prob", 0.7]]], "", ""]])
La distribuzione binomiale richiede 2 parametri: n e prob. Poiché una distribuzione binomiale non supporta valori minimi e massimi, questi vengono forniti come una stringa vuota.
Gli esempi seguenti mostrano tutti i possibili tipi di distribuzione. Si noti che la soglia è inserita come sia in thresh NegativeBinomialFailures che in NegativeBinomialTrial.
stream = sdg.script.stream()
generate = stream.createAt("generate", u"Generate", 200, 200)
beta_dist = ["Field1", "Real", False, ["Beta",[["shape1","1"],["shape2","2"]]], "", ""]
binomial_dist = ["Field2", "Real", False, ["Binomial",[["n" ,"1"],["prob","1"]]], "", ""]
categorical_dist = ["Field3", "String", False, ["Categorical", [["A",0.3],["B",0.5],["C",0.2]]], "", ""]
dice_dist = ["Field4", "Real", False, ["Dice", [["1" ,"0.5"],["2","0.5"]]], "", ""]
exponential_dist = ["Field5", "Real", False, ["Exponential", [["scale","1"]]], "", ""]
fixed_dist = ["Field6", "Real", False, ["Fixed", [["value","1" ]]], "", ""]
gamma_dist = ["Field7", "Real", False, ["Gamma", [["scale","1"],["shape"," 1"]]], "", ""]
lognormal_dist = ["Field8", "Real", False, ["Lognormal", [["a","1"],["b","1" ]]], "", ""]
negbinomialfailures_dist = ["Field9", "Real", False, ["NegativeBinomialFailures",[["prob","0.5"],["thresh","1"]]], "", ""]
negbinomialtrial_dist = ["Field10", "Real", False, ["NegativeBinomialTrials",[["prob","0.2"],["thresh","1"]]], "", ""]
normal_dist = ["Field11", "Real", False, ["Normal", [["mean","1"] ,["stddev","2"]]], "", ""]
poisson_dist = ["Field12", "Real", False, ["Poisson", [["mean","1"]]], "", ""]
range_dist = ["Field13", "Real", False, ["Range", [["BEGIN","[1,3]"] ,["END","[2,4]"],["PROB","[[0.5],[0.5]]"]]], "", ""]
triangular_dist = ["Field14", "Real", False, ["Triangular", [["min","0"],["max","1"],["mode","1"]]], "", ""]
uniform_dist = ["Field15", "Real", False, ["Uniform", [["min","1"],["max","2"]]], "", ""]
weibull_dist = ["Field16", "Real", False, ["Weibull", [["a","0"],["b","1 "],["c","1"]]], "", ""]
generate.setPropertyValue("fields", [\
beta_dist, \
binomial_dist, \
categorical_dist, \
dice_dist, \
exponential_dist, \
fixed_dist, \
gamma_dist, \
lognormal_dist, \
negbinomialfailures_dist, \
negbinomialtrial_dist, \
normal_dist, \
poisson_dist, \
range_dist, \
triangular_dist, \
uniform_dist, \
weibull_dist
])
Esempio di proprietà delle correlazioni
La proprietà correlations è una proprietà strutturata con la seguente sintassi:
generate.setPropertyValue("correlations", [
[field1, field2, correlation],
[field1, field3, correlation],
[field2, field3, correlation]
])
La correlazione può essere un numero qualsiasi compreso tra +1 e -1. È possibile specificare tutte le correlazioni che si desidera. Le correlazioni non specificate sono impostate su zero. Se alcuni campi sono sconosciuti, il valore di correlazione deve essere impostato sulla matrice di correlazione (o sulla tabella). Se ci sono campi sconosciuti, non è possibile eseguire il nodo.