quantize_fl()
La funzione è una funzione quantize_fl()
definita dall'utente che bina le colonne delle metriche. Quantizza le colonne delle metriche alle etichette categoriche, in base all'algoritmo K-Means.
Prerequisiti
- Il plug-in Python deve essere abilitato nel cluster. Questa operazione è necessaria per Python inline usata nella funzione.
- Il plug-in Python deve essere abilitato nel database. Questa operazione è necessaria per Python inline usata nella funzione.
Sintassi
T | invoke quantize_fl(
,
num_bins,
in_colsout_cols [,
etichette ])
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
num_bins | int |
✔️ | Numero obbligatorio di bin. |
in_cols | dynamic |
✔️ | Matrice contenente i nomi delle colonne da quantizzare. |
out_cols | dynamic |
✔️ | Matrice contenente i nomi delle rispettive colonne di output per i valori binati. |
Etichette | dynamic |
Matrice contenente i nomi delle etichette. Se non specificato, verranno usati gli intervalli di bin. |
Definizione di funzione
È possibile definire la funzione incorporando il codice come funzione definita da query o creandola come funzione archiviata nel database, come segue:
Definire la funzione usando l'istruzione let seguente. Non sono necessarie autorizzazioni.
Importante
Un'istruzione let non può essere eseguita autonomamente. Deve essere seguito da un'istruzione espressione tabulare. Per eseguire un esempio funzionante di quantize_fl()
, vedere Esempio.
let quantize_fl=(tbl:(*), num_bins:int, in_cols:dynamic, out_cols:dynamic, labels:dynamic=dynamic(null))
{
let kwargs = bag_pack('num_bins', num_bins, 'in_cols', in_cols, 'out_cols', out_cols, 'labels', labels);
let code = ```if 1:
from sklearn.preprocessing import KBinsDiscretizer
num_bins = kargs["num_bins"]
in_cols = kargs["in_cols"]
out_cols = kargs["out_cols"]
labels = kargs["labels"]
result = df
binner = KBinsDiscretizer(n_bins=num_bins, encode="ordinal", strategy="kmeans")
df_in = df[in_cols]
bdata = binner.fit_transform(df_in)
if labels is None:
for i in range(len(out_cols)): # loop on each column and convert it to binned labels
ii = np.round(binner.bin_edges_[i], 3)
labels = [str(ii[j-1]) + '-' + str(ii[j]) for j in range(1, num_bins+1)]
result.loc[:,out_cols[i]] = np.take(labels, bdata[:, i].astype(int))
else:
result[out_cols] = np.take(labels, bdata.astype(int))
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
// Write your query to use the function here.
Esempio
Nell'esempio seguente viene usato l'operatore invoke per eseguire la funzione.
Per usare una funzione definita da query, richiamarla dopo la definizione di funzione incorporata.
let quantize_fl=(tbl:(*), num_bins:int, in_cols:dynamic, out_cols:dynamic, labels:dynamic=dynamic(null))
{
let kwargs = bag_pack('num_bins', num_bins, 'in_cols', in_cols, 'out_cols', out_cols, 'labels', labels);
let code = ```if 1:
from sklearn.preprocessing import KBinsDiscretizer
num_bins = kargs["num_bins"]
in_cols = kargs["in_cols"]
out_cols = kargs["out_cols"]
labels = kargs["labels"]
result = df
binner = KBinsDiscretizer(n_bins=num_bins, encode="ordinal", strategy="kmeans")
df_in = df[in_cols]
bdata = binner.fit_transform(df_in)
if labels is None:
for i in range(len(out_cols)): # loop on each column and convert it to binned labels
ii = np.round(binner.bin_edges_[i], 3)
labels = [str(ii[j-1]) + '-' + str(ii[j]) for j in range(1, num_bins+1)]
result.loc[:,out_cols[i]] = np.take(labels, bdata[:, i].astype(int))
else:
result[out_cols] = np.take(labels, bdata.astype(int))
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
//
union
(range x from 1 to 5 step 1),
(range x from 10 to 15 step 1),
(range x from 20 to 25 step 1)
| extend x_label='', x_bin=''
| invoke quantize_fl(3, pack_array('x'), pack_array('x_label'), pack_array('Low', 'Med', 'High'))
| invoke quantize_fl(3, pack_array('x'), pack_array('x_bin'), dynamic(null))
Output
x | x_label | x_bin |
---|---|---|
1 | Basso | 1.0-7.75 |
2 | Basso | 1.0-7.75 |
3 | Basso | 1.0-7.75 |
4 | Basso | 1.0-7.75 |
5 | Basso | 1.0-7.75 |
20 | Alto | 17.5-25.0 |
21 | Alto | 17.5-25.0 |
22 | Alto | 17.5-25.0 |
23 | Alto | 17.5-25.0 |
24 | Alto | 17.5-25.0 |
25 | Alto | 17.5-25.0 |
10 | Med | 7.75-17.5 |
11 | Med | 7.75-17.5 |
12 | Med | 7.75-17.5 |
13 | Med | 7.75-17.5 |
14 | Med | 7.75-17.5 |
15 | Med | 7.75-17.5 |
Questa funzionalità non è supportata.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per