Machine Learning com Python
Técnicas para implementar modelos de machine learning com Python.
InSkillCoach
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.
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+
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão