描述数据科学团队中角色分工常用下列维度。进一步以数据可视化直观表达的能力雷达图:
ML Ops - 机器学习运维
Data Pipelines - 数据流水线
Database - 数据库
Data Viz - 数据可视化
Storytelling - 数据讲故事
Business Insights - 业务洞察
Reporting - 报告
Experimentation - 实验
Stats - 统计
ML Modeling - 机器学习建模
Deployment - 部署
编码实现 Radar Chat
# DS岗位的能力雷达图谱
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
rules = ['Data Engineer','ML Engineer','Data Scientists','Data Analysts']
# 添加极坐标网格和标签
# 极轴彼此间隔 360/11 度,角度作为标签提供
# 使用set_thetagrids功能自定义角度和标签的间距。
subjects = ['ML Ops','Data Pipelines','Database','Data Viz','Storytelling','Business Insights','Reporting','Experimentation','Stats','ML Modeling','Deploiomont']
DataEngieer = [80,100,100,20,30,30,44,30,30,30,35]
MLEngineer = [100,60,60,25,30,30,40,80,80,90,100]
# 将角度分成等分,按角度值对应数据值
angles = np.linspace(0,2*np.pi,len(subjects), endpoint=False)
print(angles)
[0. 0.57119866 1.14239733 1.71359599 2.28479466 2.85599332 3.42719199 3.99839065 4.56958931 5.14078798 5.71198664]
补齐完整的圆形
np.concatenate()
函数可以用来拼接数组。
subjects.append(subjects[0])
DataEngieer.append(DataEngieer[0])
MLEngineer.append(MLEngineer[0])
Specifically, np.concatenate((angles, [angles[0]]))
这段代码的作用是:
-
angles数组包含了雷达图每个轴的角度值(比如[0, 60, 120, 180..]) -
[angles[0]]创建一个只有一个元素的数组,元素值是angles数组的第一个值,也就是0度。 -
将angles数组和这个只有一个元素的数组拼接起来,组成一个新的数组。 -
这样新的数组的效果是在angles数组的末尾再添加一次0度。 -
因为雷达图是个闭合图形,所以这个插在末尾的0度就是起到封闭图形的作用,使最后一个点和第一个点相连,实现闭合。
总结一下,这行代码的目的是向angles数组追加一个0度,以此来实现雷达图的封闭,使其成为一个闭合的多边形。这是绘制雷达图常用的一个技巧。
angles=np.concatenate((angles,[angles[0]]))
print(angles)
[0. 0.57119866 1.14239733 1.71359599 2.28479466 2.85599332
3.42719199 3.99839065 4.56958931 5.14078798 5.71198664 0. ]
测试效果图
ax=fig.add_subplot(polar=True)
这行代码的作用是:
-
fig.add_subplot()
函数可以在画布(Figure对象)上添加一个子图axes。 -
polar=True参数指明添加的这个子图axes使用极坐标系。 -
不设置nrows和ncols参数时,默认在1行1列(只有一个子图)。 -
返回的ax对象即这个子图的坐标轴对象,后续可以在ax上作图。 -
一般绘图时使用直角坐标系(Cartesian coordinates),但在绘制雷达图时需要使用极坐标系(polar coordinates)。 -
通过fig.add_subplot(polar=True)可以直接创建一个极坐标的子图axes,而不需要再单独设置。 -
这样后面在ax上作图就可以自动使用极坐标模式了。
总结一下,这行代码实现了创建一个极坐标的子图来绘制雷达图,ax对象用于后续在极坐标子图上进行绘制
fig=plt.figure(figsize=(6,6))
ax=fig.add_subplot(polar=True)#
ax.plot(angles,DataEngieer)
plt.show()
添加标签 label
fig=plt.figure(figsize=(6,6))
ax=fig.add_subplot(polar=True)
#basic plot
ax.plot(angles,DataEngieer, 'o--', color='g', label='Data Engineer')
填充绘图区域
可以使用填充函数填充,提供角度和值作为参数。
可以使用颜色和 Alpha 参数设置颜色和不透明度。 在比较多个实体时,最好使用对比色和较低的 alpha 值。
#fill plot
ax.fill(angles, DataEngieer, alpha=0.25, color='g')
#Add labels
ax.set_thetagrids(angles * 180/np.pi, subjects)
plt.grid(True)
plt.tight_layout()
plt.legend()
plt.show()
ax.set_thetagrids(angles * 180/np.pi, subjects)
这行代码的作用是设置极坐标子图ax上的角度刻度和标签。 具体解释:
-
angles数组包含了每个数据点所在的角度值。 -
但是matplotlib的极坐标角度单位默认是弧度值(radians)。 -
为了让角度以更易读的度数(degrees)显示,需要将弧度转换为度数。 -
angles * 180/np.pi
就是将弧度转换为相应的度数。 -
ax.set_thetagrids()
函数用于设置极坐标图的径向网格,也就是角度刻度。 -
第一个参数就是角度值数组,第二个参数是对应的标签数组。 -
这样就可以在图上以度数显示角度刻度和标签文本了。 -
subjects数组中包含了每个数据点对应的特征标签。
总结:这行代码的作用是设置雷达图的角度刻度显示为度数值,并对应设置了标签文本,以显示每个数据点对应的特征信息。
复用上述代码,只需用MLEngineer
替代DataEngineer
输出MLEngineer职位的能力雷达图谱:
数据科学团队的角色分工通常包括:
-
数据科学家(Data Scientist)
-
使用统计、机器学习等方法对数据进行建模分析,提取价值和洞察 -
对业务问题进行量化,构建和优化算法模型 -
用技术手段解决实际业务问题
-
数据工程师(Data Engineer)
-
构建数据处理流水线,对数据进行提取、清理、整合 -
设计和维护大数据基础架构,如 Hadoop、Spark等 -
将数据整合到分析平台,确保数据质量
-
业务分析师(Business Analyst)
-
理解业务,定义业务问题,提出分析需求 -
解释数据科学家的分析结果,制定业务策略 -
将数据分析成果应用到业务决策中
-
数据库管理员/数据仓库工程师(DBA/DWE)
-
设计数据库和数据仓库,处理大量结构化数据 -
优化数据库查询,管理和维护数据库服务 -
ETL过程的数据转换和加载
-
项目管理者(Project Manager)
-
制定项目计划,跟踪项目进度和资源 -
连接技术团队和业务部门,协调沟通 -
管理数据科学项目的时间表、预算、风险
本文由 mdnice 多平台发布