← Questões de Programação

Programação · FGV · 2022

Questão comentada de Programação

Natasha, uma cientista de dados, está trabalhando com um conjunto de dados sobre carros para fazer um modelo preditivo para uma companhia de seguros. A primeira versão do modelo utiliza apenas informações básicas sobre os carros: a marca e a cor. Como esses dados são categóricos, Natasha faz um pré-processamento usando a biblioteca scikit-learn. Em um ambiente interativo, ela executa os comandos a seguir. >>> from sklearn.preprocessing import OneHotEncoder >>> enc = OneHotEncoder() >>> X = [['Toyota', 'vermelho'], ['Toyota', 'verde'], ['BMW', 'vermelho']] >>> enc.fit(X) >>> enc.get_feature_names() array(['x0_BMW', 'x0_Toyota', 'x1_verde', 'x1_vermelho'], dtype=object) >>> X_prime = enc.transform(X).toarray() >>> X_prime array([[0., 1., 0., 1.], [0., 1., 1., 0.], [1., 0., 0., 1.]]) Para contar o número de carros da marca Toyota no conjunto de dados, obtendo corretamente o resultado 2, Natasha pode usar a seguinte linha de código:

Gabarito: D

A ideia central aqui é simples: depois do OneHotEncoder, cada categoria vira uma coluna binária, com 1 para indicar presença e 0 para ausência. No caso da marca, a coluna x0_Toyota marca as linhas em que o carro é Toyota. Como o conjunto X_prime foi gerado exatamente com essa codificação, basta somar a coluna correspondente para contar quantos Toyotas existem no dataset. Olhe o resultado: X_prime = [[0., 1., 0., 1.], [0., 1., 1., 0.], [1., 0., 0., 1.]]. A coluna de índice 1 é a da marca Toyota, então os valores nela são 1, 1 e 0. A soma dá 2, que é exatamente o número pedido. Em programação, isso é aquele tipo de conta que parece mais complicada do que realmente é: conte os 1s e pronto. Por isso, a alternativa D está correta: sum(X_prime)[1]. Primeiro, sum(X_prime) soma as linhas do array e produz um vetor com os totais de cada coluna; depois, [1] pega a segunda coluna, que é justamente a de Toyota. O resultado final é 2. As outras opções erram por tratar a estrutura como se fosse uma lista simples de strings ou por escolher a coluna errada. Em questões de FGV com arrays e codificação categórica, o truque costuma ser sempre o mesmo: entender qual coluna representa qual categoria e então aplicar a operação certa sobre essa coluna.

Continue treinando

Questões relacionadas