Векторные этикетки в Python - PullRequest
1 голос
/ 17 июня 2020

Я изучаю книгу по машинному обучению, и в части кода появляется следующее:

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_train и y_train? (Алгоритм немного обширен, если нужно поставить весь код, дайте мне знать)

1 Ответ

1 голос
/ 17 июня 2020

Пошаговое разбиение. Во-первых, это

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

- это операция для генерации логической маски.

Тогда это:

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

- это операция побитовое ИЛИ . То есть он выводит 1, если одно или оба значения равны 1 else 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)]
...