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

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

by Azure Racoon 2022. 8. 10.

오늘도 Azure로운 Power Platform :D

 

지난 clustering에 이은 logistic regression 머신러닝 포스팅입니다.

(Power BI에서 Python script를 사용하는 방법은 아래 포스팅을 참고해주시기 바랍니다.)

https://azureplatform.tistory.com/20

 

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

오늘도 Azure로운 Power Platform :D Power BI는 Premium 라이선스부터 머신러닝을 사용할 수 있다고 알려져 있죠. 이는 코딩을 모르시는 분들께는 맞는 설명이나, 약간의 코딩이라도 하실 줄 안다면 얘기

azureplatform.tistory.com

 

Supervised learning 모델 중 하나인 Logistic Regression은 보통 특정 사건이 발생할 확률을 예측합니다. 수식은 다음과 같습니다.

 

이번 포스팅에서 사용할 데이터셋은 통신사 회사의 샘플데이터로, 이탈고객을 예측하려고 합니다.

 

변수 명 내용 구분
COLLEGE 대학졸업 여부(1,0)  
INCOME 연 수입액(달러)  
OVERAGE 월 초과사용 시간(분)  
LEFTOVER 월 사용 잔여시간비율(%)  
HOUSE 집 가격(달러)  
HANDSET_PRICE 핸드폰 가격(달러)  
OVER_15MINS_CALLS_PER_MONTH 평균 장기통화(15분 이상) 횟수  
AVERAGE_CALL_DURATION 평균 통화시간(분)  
REPORTED_SATISFACTION 만족도 설문('very_unsat', 'unsat', 'avg', 'sat', 'very_sat' )  
REPORTED_USAGE_LEVEL 사용 수준 설문('very_little', 'little', 'avg', 'high', 'very_high')  
CONSIDERING_CHANGE_OF_PLAN 변경 계획 설문('never_thought', 'no', 'perhaps', 'considering',   'actively_looking_into_it')  
CHURN 이탈여부(1 : 이탈, 0 : 잔류) Target

 


 

1. 데이터 로드 및 머신러닝 분석

 

데이터를 로드한 후 python script로 가공합니다. Power query 편집기 창에서 Transform탭의 python script를 엽니다.

 

 

 

전체 코드는 아래와 같습니다.

 

# 'dataset' holds the input data for this script

#Load in the dependencies
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import MinMaxScaler

mobile = dataset
target = 'CHURN'
x = mobile.drop(target, axis=1)
y = mobile.loc[:,target]

mean_HOUSE = x['HOUSE'].mean()
x['HOUSE'].fillna(mean_HOUSE, inplace=True)
x['REPORTED_SATISFACTION'].fillna('avg', inplace =True)

cat_col = ['REPORTED_SATISFACTION','REPORTED_USAGE_LEVEL','CONSIDERING_CHANGE_OF_PLAN']
x = pd.get_dummies(x,columns=cat_col, drop_first=True)

x_train_val, x_test, y_train_val, y_test = train_test_split(x,y,test_size=2000)
x_train, x_val, y_train, y_val = train_test_split(x_train_val,y_train_val,test_size=2000)

scaler = MinMaxScaler()
x_train_s = scaler.fit_transform(x_train)
x_val_s = scaler.transform(x_val)
x_test_s = scaler.transform(x_test)
x_s = scaler.transform(x)

model_lr = LogisticRegression()
model_lr.fit(x_train_s,y_train)
pred_lr = model_lr.predict(x_s)

# Lets add the columns back to the dataframe
dataset['predictions'] = pred_lr

 


 

2. 시각화 비교

 

다음은 머신러닝을 돌려 나온 예측값과 실제값을 비교한 그래프입니다

.

 

 

 

 


 

Logistic Regression을 간단하게 분석해보았습니다. 다른 모델을 사용하거나, 앙상블이나 튜닝 등의 방법을 통해 오차를 줄여봐도 좋을 듯 합니다. 

 

Power BI를 어떻게 응용하면 좋을지 아이디어를 떠올리시는데 조금이라도 도움이 되었길 바랍니다. :)

댓글