quantize_fl()
Funkcja quantize_fl()
jest funkcją zdefiniowaną przez użytkownika (UDF), która binuje kolumny metryk. Kwantyzuje kolumny metryk w celu kategorycznych etykiet na podstawie algorytmu K-Średnich.
Wymagania wstępne
- Wtyczka języka Python musi być włączona w klastrze. Jest to wymagane w przypadku wbudowanego języka Python używanego w funkcji .
- Wtyczka języka Python musi być włączona w bazie danych. Jest to wymagane w przypadku wbudowanego języka Python używanego w funkcji .
Składnia
T | invoke quantize_fl(
,
num_bins,
in_colsout_cols [,
etykiety ])
Dowiedz się więcej o konwencjach składniowych.
Parametry
Nazwa | Typ | Wymagane | Opis |
---|---|---|---|
num_bins | int |
✔️ | Wymagana liczba pojemników. |
in_cols | dynamic |
✔️ | Tablica zawierająca nazwy kolumn do kwantyzacji. |
out_cols | dynamic |
✔️ | Tablica zawierająca nazwy odpowiednich kolumn wyjściowych dla wartości binned. |
Etykiety | dynamic |
Tablica zawierająca nazwy etykiet. Jeśli nie zostanie określona, zostaną użyte zakresy pojemników. |
Definicja funkcji
Funkcję można zdefiniować, osadzając jej kod jako funkcję zdefiniowaną przez zapytanie lub tworząc ją jako funkcję przechowywaną w bazie danych w następujący sposób:
Zdefiniuj funkcję przy użyciu następującej instrukcji let. Nie są wymagane żadne uprawnienia.
Ważne
Instrukcja let nie może być uruchamiana samodzielnie. Po nim musi znajdować się instrukcja wyrażenia tabelarycznego. Aby uruchomić działający przykład quantize_fl()
polecenia , zobacz Przykład.
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.
Przykład
W poniższym przykładzie użyto operatora invoke do uruchomienia funkcji.
Aby użyć funkcji zdefiniowanej przez zapytanie, wywołaj ją po definicji funkcji osadzonej.
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))
Dane wyjściowe
x | x_label | x_bin |
---|---|---|
1 | Niski | 1.0-7.75 |
2 | Niski | 1.0-7.75 |
3 | Niski | 1.0-7.75 |
4 | Niski | 1.0-7.75 |
5 | Niski | 1.0-7.75 |
20 | Wys. | 17.5-25.0 |
21 | Wys. | 17.5-25.0 |
22 | Wys. | 17.5-25.0 |
23 | Wys. | 17.5-25.0 |
24 | Wys. | 17.5-25.0 |
25 | Wys. | 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 |
Ta funkcja nie jest obsługiwana.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla