quantize_fl()quantize_fl()

La funzione quantize_fl() colloca le colonne della metrica.The function quantize_fl() bins metric columns. Quantizza le colonne metriche in etichette categoriche, in base all'algoritmo K-means.It quantizes metric columns to categorical labels, based on the K-Means algorithm.

Nota

SintassiSyntax

T | invoke quantize_fl(num_bins , in_cols , out_cols , etichette)T | invoke quantize_fl(num_bins, in_cols, out_cols, labels)

ArgomentiArguments

  • num_bins: numero obbligatorio di contenitori.num_bins: Required number of bins.
  • in_cols: matrice dinamica contenente i nomi delle colonne da quantizzare.in_cols: Dynamic array containing the names of the columns to quantize.
  • out_cols: matrice dinamica contenente i nomi delle rispettive colonne di output per i valori di contenitori.out_cols: Dynamic array containing the names of the respective output columns for the binned values.
  • labels: matrice dinamica contenente i nomi delle etichette.labels: Dynamic array containing the label names. Questo parametro è facoltativo e,This parameter is optional. Se non viene fornita alcuna etichetta , verranno utilizzati gli intervalli di bin.If Labels isn't supplied, bin ranges will be used.

UtilizzoUsage

quantize_fl() è una funzione tabularedefinita dall'utente da applicare utilizzando l' operatore Invoke.quantize_fl() is a user-defined tabular function, to be applied using the invoke operator. È possibile incorporare il codice nella query o installarlo nel database.You can either embed its code in your query, or install it in your database. Sono disponibili due opzioni di utilizzo, ad hoc e permanenti.There are two usage options: ad hoc and persistent usage. Per esempi, vedere le schede seguenti.See the below tabs for examples.

Per l'utilizzo ad hoc, incorporare il codice utilizzando l' istruzione Let.For ad hoc usage, embed its code using the let statement. Non è richiesta alcuna autorizzazione.No permission is required.

let quantize_fl=(tbl:(*), num_bins:int, in_cols:dynamic, out_cols:dynamic, labels:dynamic=dynamic(null))
{
    let kwargs = pack('num_bins', num_bins, 'in_cols', in_cols, 'out_cols', out_cols, 'labels', labels);
    let code =
        '\n'
        'from sklearn.preprocessing import KBinsDiscretizer\n'
        '\n'
        'num_bins = kargs["num_bins"]\n'
        'in_cols = kargs["in_cols"]\n'
        'out_cols = kargs["out_cols"]\n'
        'labels = kargs["labels"]\n'
        '\n'
        'result = df\n'
        'binner = KBinsDiscretizer(n_bins=num_bins, encode="ordinal", strategy="kmeans")\n'
        'df_in = df[in_cols]\n'
        'bdata = binner.fit_transform(df_in)\n'
        'if labels is None:\n'
        '    for i in range(len(out_cols)):    # loop on each column and convert it to binned labels\n'
        '        ii = np.round(binner.bin_edges_[i], 3)\n'
        '        labels = [str(ii[j-1]) + \'-\' + str(ii[j]) for j in range(1, num_bins+1)]\n'
        '        result.loc[:,out_cols[i]] = np.take(labels, bdata[:, i].astype(int))\n'
        'else:\n'
        '    result[out_cols] = np.take(labels, bdata.astype(int))\n'
        ;
    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))
x    x_label    x_bin
1    Low        1.0-7.75
2    Low        1.0-7.75
3    Low        1.0-7.75
4    Low        1.0-7.75
5    Low        1.0-7.75
20   High       17.5-25.0
21   High       17.5-25.0
22   High       17.5-25.0
23   High       17.5-25.0
24   High       17.5-25.0
25   High       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