PowerBI技巧之Power BI强强联合Python 机器学习能力做What if分析_百

PowerBI技巧之Power BI强强联合Python 机器学习能力做What if分析_百


2024年4月24日发(作者:)

Power BI

强强联合

Python

机器学习能力做

What if

分析

传统

BI

报表分析通常建立在既成事实的业务数据上,我们如何结合

Python

的机器学习预测能力在

Power BI

中做

what if

分析,本篇以预测公司员工离职率为例说明

Power BI

如何结合

Python

机器学习做

what if

分析。分析训练数

据来源于

kaggle Attrition

数据源,该数据源包含两个

csv

文件,

用来训练预测员工离职率的机器学习模

型,

则是我们本次预测分析的对象。

员工离职率

what if

分析

1.

Power BI

中导入

数据源。该数据源大致长什么样大家可看下图,

包含的员工信息相

同,即依靠员工的年龄,性别,教育程度,家离公司的距离,是否经常出差,是否经常加班,职位,月薪,婚否

等等信息来预测员工离职的概率。

2.

Power BI

中创建用于

what if

分析的参数,简便起见这里只创建两个

what if

分析参数,即员工是否经常加班参数

和员工薪资调节参数,

把参数作为切片器放到报表界面上,方便报表用户调节参数值做

what if

分析。

3.

对应新建的两个参数分别新建两个度量值,根据用户在界面上修改

overtime

参数和

salary

调节比例参数这两个度

量值分别返回员工是否经常加班以及根据参数调整后的员工月薪。

这里有个小坑就是

overtime

由于不是数值,一开始这里本打算新建列而不是新建度量值,结果

overtime

参数在新建

列中不起作用,即调节参数不会影响到

overtime

列的返回值,所以后面只能新建为度量。

4.

Power BI

报表界面上添加

Py

视觉对象。

由于各自程序上下文环境不同,大致调用的

Python

代码看下面,还请各位根据自己环境做相应调整。

#

在此处粘贴或键入脚本代码

:

import numpy as np

import pandas as pd

from cessing import LabelEncoder

import as plt

import pickle

import seaborn as sns

#

数据加载

#dataset

即为

Power BI

传递给

Python

代码的数据对象,数据会根据

what if

分析参数变化而变化

test_data = dataset

#

特征选择

features=['Age','BusinessTravel','DailyRate','Department','DistanceFromHome','Education','EducationField','Emplo

yeeNumber','EnvironmentSatisfaction','Gender','HourlyRate','JobInvolvement','JobLevel','JobRole','JobSatisfactio

n','MaritalStatus','MonthlyIncome','MonthlyRate','NumCompaniesWorked','OverTime','PercentSalaryHike','Performanc

eRating','RelationshipSatisfaction','StockOptionLevel','TotalWorkingYears','TrainingTimesLastYear','WorkLifeBala

nce','YearsAtCompany','YearsInCurrentRole','YearsSinceLastPromotion','YearsWithCurrManager']

test_features=test_data[features]

#

对离散型特征做

LabelEncoder

attr=['Age','BusinessTravel','Department','Education','EducationField','Gender','JobRole','MaritalStatus','OverT

ime']

lbe_list=[]

for feature in attr:

lbe=LabelEncoder()

test_features[feature]=_transform(test_features[feature])

lbe_(lbe)

result=test_data

#

Pickle

导入事先训练好的预测模型

xgb_bst1 = (open("c:/model/", "rb"))

#

开始预测

predict = xgb_t_proba(test_features)

#

预测离职概率

>=0.5

则认定该员工要离职

result['Attrition'] = (predict[:,1]).map(lambda x:'YES' if x>=0.5 else 'NO')

#

分两块区域显示两个

barchart

fig, axs = ts(1, 2, figsize=(25,5),squeeze=False)

#

显示

Total Attrition barchart

g=t(x=result['Attrition'].value_counts().index,y=result['Attrition'].value_counts(),ax = axs[0][1])

axs[0][1].set_title('Total Attrition',size=20)

#

在柱子上显示要离职的人数和不离职的人数

j=0

for i, v in result['Attrition'].value_counts().iteritems():

(j,20,v,color="black",ha="center",size=20)

j=j+1

#

department

显示各个部门的员工离职率

temp=y(['Department'])['Attrition'].value_counts().unstack().reset_index()

temp['Attrition Rate']=temp['YES']/(temp['YES']+temp['NO'])

h=t(x='Attrition Rate', y='Department',data=temp,ax = axs[0][0])

axs[0][0].set_title('Attrition rate by Department',size=20)

#

在柱子上显示离职率

j=0

for i, v in temp['Attrition Rate'].iteritems():

(0.05,j,round(v,2),color="black",ha="center",size=20)

j=j+1

_params(labelsize=20)

()

5.

我们来看看成果吧

公司目前一共有

294

名员工,有

44

名员工表示出了有离职的倾向,即如代码注释中所说我们设定预测出的离职概率

>=0.5

认为该员工有离职倾向。销售部门预测出的离职率是最高的,为

16%

然后我们把

overtime

参数调整为

0

,即如果减少加班,看看预测出的离职率是否会下降。可以看到有离职倾向的人数下降到

25

人,销售部门的离职率也下降至

11%

如果再涨薪

50%

,预测出的离职人数进一步下降至

18

人。

如果没有机器学习,我们的报表往往只专注于用公式计算出的各类

KPI,

有了机器学习帮我们的报表有了更深层次的洞见。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1713896218a2340074.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信