Guia Completo de Pipelines no ML.NET para Machine Learning
Crie seu Primeiro Modelo de ML: Guia Prático de Regressão
Vamos criar seu primeiro modelo de Machine Learning🧮 NumPy: Cálculos Científicos em Velocidade de Luz!Aprenda a usar NumPy e acelere seus cálculos em Python com arrays otimizados, vetorização e integração com Pandas, Matplotlib e SciPy. para prever preços de imóveis! Você vai aprender todo o fluxo de um projeto real: desde análise de dados até deploy do modelo. Usaremos o dataset clássico Boston Housing com Python
O que é Python e por que utilizá-lo?Aprenda por que Python é a escolha ideal para iniciantes. Descubra sua sintaxe simples, versatilidade e forte comunidade que ajudam no seu desenvolvimento. e scikit-learn. Este tutorial é perfeito para quem está começando na área de Data Science, mas também serve como um guia prático para quem deseja consolidar conhecimentos.
Índice
1. O que é Machine Learning🧮 NumPy: Cálculos Científicos em Velocidade de Luz!Aprenda a usar NumPy e acelere seus cálculos em Python com arrays otimizados, vetorização e integração com Pandas, Matplotlib e SciPy. e Regressão?
3. Carregando e Explorando os Dados
5. Dividindo os Dados em Treino e Teste
10. Deploy🚀 Deploy de Modelos: ML em Produção com Flask e Docker!Aprenda a transformar seu modelo de ML em uma API robusta com Flask e Docker. Este tutorial detalha a jornada do deploy à produção com escalabilidade. Simples com Flask
12. Conclusão e Próximos Passos
O que é Machine Learning e Regressão?🔗
Machine Learning🧮 NumPy: Cálculos Científicos em Velocidade de Luz!Aprenda a usar NumPy e acelere seus cálculos em Python com arrays otimizados, vetorização e integração com Pandas, Matplotlib e SciPy. é uma área da inteligência artificial que permite que os computadores aprendam padrões a partir de dados, sem serem explicitamente programados. No nosso caso, queremos que o computador aprenda a relação entre as características de uma casa (como tamanho e número de quartos) e seu preço.
Regressão é um tipo de problema de ML onde o objetivo é prever um valor numérico contínuo. Por exemploDicionários: armazenando e acessando dados por chavesAprenda a usar dicionários em Python para organizar e manipular dados com praticidade. Tutorial completo com exemplos e dicas para otimizar seu código.:
- Prever o preço de uma casa.
- Estimar o valor de ações.
- Prever o tempo de entrega de um produto.
Preparando o Ambiente🔗
Antes de começar, você precisa instalar as bibliotecas necessárias. Se você já tem o PythonO que é Python e por que utilizá-lo?Aprenda por que Python é a escolha ideal para iniciantes. Descubra sua sintaxe simples, versatilidade e forte comunidade que ajudam no seu desenvolvimento. instalado, pode usar o
pip
para instalar:
pip install numpy pandas scikit-learn matplotlib flask
- NumPy
🧮 NumPy: Cálculos Científicos em Velocidade de Luz!Aprenda a usar NumPy e acelere seus cálculos em Python com arrays otimizados, vetorização e integração com Pandas, Matplotlib e SciPy.: Para operações numéricas.
- Pandas
🐼 Pandas 101: Transforme Dados em Insights!Descubra como usar o Pandas para transformar dados complexos em insights precisos. Aprenda a limpar, manipular e extrair informações estratégicas.: Para manipulação de dados.
- scikit-learn: Para criar e treinar modelos de ML.
- Matplotlib
📈 Matplotlib vs Plotly: Visualização que Impacta!Explore diferenças entre Matplotlib e Plotly para visualizar dados em Python. Tutorial repleto de exemplos e dicas para escolher a ferramenta ideal.: Para visualização de dados
📈 Matplotlib vs Plotly: Visualização que Impacta!Explore diferenças entre Matplotlib e Plotly para visualizar dados em Python. Tutorial repleto de exemplos e dicas para escolher a ferramenta ideal..
- Flask
🚀 Flask vs Django: Escolha sua Arma Web!Descubra, com exemplos práticos e comparações técnicas, quando usar Flask para prototipagem ou Django para sistemas complexos e escaláveis em projetos web.: Para criar uma API simples para deploy
🚀 Deploy de Modelos: ML em Produção com Flask e Docker!Aprenda a transformar seu modelo de ML em uma API robusta com Flask e Docker. Este tutorial detalha a jornada do deploy à produção com escalabilidade. do modelo.
Carregando e Explorando os Dados🔗
Vamos usar o famoso dataset Boston Housing, que contém informações sobre casas em Boston. Esse dataset já vem embutido no scikit-learn.
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
# Carregar dataset
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['PRICE'] = boston.target
# Visualizar estatísticas básicas
print(df.describe())
# Gráfico de distribuição de preços
plt.hist(df['PRICE'], bins=30)
plt.title('Distribuição de Preços das Casas')
plt.xlabel('Preço (em $1000)')
plt.ylabel('Frequência')
plt.show()
- Principais insights:
- A média de preços é $22,532 (em escala de $1,000)
- A feature
RM
(número de quartos) tem alta correlação com o preço - Existem outliers na feature
PTRATIO
(razão aluno-professor)
Pré-processamento de Dados🔗
Antes de treinar o modelo, precisamos garantir que os dados estejam limpos e prontos para uso. Aqui estão algumas etapas comuns:
1. Verificar valores faltantes:
print(df.isnull().sum())
Se houver valores faltantes, você pode preenchê-los com a média ou mediana.
2. Normalizar os dados:
Alguns algoritmos de ML funcionam melhor com dados normalizados. Vamos usar o StandardScaler
do scikit-learn:
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Separar features e target
X = df.drop('PRICE', axis=1)
y = df['PRICE']
# Dividir dados
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Normalizar dados
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
- Por que normalizar?
Algoritmos como Regressão Linear são sensíveis à escala das features. A normalização garante que todas as variáveis tenham o mesmo peso no modelo.
Treinando o Modelo🔗
Vamos usar um modelo simples de Regressão Linear para começar. Esse modelo tenta encontrar uma relação linear entre as variáveis de entrada e o preço da casa.
from sklearn.linear_model import LinearRegression
# Criar e treinar modelo
model = LinearRegression()
model.fit(X_train, y_train)
# Fazer previsões
y_pred = model.predict(X_test)
# Coeficientes do modelo
print("Coeficiente Angular:", model.coef_)
print("Intercepto:", model.intercept_)
- Como interpretar:
Cada coeficiente representa o impacto de uma feature no preço. Por exemploDicionários: armazenando e acessando dados por chavesAprenda a usar dicionários em Python para organizar e manipular dados com praticidade. Tutorial completo com exemplos e dicas para otimizar seu código., se o coeficiente de
RM
é 5.2, cada quarto adicional aumenta o preço em $5,200.
Avaliando o Modelo🔗
Agora, vamos ver como o modelo se sai no conjunto de teste. Usaremos o Erro Quadrático Médio (MSE) e o Coeficiente de Determinação (R²) para medir a precisão:
from sklearn.metrics import mean_squared_error, r2_score
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"Erro Quadrático Médio: {mse:.2f}")
print(f"Coeficiente de Determinação (R²): {r2:.2f}")
- Resultado típico:
Erro Quadrático Médio: 24.29
Coeficiente de Determinação (R²): 0.67
- O que significa:
- MSE 24.29: O modelo erra em média $24,290
- R² 0.67: 67% da variação nos preços é explicada pelo modelo
Comparando Modelos🔗
Modelo | MAE | R² | Velocidade | Interpretabilidade |
---|---|---|---|---|
Regressão Linear | 3.19 | 0.67 | ⚡⚡⚡⚡ | ⭐⭐⭐⭐⭐ |
Árvore Decisão | 2.98 | 0.73 | ⚡⚡⚡ | ⭐⭐ |
Random Forest | 2.15 | 0.85 | ⚡⚡ | ⭐ |
- Trade-offs:
Modelos mais complexos (como Random Forest) têm melhor performance, mas são menos interpretáveis. Escolha depende do objetivo do projeto!
Deploy Simples com Flask🔗
from flask import Flask, request, jsonify
import joblib
app = Flask(__name__)
model = joblib.load('modelo.pkl')
scaler = joblib.load('scaler.pkl')
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
scaled_data = scaler.transform([data['features']])
prediction = model.predict(scaled_data)
return jsonify({'previsao': prediction[0]})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
- Testando via cURL:
curl -X POST http://localhost:5000/predict \
- H "Content-Type: application/json
📁 Trabalhando com Arquivos: Leia, Escreva e Serialize como um Ninja!Domine as técnicas de manipulação de arquivos em Python. Aprenda a ler, escrever e serializar dados com práticas seguras e eficientes." \
- d '{"features": [0.02731, 0.0, 7.07, 0, 0.469, 6.421, 78.9, 4.9671, 2, 242, 17.8, 396.90]}'
- Resposta:
{"previsao":28.36}
→ Preço estimado de $28,360
Prevendo Preços de Casas🔗
Finalmente, vamos usar o modelo para prever o preço de novas casas. Aqui está um exemploDicionários: armazenando e acessando dados por chavesAprenda a usar dicionários em Python para organizar e manipular dados com praticidade. Tutorial completo com exemplos e dicas para otimizar seu código.:
nova_casa = [[0.02731, 0.0, 7.07, 0, 0.469, 6.421, 78.9, 4.9671, 2, 242, 17.8, 396.90]]
nova_casa_scaled = scaler.transform(nova_casa)
preço_previsto = model.predict(nova_casa_scaled)
print(f"Preço previsto: ${preço_previsto[0]:.2f}")
Conclusão e Próximos Passos🔗
Você criou seu primeiro modelo de Machine Learning🧮 NumPy: Cálculos Científicos em Velocidade de Luz!Aprenda a usar NumPy e acelere seus cálculos em Python com arrays otimizados, vetorização e integração com Pandas, Matplotlib e SciPy.! 🎉 Apesar de simples, ele já pode ser útil para prever preços de casas com base em algumas características.
O que fazer agora?
1. Experimente outros modelos: Tente usar modelos como Árvores de Decisão ou Random Forest.
2. Melhore o pré-processamento: Explore técnicas como PCA para reduzir a dimensionalidade.
3. Aprofunde-se em avaliação: Aprenda sobre métricas como R² e MAE.
4. Implemente em produção: Coloque seu modelo em um ambiente real com monitoramento contínuo.
Lembre-se: Machine Learning🧮 NumPy: Cálculos Científicos em Velocidade de Luz!Aprenda a usar NumPy e acelere seus cálculos em Python com arrays otimizados, vetorização e integração com Pandas, Matplotlib e SciPy. é uma jornada. Continue praticando e explorando! 🚀
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- Documentação Oficial do Python: docs.python.org/3/
- NumPy Documentation: numpy.org/doc
- Pandas Documentation: pandas.pydata.org/docs
- Python Package Index (PyPI): pypi.org
- Repositório Oficial da Linguagem Python: github.com/python/cpython