다음을 통해 공유


kmeans_fl()

적용 대상: ✅Microsoft Fabric✅Azure Data Explorer

이 함수 kmeans_fl() 는 k-평균 알고리즘사용하여 데이터 세트를 클러스터화하는 UDF(사용자 정의 함수)입니다.

필수 조건

구문

T | invoke kmeans_fl(k, 기능, cluster_col)

구문 규칙에 대해 자세히 알아봅니다.

매개 변수

이름 Type 필수 설명
k int ✔️ 클러스터 수입니다.
features dynamic ✔️ 클러스터링에 사용할 기능 열의 이름을 포함하는 배열입니다.
cluster_col string ✔️ 각 레코드에 대한 출력 클러스터 ID를 저장할 열의 이름입니다.

함수 정의

다음과 같이 해당 코드를 쿼리 정의 함수로 포함하거나 데이터베이스에 저장된 함수로 만들어 함수를 정의할 수 있습니다.

다음 let 문을 사용하여 함수를 정의합니다. 사용 권한이 필요 없습니다.

Important

let 문자체적으로 실행할 수 없습니다. 그 뒤에 테이블 형식 식 문이 있어야 합니다. 작업 예제 kmeans_fl()를 실행하려면 예제를 참조 하세요.

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.

예시

다음 예제에서는 호출 연산자를 사용하여 함수를 실행합니다.

세 개의 클러스터를 사용하여 인공 데이터 세트 클러스터화

쿼리 정의 함수를 사용하려면 포함된 함수 정의 후에 호출합니다.

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)
union
(range x from 1 to 100 step 1 | extend x=rand()+3, y=rand()+2),
(range x from 101 to 200 step 1 | extend x=rand()+1, y=rand()+4),
(range x from 201 to 300 step 1 | extend x=rand()+2, y=rand()+6)
| invoke kmeans_fl(3, bag_pack("x", "y"), "cluster_id")
| render scatterchart with(series=cluster_id)

세 개의 클러스터가 있는 인공 데이터 세트의 K-평균 클러스터링 분산형 스크린샷