Projeto Prático: Prevendo Preços de Casas em Python
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.
✅ R²: 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:
Adicione mais features (bairro, número de banheiros, garagem).
Faça normalização ou padronização das variáveis.
Teste outros modelos como Random Forest, Gradient Boosting ou XGBoost.
Use datasets maiores do Kaggle, como House Prices - Advanced Regression Techniques.
🔹 11. Conclusão
Neste projeto prático, você aprendeu a:
Carregar e explorar um dataset de casas.
Preparar dados para Machine Learning.
Treinar um modelo de regressão linear.
Avaliar resultados com métricas e gráficos.
Fazer previsões para novos imóveis.
Este é o primeiro passo para projetos reais de regressão e ciência de dados.

Comentários
Postar um comentário