본문 바로가기
Azure로운 Power Platform/Power Platform

[Power BI] 머신러닝 I - Clustering (Pro 라이선스/Python 스크립트)

by Azure Racoon 2022. 8. 8.

오늘도 Azure로운 Power Platform :D

 

Power BI는 Premium 라이선스부터 머신러닝을 사용할 수 있다고 알려져 있죠. 이는 코딩을 모르시는 분들께는 맞는 설명이나, 약간의 코딩이라도 하실 줄 안다면 얘기가 달라집니다. 스크립트를 사용할 수 있기 때문이죠.

(머신러닝 코드 자체는 크게 복잡하지 않아 간단한 처리는 많은 분들이 검색만 몇 개 해보시면 하실 수 있을 겁니다.)

 

이미지 출처: https://medium.com/

 

그 간단한 방법중 하나인 클러스터링(clustering)을 하는 방법을 소개해드리고자 합니다.

 

Power BI의 Python과 R 스크립트 기능은 다음 두가지 작업 시 사용 가능합니다.

[데이터 로드]
데이터를 Power BI로 로드해서 가져올 때 스크립트로 가져올 수 있습니다.

[데이터 가공]
데이터를 가공할 때 스크립트를 사용해서 가공할 수 있습니다.

 

이번 포스팅에서는 Python 스크립트를 사용하겠습니다. Power BI Desktop은 아래와 같은 라이브러리들을 지원합니다.

 

  • Matplotlib
  • NumPy
  • Pandas
  • Scikit-learn
  • Scipy
  • Seaborn
  • Statsmodels
  • XGBoost

 


1. Python 스크립트 설정

 

Python 스크립트를 사용하기 위해서는 Power BI Desktop을 사용중인 환경에 Python이 설치되어 있어야 합니다.

(Python 설치 : Python Website)

 

Python을 설치한 뒤 Power BI Desktop의 File > Options and settings > Python script 로 들어가 각 값들이 잘 잡혀있는지 확인합니다.

 

 

일반적으로 Power BI Desktop이 자동으로 인지하여 설정값들을 잡아놓지만, 다른 home 디렉토리를 사용하고 싶을 경우 변경하면 됩니다.

 

이제 Python 스크립트를 사용 할 수 있습니다.

 


2. Python 스크립트로 데이터 로드

 

먼저 샘플데이터를 Python script로 로드하여 가져옵니다.

 

Python script를 선택하면 아래와 같은 창이 뜹니다. 

 

Scikit-learn(sklearn) 라이브러리는 머신러닝 모델뿐 아니라 샘플데이터 또한 제공합니다. 해당 라이브러리로부터 샘플 데이터셋을 하나 불러옵니다. 아이리스 꽃에 대한 데이터 입니다.

 


3. Python 스크립트로 K-means 모델 머신러닝

 

해당 예시는 이 꽃에 대한 데이터를 4개의 군집으로 분류하는 내용입니다. 위의 단계를 통해 로드된 데이터를 가공합니다. Transform data 버튼을 눌러 Power query 편집기로 이동합니다.

 

 

로드된 테이블을 펼칩니다.

 

 

위의 메뉴들 중 Python script를 선택합니다.

 

이후 Python 코드를 입력할 수 있는 창이 하나 뜹니다. 해당 창에 코드를 입력합니다.

 

OK를 눌러 스크립트에 작성한 코드대로 데이터를 가공합니다.

 

위 코드에서 사용된 kmeans는 K-means 클러스터링을 하기 위한 모델입니다.

K-means 클러스터링은 unsupervised 머신러닝으로 비슷한 데이터들끼리 그룹핑해주는 모델입니다. 이 그룹핑 단위를 클러스터라고 부릅니다. 군집이라고도 하죠. 이 모델은 일반적으로 마케팅에서 고객데이터를 분석하여 고객에 대한 더 많은 인사이트를 얻기 위해 사용됩니다. 

 

Power BI에도 클러스터 분석을 할 수 있는 기능을 제공하지만, 클러스터 수를 사용자가 변경할 수 없다는 제한 사항이 있습니다. 때문에 그 이상의 작업까지 할 수 있는 Python 스크립트는 굉장한 메리트죠.

 

스크립트가 동작한 후 나온 테이블을 펼칩니다.

 

 

Cluster 필드가 머신러닝을 돌려 군집화한 결과 데이터입니다.

로드된 데이터를 확인해보면 Cluster 필드에 값이 0 ~ 3 인것을 볼 수 있습니다. 4개의 군집으로 분류하라고 스크립트를 작성해서 그렇습니다.

 

 


4. 그래프로 데이터 산출

 

로드 된 데이터로 분산 차트를 그려보면 아래와 같이 나오는 것을 확인 할 수 있습니다. Cluster를 legend로 설정하면 군집화가 잘 되었다는 것 또한 확인 할 수 있죠.

 

아래는 예시로 꽃잎의 넓이와 길이를 각각 X, Y 축으로 하여 그린 그래프 입니다. 다른 그래프들도 그려서 군집화가 어떻게 이루어졌는지 확인해보시는걸 추천드립니다.

 


 

스크립트는 Pro 라이선스로도 사용할 수 있는 기능입니다. 

고객 데이터나 갖고 계시는 데이터가 있으면 한번 시도해보시는 걸 추천드립니다. Scikit-learn, Scipy, XGBoost 등과 같은 라이브러리를 처음 보시는 분들도 조금만 찾아보시면 쉽게 사용하실 수 있습니다.

 

Scikit-learn 문서 : https://scikit-learn.org/0.21/documentation.html

SciPy 문서 : https://docs.scipy.org/doc/scipy/

XGBoost 문서 : https://xgboost.readthedocs.io/en/stable/

 

댓글