0%
Machine Learning com Python

Machine Learning com Python

Técnicas para implementar modelos de machine learning com Python.

I

InSkillCoach

· min

Machine Learning com Python

O Machine Learning (aprendizado de máquina) é uma das áreas mais empolgantes da computação moderna. O Python se consolidou como a linguagem preferida para desenvolver modelos de IA graças ao seu ecossistema rico e às suas bibliotecas especializadas.

O que é Machine Learning?

O Machine Learning é um ramo da inteligência artificial que permite aos computadores aprender a partir de dados sem serem explicitamente programados. Os algoritmos de ML identificam padrões nos dados e tomam decisões com um mínimo de intervenção humana.

As bibliotecas essenciais

O Python oferece um ecossistema completo para Machine Learning:

  • NumPy: Cálculo numérico e manipulação de arrays multidimensionais
  • Pandas: Manipulação e análise de dados
  • Scikit-learn: Biblioteca completa para ML clássico
  • TensorFlow: Framework de deep learning desenvolvido pelo Google
  • PyTorch: Framework de deep learning flexível e intuitivo
  • Keras: API de alto nível para redes neurais
  • XGBoost: Implementação otimizada do gradient boosting

Instalação do ambiente

Comece configurando seu ambiente:

# Criar um ambiente virtual
python -m venv ml-env
source ml-env/bin/activate  # No Windows: ml-env\Scripts\activate

# Instalar as bibliotecas essenciais
pip install numpy pandas matplotlib scikit-learn tensorflow keras

Tipos de aprendizado de máquina

Aprendizado supervisionado

O algoritmo aprende a partir de dados rotulados:

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# Carregar e preparar os dados
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Criar e treinar o modelo
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)

# Avaliar o modelo
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(f"Précision du modèle : {accuracy:.2f}")

Aprendizado não supervisionado

O algoritmo identifica estruturas em dados não rotulados:

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# Criar e treinar o modelo
kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(X)

# Visualizar os clusters
plt.figure(figsize=(10, 6))
plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], 
            s=300, c='red', marker='X')
plt.title('Clustering K-means')
plt.show()

Aprendizado por reforço

O algoritmo aprende por tentativa e erro ao interagir com um ambiente:

import gym
import numpy as np

# Criar o ambiente
env = gym.make('CartPole-v1')

# Parâmetros
learning_rate = 0.1
discount_factor = 0.99
episodes = 1000
max_steps = 500

# Tabela Q
q_table = np.zeros([env.observation_space.n, env.action_space.n])

# Loop de aprendizado
for episode in range(episodes):
    state = env.reset()
    done = False
    
    for step in range(max_steps):
        # Escolher uma ação
        action = np.argmax(q_table[state, :])
        
        # Executar a ação
        new_state, reward, done, _ = env.step(action)
        
        # Atualizar a tabela Q
        q_table[state, action] = q_table[state, action] + learning_rate * (
            reward + discount_factor * np.max(q_table[new_state, :]) - q_table[state, action])
        
        state = new_state
        
        if done:
            break

Deep Learning com TensorFlow

O deep learning usa redes neurais profundas para resolver problemas complexos:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, MaxPooling2D

# Carregar os dados
(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()

# Pré-processamento
X_train = X_train.reshape(-1, 28, 28, 1) / 255.0
X_test = X_test.reshape(-1, 28, 28, 1) / 255.0

# Criar o modelo CNN
model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    MaxPooling2D((2, 2)),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D((2, 2)),
    Flatten(),
    Dense(128, activation='relu'),
    Dense(10, activation='softmax')
])

# Compilar o modelo
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# Treinar o modelo
model.fit(X_train, y_train, epochs=5, validation_data=(X_test, y_test))

# Avaliar o modelo
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Précision sur les données de test : {test_acc:.4f}")

Processamento de linguagem natural (NLP)

O NLP é uma área do ML que lida com a linguagem humana:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline

# Exemplo de dados
X = ["J'adore ce film", "Ce film est terrible", "Un excellent film", "Je déteste ce film"]
y = [1, 0, 1, 0]  # 1 = positivo, 0 = negativo

# Criar um pipeline
text_clf = Pipeline([
    ('tfidf', TfidfVectorizer()),
    ('clf', MultinomialNB())
])

