matplotlib如何对逻辑回归训练样本分类绘图?对应代码运行原理是什么?
1. pos = y == 1与neg = y == 0的运行逻辑
这两行是numpy的逐元素比较运算,会生成和y形状完全一致的布尔型掩码数组:
y == 1会逐个判断y中每个标签值是否等于1,对应位置为True代表该样本是录取样本,False代表不是,最终生成的布尔数组赋值给pos- 同理
y == 0生成的neg数组,对应位置为True代表该样本是未录取样本
举个例子,你给出的y前3个值为0., 0., 0.,那么pos前3个值就是[False, False, False],neg前3个值就是[True, True, True]。
2. 数组索引的取值逻辑
X是形状为(样本总数, 2)的二维numpy数组,第一个维度对应样本序号,第二个维度对应特征:0是第一次考试成绩,1是第二次考试成绩。
用布尔掩码索引第一个维度时,numpy会自动筛选出掩码为True对应位置的所有行:
X[pos, 0]:筛选所有录取样本的第一次考试成绩,作为散点图的横轴取值X[pos, 1]:筛选所有录取样本的第二次考试成绩,作为散点图的纵轴取值- 同理
X[neg, 0]、X[neg, 1]分别对应所有未录取样本的第一次、第二次考试成绩,作为另一组散点的横纵轴取值
3. 绘图逻辑
- 第一行绘图代码用星号标记所有录取样本,每个星号的坐标就是对应学生的两次考试成绩
(第一次成绩, 第二次成绩) - 第二行绘图代码用黄底黑边的圆圈标记所有未录取样本,坐标对应未录取学生的两次考试成绩
最终就会得到两类样本用不同符号区分的散点图。
内容的提问来源于stack exchange,提问作者Circuit_Breaker0.7
相关产品推荐
相关产品推荐

