.c2i
é um objeto da CategoryList
da biblioteca FastAI que facilita transformar a categoria em sua representação numérica. Semelhante ao .stoi
e .itos
que vimos anteriormente.
Mas, neste caso, a biblioteca não oferece a transformação inversa (.i2c
).
positive = y.c2i['positive']
negative = y.c2i['negative']
type(y), positive, negative
(fastai.data_block.CategoryList, 1, 0)
As seguintes linhas estão no caderno original, mas os objetos ainda não estão definidos neste ponto do código.
# undefined
# len(p1), len(p0)
# undefined
# v.itos[0]
Sequência de '0’s (negativo) ou '1’s (positivo) para os dados de treino.
y.items
array([0, 1, 0, 1, ..., 0, 1, 0, 0])
Seleciona na matriz trn_term_doc
(contendo a frequência de termos do vocabulário para cada documento), somente as resenhas negativas.
x[y.items==negative]
<417x6008 sparse matrix of type '<class 'numpy.int64'>'
with 60554 stored elements in Compressed Sparse Row format>
Vejamos um pedaço da matriz para ficar mais fácil compreender.
x[y.items==negative].todense()[:5,:5]
matrix([[ 8, 0, 1, 0, 0],
[ 4, 0, 1, 0, 0],
[12, 0, 1, 0, 0],
[ 4, 0, 1, 0, 0],
[ 4, 0, 1, 0, 0]])
O método .sum()
, sem parâmetros, soma todos os elementos da matriz, retornando um escalar.
x[y.items==negative].todense()[:5,:5].sum()
37
Pode-se passar um parâmetro, sendo 0
correspondente a primeira dimensão (soma-se as linhas) ou 1
sendo a segunda dimensão (soma-se as colunas).
x[y.items==negative].todense()[:5,:5].sum(0)
matrix([[32, 0, 5, 0, 0]])
x[y.items==negative].sum(0)
matrix([[7154, 0, 417, 0, ..., 0, 3, 3, 3]], dtype=int64)
np.squeeze(np.asarray())
é uma sequência de operações para transformar de matriz (2 dimensões) em array (1 dimensão).
np.asarray(x[y.items==negative].sum(0))
array([[7154, 0, 417, 0, ..., 0, 3, 3, 3]], dtype=int64)
np.squeeze(np.asarray(x[y.items==negative].sum(0)))
array([7154, 0, 417, 0, ..., 0, 3, 3, 3], dtype=int64)
np.squeeze(np.asarray(x[y.items==positive].sum(0)))
array([6468, 0, 383, 0, ..., 3, 0, 0, 0], dtype=int64)