# Treinar o modelo
text_clf.fit(X, y)

# Prever o sentimento
nouvelles_critiques = ["C'était un film incroyable", "Je n'ai pas aimé ce film"]
predictions = text_clf.predict(nouvelles_critiques)
print(predictions)  # [1, 0]

Visão computacional

A visão computacional permite que as máquinas “vejam” e interpretem imagens:

import cv2
import numpy as np
from tensorflow.keras.applications import MobileNetV2
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input, decode_predictions

# Carregar o modelo pré-treinado
model = MobileNetV2(weights='imagenet')

# Carregar e pré-processar a imagem
image = cv2.imread('chat.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = cv2.resize(image, (224, 224))
image = np.expand_dims(image, axis=0)
image = preprocess_input(image)

# Prever a classe
predictions = model.predict(image)
results = decode_predictions(predictions, top=3)[0]

# Exibir os resultados
for i, (imagenet_id, label, score) in enumerate(results):
    print(f"{i+1}: {label} ({score:.2f})")

Boas práticas em Machine Learning

Pré-processamento dos dados

from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer

# Definir as transformações
numeric_features = ['age', 'income', 'credit_score']
categorical_features = ['education', 'marital_status']

numeric_transformer = Pipeline(steps=[
    ('imputer', SimpleImputer(strategy='median')),
    ('scaler', StandardScaler())
])

categorical_transformer = Pipeline(steps=[
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('onehot', OneHotEncoder(handle_unknown='ignore'))
])

preprocessor = ColumnTransformer(
    transformers=[
        ('num', numeric_transformer, numeric_features),
        ('cat', categorical_transformer, categorical_features)
    ])

# Criar o pipeline completo
model = Pipeline(steps=[
    ('preprocessor', preprocessor),
    ('classifier', RandomForestClassifier())
])

# Usar o pipeline
model.fit(X_train, y_train)

Validação cruzada

from sklearn.model_selection import cross_val_score, KFold

# Definir a validação cruzada
cv = KFold(n_splits=5, shuffle=True, random_state=42)

# Avaliar o modelo
scores = cross_val_score(model, X, y, cv=cv, scoring='accuracy')
print(f"Précision moyenne : {scores.mean():.2f} (±{scores.std():.2f})")

Otimização de hiperparâmetros

from sklearn.model_selection import GridSearchCV

# Definir os hiperparâmetros a testar
param_grid = {
    'n_estimators': [50, 100, 200],
    'max_depth': [None, 10, 20, 30],
    'min_samples_split': [2, 5, 10]
}

# Criar o modelo de busca
grid_search = GridSearchCV(
    RandomForestClassifier(random_state=42),
    param_grid,
    cv=5,
    scoring='accuracy',
    n_jobs=-1
)

# Encontrar os melhores hiperparâmetros
grid_search.fit(X_train, y_train)
print(f"Meilleurs paramètres : {grid_search.best_params_}")
print(f"Meilleure précision : {grid_search.best_score_:.2f}")

Aplicações concretas do Machine Learning

  • Sistemas de recomendação: Netflix, Amazon, Spotify
  • Reconhecimento de imagens: Detecção de objetos, reconhecimento facial
  • Processamento de linguagem natural: Chatbots, tradução automática
  • Detecção de fraudes: Transações bancárias suspeitas
  • Diagnóstico médico: Detecção de doenças em imagens médicas
  • Veículos autônomos: Percepção do ambiente e tomada de decisão
  • Previsão de séries temporais: Previsão de cotações da bolsa, meteorologia

Conclusão

O Machine Learning com Python oferece possibilidades infinitas para resolver problemas complexos e criar aplicações inteligentes. Com as bibliotecas e técnicas certas, você pode desenvolver modelos poderosos que aprendem a partir dos dados e melhoram com o tempo.

Para ir além, explore áreas específicas como deep learning, NLP ou visão computacional, e participe de competições em plataformas como o Kaggle para testar suas habilidades.

InSkillCoach

Sobre InSkillCoach

Especialista em treinamento e tecnologias

Coach especializado em tecnologias avançadas e IA, apoiado pela GNeurone Inc.

Certificações:

  • AWS Certified Solutions Architect – Professional
  • Certificações Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.3k
184

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!