# Questão: Detecção de Fraudes em Transações Financeiras Uma empresa de tecnologia financeira deseja desenvolver um modelo de classificação para detectar possíveis fraudes em transações bancárias. Para isso, foi coletado um conjunto de dados contendo as seguintes colunas: | ID | Valor_Transacao | Tempo_Dia | Localizacao | Tipo_Cartao | Fraude | |---- |--------------- |---------- |------------ |------------ |--------| | 1 | 2500.50 | 14 | SP | Crédito | 1 | | 2 | 75.20 | 3 | RJ | Débito | 0 | | 3 | 12000.00 | 23 | MG | Crédito | 1 | | 4 | 99.99 | 11 | SP | Débito | 0 | | 5 | 3000.00 | 20 | PR | Crédito | 1 | O objetivo é treinar um modelo de classificação binária para prever se uma transação é fraudulenta (`1`) ou não (`0`). ## Parte 1 - Processamento dos Dados Antes de treinar um modelo no Scikit-learn, alguns ajustes são necessários. Qual das seguintes opções representa uma maneira correta de converter as variáveis categóricas (`Localizacao` e `Tipo_Cartao`) em valores numéricos para uso no modelo? ### Opções: **a)** ```python from sklearn.preprocessing import LabelEncoder encoder = LabelEncoder() training["Localizacao"] = encoder.fit_transform(training["Localizacao"]) training["Tipo_Cartao"] = encoder.fit_transform(training["Tipo_Cartao"]) ``` **b)** ```python from sklearn.preprocessing import OneHotEncoder encoder = OneHotEncoder() training = encoder.fit_transform(training) ``` **c)** ```python training["Localizacao"] = training["Localizacao"].astype(int) training["Tipo_Cartao"] = training["Tipo_Cartao"].astype(int) ``` **d)** Não é necessário converter as colunas categóricas, pois o modelo pode lidar com strings diretamente. ## Parte 2 - Treinamento do Modelo Após pré-processar os dados, o cientista de dados precisa definir corretamente as variáveis de entrada X e saída y, e então treinar um modelo de regressão logística no Scikit-learn. Qual das seguintes opções completa corretamente o código abaixo? ```python from sklearn.linear_model import LogisticRegression X = training[["Valor_Transacao", "Tempo_Dia", "Localizacao", "Tipo_Cartao"]] y = training["Fraude"] modelo = LogisticRegression() _____ # Linha que falta aqui modelo.fit(X, y) ``` **a)** `modelo.train(X, y)` **b)** `modelo.learn(X, y)` **c)** `modelo.fit(X, y)` **d)** `modelo.prepare(X, y)` ## Parte 3 - Predição O modelo treinado agora pode prever se uma nova transação é fraudulenta. Se o cientista de dados usar o seguinte código: ```python nova_transacao = [[5000, 18, 1, 0]] # Exemplo de entrada previsao = modelo.predict(nova_transacao) print(previsao) ``` O que previsao retornará? **a)** 1, indicando que é fraude **b)** 0, indicando que não é fraude **c)** Um número decimal entre 0 e 1, indicando a probabilidade de fraude **d)** Um erro, pois os dados precisam ser escalados antes da predição --- Esse é um exemplo realista de uma questão prática da **Olimpíada Brasileira de IA**, exigindo conhecimento sobre **pré-processamento de dados**, **classificação** e **predição** com **Scikit-learn**.