Projeto Prático: Prevendo Preços de Casas em Python

Prever preços de casas é um projeto clássico de Machine Learning. Ele ajuda a entender conceitos de regressãopré-processamento de dadosavaliação de modelos e interpretação de resultados. Neste artigo, vamos criar um projeto completo em Python usando um dataset simples e a biblioteca scikit-learn.

Você aprenderá:

  • Como carregar e explorar um dataset de imóveis.

  • Como preparar os dados para treinamento.

  • Como treinar e avaliar um modelo de regressão.

  • Como fazer previsões para novos imóveis.

  • Como visualizar resultados com gráficos.


🔹 1. Preparando o ambiente

Antes de começar, instale as bibliotecas necessárias:

pip install pandas scikit-learn matplotlib seaborn

E importe no Python:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
import seaborn as sns

🔹 2. Carregando um dataset simples

Vamos criar um dataset fictício, mas que simula dados reais de casas:

dados = {
    "area_m2": [50, 60, 80, 100, 120, 150, 200],
    "quartos": [1, 2, 2, 3, 3, 4, 5],
    "idade_anos": [10, 5, 20, 15, 10, 5, 1],
    "preco_mil": [200, 250, 300, 400, 450, 500, 700]
}

df = pd.DataFrame(dados)
print(df)

Saída:

   area_m2  quartos  idade_anos  preco_mil
0       50        1          10        200
1       60        2           5        250
2       80        2          20        300
3      100        3          15        400
4      120        3          10        450
5      150        4           5        500
6      200        5           1        700

🔹 3. Explorando o dataset

Podemos usar visualizações para entender relações entre variáveis:

sns.pairplot(df)
plt.show()

✅ Observação: áreas maiores e mais quartos tendem a ter preços mais altos.
✅ Casas mais antigas tendem a ter preços menores.


🔹 4. Preparando os dados

4.1. Separando variáveis

X = df[["area_m2", "quartos", "idade_anos"]]  # features
y = df["preco_mil"]                           # target

4.2. Dividindo treino e teste

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

🔹 5. Criando o modelo de regressão

Vamos usar Regressão Linear, que é simples e eficiente para problemas lineares:

modelo = LinearRegression()
modelo.fit(X_train, y_train)

🔹 6. Avaliando o modelo

6.1. Prevendo preços no conjunto de teste

y_pred = modelo.predict(X_test)

6.2. Métricas de desempenho

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f"Erro Quadrático Médio (MSE): {mse:.2f}")
print(f"R² Score: {r2:.2f}")

✅ MSE (Mean Squared Error): quanto menor, melhor.
✅ : varia de 0 a 1. Quanto mais próximo de 1, melhor a explicação do modelo sobre os dados.


🔹 7. Interpretando os coeficientes

print("Coeficientes do modelo:", modelo.coef_)
print("Intercepto:", modelo.intercept_)

Isso mostra quanto cada característica influencia o preço:

  • Área (area_m2) → efeito positivo no preço.

  • Número de quartos → efeito positivo.

  • Idade da casa → efeito negativo.

Exemplo de interpretação:

Cada metro quadrado adicional aumenta o preço em X mil reais.


🔹 8. Visualizando previsões vs valores reais

plt.scatter(y_test, y_pred, color="blue")
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], color="red", linestyle="--")
plt.xlabel("Preço Real (mil R$)")
plt.ylabel("Preço Previsto (mil R$)")
plt.title("Preços Reais x Previsões")
plt.show()

✅ Idealmente, os pontos devem ficar próximos da linha vermelha (previsão perfeita).


🔹 9. Fazendo previsões com novas casas

nova_casa = np.array([[90, 3, 10]])  # 90 m², 3 quartos, 10 anos
preco_previsto = modelo.predict(nova_casa)
print(f"Preço previsto: {preco_previsto[0]:.2f} mil R$")

🔹 10. Próximos passos

Para tornar o projeto mais avançado:


🔹 11. Conclusão

Neste projeto prático, você aprendeu a:

Este é o primeiro passo para projetos reais de regressão e ciência de dados.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Manipulação de Arquivos no C#: Como Ler, Escrever e Trabalhar com Arquivos de Forma Simples

Laços de Repetição em Python: Conceitos e Exemplos Práticos