오늘도 Azure로운 Power Platform :D
Power BI는 Premium 라이선스부터 머신러닝을 사용할 수 있다고 알려져 있죠. 이는 코딩을 모르시는 분들께는 맞는 설명이나, 약간의 코딩이라도 하실 줄 안다면 얘기가 달라집니다. 스크립트를 사용할 수 있기 때문이죠.
(머신러닝 코드 자체는 크게 복잡하지 않아 간단한 처리는 많은 분들이 검색만 몇 개 해보시면 하실 수 있을 겁니다.)
그 간단한 방법중 하나인 클러스터링(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/
'Azure로운 Power Platform > Power Platform' 카테고리의 다른 글
[Power BI] 동적 데이터 라벨 (Dynamic Data Label/Tabular Editor) (0) | 2022.08.18 |
---|---|
[Power BI] 머신러닝 II - Logistic Regression (Pro 라이선스/Python 스크립트) (1) | 2022.08.10 |
[Power BI] 필드명으로 슬라이서 만들기 (Field Parameter/Field Slicer) (0) | 2022.08.01 |
[Power BI] PBI와 PBIE 비교 (Power BI vs. Power BI Embedded) (1) | 2022.07.30 |
[Power BI] 라이선스 (라이선스 종류/공유 범위/기능 제한) (0) | 2022.07.27 |
댓글