Skip to content

Instantly share code, notes, and snippets.

@leoniralves
Created March 12, 2025 20:00
Show Gist options
  • Save leoniralves/5bf075d1c56858beafb57bf9616abfb5 to your computer and use it in GitHub Desktop.
Save leoniralves/5bf075d1c56858beafb57bf9616abfb5 to your computer and use it in GitHub Desktop.

Questão: Predição de Preços de Casas com Scikit-learn

Um cientista de dados deseja criar um modelo de regressão linear para prever o preço de uma casa com base em seu tamanho (em metros quadrados). Ele coletou os seguintes dados:

Tamanho (m²) Preço (mil reais)
50 200
80 320
100 400
150 600
200 800

Parte 1 - Preparação dos Dados

Com base nos dados acima, qual das seguintes opções representa corretamente a separação das variáveis X (entrada) e y (saída) no Scikit-learn?

a)

X = [50, 80, 100, 150, 200]
y = [200, 320, 400, 600, 800]

b)

X = [[50], [80], [100], [150], [200]]
y = [200, 320, 400, 600, 800]

c)

X = [50, 80, 100, 150, 200]
y = [[200], [320], [400], [600], [800]]

d)

X = [[50, 80, 100, 150, 200]]
y = [200, 320, 400, 600, 800]

Parte 2 - Treinamento do Modelo

Após definir corretamente X e y, o cientista de dados quer criar e treinar o modelo de regressão linear no Scikit-learn.

Qual das seguintes opções completa corretamente o código abaixo?

from sklearn.linear_model import LinearRegression

modelo = LinearRegression()
_____  # 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 preços de casas com base no tamanho. Se o cientista de dados usar o seguinte código:

preco_previsto = modelo.predict([[120]])
print(preco_previsto)

E sabendo que a relação entre tamanho e preço é linear, qual será o preço previsto para uma casa de 120m²?

a) 500 mil reais

b) 450 mil reais

c) 480 mil reais

d) 420 mil reais

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)

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()
training["Localizacao"] = encoder.fit_transform(training["Localizacao"])
training["Tipo_Cartao"] = encoder.fit_transform(training["Tipo_Cartao"])

b)

from sklearn.preprocessing import OneHotEncoder

encoder = OneHotEncoder()
training = encoder.fit_transform(training)

c)

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?

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:

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment