Python 中的矢量标签

Vector labels in Python

我正在学习一本机器学习书籍,在一段代码中出现了:

X_train_01_subset= X_train [(y_train ==0) | (y_train ==1)]
y_train_01_subset= y_train [(y_train ==0) | (y_train ==1)]

X_train 是一个带有训练样本的 104x2 向量,y_train 是一个 104x1 向量,包含样本标签:0,1 和 2。

什么

[(y_train ==0) | (y_train ==1)]

中的X_trainy_train呢? (算法有点泛,如果需要把所有代码都贴出来告诉我)

逐步分解。首先,这个

(y_train == 0)
(y_train == 1)

是生成布尔掩码的操作。

然后,这个:

(y_train ==0) | (y_train ==1)

是一个按位或运算。也就是说,它输出 1 如果其中一个或两个值是 1 否则 0.

这是一个例子:

# inputs
In [22]: a = np.array([1, 1, 0, 0]) 
In [23]: b = np.array([1, 0, 1, 0]) 

# bitwise or
In [24]: a | b 
Out[24]: array([1, 1, 1, 0])

最后我们使用上面的结果作为索引从X_train:

中检索样本
X_train [(y_train ==0) | (y_train ==1)]