Python的X[y==1, 0],python,最近研究逻辑回归,I


最近研究逻辑回归,Iris花的经典示例,代码就不全粘贴了,具体代码参看“Iris花逻辑回归与实现”

1 plt.plot(X[y==0, 0], X[y==0,1], "bs")2 plt.plot(X[y==1, 0], X[y==1, 1], "g^")

X[y==0, 0]中的y==0是个什么东东,为什么可以占据X的第一个位置?

首先我们看一下X是个什么?

1 from sklearn import datasets2 iris = datasets.load_iris()3 4 X = iris["data"][:, (2, 3)] # petal length, petal width5 y = (iris["target"] == 2).astype(np.int)6 print(X)

Output:

[[1.4 0.2] [1.4 0.2]...
[5.1 1.8]]
  X是一个数组,数组的元素是一个二元组。在解释X[y==0, 0]之前,首先要明白X[:,:]左面:代表的是行范围,右边“:”代表的是列范围,如果是冒号则代表全部,否则就像代码中第四行那样,指定一个范围;那么无论是“:”,还是指定一个范围(类似于(2,3)),其实本质都是会被翻译成一个true/false的一维一元数组,每个元素都是代表数组对应位置的元素是否要出现。  比如,y==0,print之后其实是[True True False ...],那么X[y==0, 0],就X的前三个元素而言,分别代表返回(包含),返回(包含),不返回(不包含);与之类似对于“iris["data"][:, (2, 3)]”这个写法,左边的那个":"代表的行是[True,True, ... ,True],全是true;  那么X[y==0, 0]中,第二个0代表什么意思呢?y==1解决了行中那些返回(那些为true的返回),右边的那个数字代表就是返回那一列,0,代表返回的是第一列,就是上面那个1,4,1.4...5.1;与之类似对于“iris["data"][:, (2, 3)]”这个写法,代表列是要返回第三列和第四列。  这里看到在python里面行列的处理模式是不一样的,行的取舍是通过一个True/ False数组来实现的,列的取舍确实通过指定了那一列;这个其实从矩阵的角度能够更好的理解。

Python的X[y==1, 0]

评论关闭