kmeans_fl()
La funzione è una funzione kmeans_fl()
definita dall'utente che clusterizza un set di dati usando l'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 kmeans_fl(
K,
,
features_colscluster_col)
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
K | int |
✔️ | Numero di cluster. |
features_cols | dynamic |
✔️ | Matrice contenente i nomi delle colonne delle funzionalità da usare per il clustering. |
cluster_col | string |
✔️ | Nome della colonna per archiviare l'ID del cluster di output per ogni record. |
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 kmeans_fl()
, vedere Esempi.
let kmeans_fl=(tbl:(*), k:int, features:dynamic, cluster_col:string)
{
let kwargs = bag_pack('k', k, 'features', features, 'cluster_col', cluster_col);
let code = ```if 1:
from sklearn.cluster import KMeans
k = kargs["k"]
features = kargs["features"]
cluster_col = kargs["cluster_col"]
km = KMeans(n_clusters=k)
df1 = df[features]
km.fit(df1)
result = df
result[cluster_col] = km.labels_
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
// Write your query to use the function here.
Esempio
Gli esempi seguenti usano l'operatore invoke per eseguire la funzione.
Clusterizzare l'occupazione della stanza dalle misurazioni dei sensori
Per usare una funzione definita da query, richiamarla dopo la definizione di funzione incorporata.
let kmeans_fl=(tbl:(*), k:int, features:dynamic, cluster_col:string)
{
let kwargs = bag_pack('k', k, 'features', features, 'cluster_col', cluster_col);
let code = ```if 1:
from sklearn.cluster import KMeans
k = kargs["k"]
features = kargs["features"]
cluster_col = kargs["cluster_col"]
km = KMeans(n_clusters=k)
df1 = df[features]
km.fit(df1)
result = df
result[cluster_col] = km.labels_
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
//
// Clusterize room occupancy from sensors measurements.
//
// Occupancy Detection is an open dataset from UCI Repository at https://archive.ics.uci.edu/ml/datasets/Occupancy+Detection+
// It contains experimental data for binary classification of room occupancy from Temperature, Humidity, Light, and CO2.
//
OccupancyDetection
| extend cluster_id=int(null)
| invoke kmeans_fl(5, pack_array("Temperature", "Humidity", "Light", "CO2", "HumidityRatio"), "cluster_id")
| sample 10
Output
Timestamp | Temperatura | Umidità | Chiaro | CO2 | UmiditàRatio | Occupazione | Test | cluster_id |
---|---|---|---|---|---|---|---|---|
2015-02-02 14:38:00.0000000 | 23.64 | 27.1 | 473 | 908.8 | 0.00489763 | TRUE | true | 1 |
2015-02-03 01:47:00.0000000 | 20.575 | 22.125 | 0 | 446 | 0.00330878 | FALSE | true | 0 |
2015-02-10 08:47:00.0000000 | 20.42666667 | 33.56 | 405 | 494.3333333 | 0.004986493 | true | FALSE | 4 |
2015-02-10 09:15:00.0000000 | 20.85666667 | 35.09666667 | 433 | 665.3333333 | 0.005358055 | true | FALSE | 4 |
2015-02-11 16:13:00.0000000 | 21.89 | 30.0225 | 429 | 771.75 | 0.004879358 | TRUE | true | 4 |
2015-02-13 14:06:00.0000000 | 23.4175 | 26.5225 | 608 | 599.75 | 0.004728116 | TRUE | true | 4 |
2015-02-13 23:09:00.0000000 | 20.13333333 | 32.2 | 0 | 502.6666667 | 0.004696278 | FALSE | true | 0 |
2015-02-15 18:30:00.0000000 | 20.5 | 32.79 | 0 | 666.5 | 0.004893459 | FALSE | true | 3 |
2015-02-17 13:43:00.0000000 | 21.7 | 33.9 | 454 | 1167 | 0.005450924 | TRUE | true | 1 |
2015-02-17 18:17:00.0000000 | 22.025 | 34.2225 | 0 | 1538.25 | 0.005614538 | FALSE | true | 2 |
Estrarre i centroidi e le dimensioni di ogni cluster
Per usare una funzione definita da query, richiamarla dopo la definizione della funzione incorporata.
let kmeans_fl=(tbl:(*), k:int, features:dynamic, cluster_col:string)
{
let kwargs = bag_pack('k', k, 'features', features, 'cluster_col', cluster_col);
let code = ```if 1:
from sklearn.cluster import KMeans
k = kargs["k"]
features = kargs["features"]
cluster_col = kargs["cluster_col"]
km = KMeans(n_clusters=k)
df1 = df[features]
km.fit(df1)
result = df
result[cluster_col] = km.labels_
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
OccupancyDetection
| extend cluster_id=int(null)
| invoke kmeans_fl(5, pack_array("Temperature", "Humidity", "Light", "CO2", "HumidityRatio"), "cluster_id")
| summarize Temperature=avg(Temperature), Humidity=avg(Humidity), Light=avg(Light), CO2=avg(CO2), HumidityRatio=avg(HumidityRatio), num=count() by cluster_id
| order by num
Output
cluster_id | Temperatura | Umidità | Chiaro | CO2 | HumidityRatio | num |
---|---|---|---|---|---|---|
0 | 20.3507186863278 | 27.1521395395781 | 10.1995789883291 | 486.804272186974 | 0.00400132147662714 | 11124 |
4 | 20.9247315268427 | 28.7971160082823 | 20.7311894656536 | 748.965771574469 | 0.00440412568299058 | 3063 |
1 | 22.0284137970445 | 27.8953334469889 | 481.872136037748 | 1020.70779349773 | 0.00456692559904535 | 2514 |
3 | 22.0344177115763 | 25.1151053429273 | 462.358969056434 | 656.310608696507 | 0.00411782436443015 | 2176 |
2 | 21.4091216082295 | 31.8363099552939 | 174.614816229606 | 1482.05062388414 | 0.00504573022875817 | 1683 |
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