这是我的第234篇原创文章。
一、引言
雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法,也称为蜘蛛图或星形图。雷达图通常用于综合分析多个指标,具有完整,清晰和直观的优点。通常由多个等角度放置的轴组成,每个轴代表数据的一个维度,而数据值则以距离轴的位置表示。在机器学习中可以用雷达图直观的比较多个模型不同评价指标的数值大小。
二、实现过程
2.1 代码
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")
font = {'family': 'Times New Roman',
'size': 12,
}
sns.set(font_scale=1.2)
plt.rc('font',family='Times New Roman')
plt.style.use('ggplot')# 使用ggplot的绘图风格
# 构造数据(三个模型四个维度比较)
values1= [0.778, 0.833, 0.818, 0.847]
values2= [0.818, 0.846, 0.833, 0.881]
values3= [0.909, 0.846, 0.875, 0.850]
feature = ["Sensitivity","Specificity","Accuracy","AUC"]
# 设置每个数据点的显示位置,在雷达图上用角度表示
angles=np.linspace(0, 2*np.pi,len(feature), endpoint=False)
angles=np.concatenate((angles,[angles[0]]))
feature = np.concatenate((feature, [feature[0]]))
# 绘图
fig=plt.figure(figsize=(8,8))
# 设置为极坐标格式
ax = fig.add_subplot(111, polar=True)
for values in [values1, values2,values3]:
# 拼接数据首尾,使图形中线条封闭
values=np.concatenate((values,[values[0]]))
# 绘制折线图
ax.plot(angles, values, 'o-', linewidth=2)
for values in [values1, values2,values3]:
values=np.concatenate((values,[values[0]]))
# 填充颜色
ax.fill(angles, values, alpha=0.25)
# 设置图标上的角度划分刻度,为每个数据点处添加标签
ax.set_thetagrids(angles * 180/np.pi, feature,fontsize=14,style='italic')
# 设置雷达图的范围
ax.set_ylim(0.5,1)
# 设置雷达图的0度起始位置
ax.set_theta_zero_location('N')
# 设置雷达图的坐标值显示角度,相对于起始角度的偏移量
ax.set_rlabel_position(270)
plt.legend(["Model1", "Model2",'Model3'], loc='best')
# 添加标题
plt.title('Comparison of classifier evaluation indicators',fontsize = 14)
# 添加网格线
plt.show()
三、结果
结果如下:
作者简介:
读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。