Fernando Ramos - Python For AI
Fernando Ramos - Python For AI
3
Aula 1: O que é Inteligência Artificial?................................................................................3
Módulo 2: Preparação do Ambiente e Instalação de Ferramentas................................... 4
Aula 2: Instalação e Configuração do Ambiente................................................................ 4
Módulo 3: Fundamentos de Machine Learning................................................................... 6
Aula 3: Regressão Linear com Scikit-Learn....................................................................... 6
Módulo 4: Introdução ao Deep Learning............................................................................. 8
Aula 4: Redes Neurais com Keras..................................................................................... 8
Módulo 5: Aplicações Avançadas e Técnicas................................................................... 10
Aula 5: Regularização e Overfitting..................................................................................10
Módulo 6: Processamento de Linguagem Natural (NLP)................................................. 11
Aula 6: Introdução ao NLP e Tokenização....................................................................... 11
Módulo 7: Modelos de NLP................................................................................................. 12
Aula 7: Modelos de Classificação de Texto......................................................................12
Módulo 8: Análise de Dados............................................................................................... 13
Aula 8: Manipulação e Análise de Dados com Pandas....................................................13
Módulo 9: Técnicas Avançadas de Machine Learning..................................................... 14
Aula 9: Algoritmos de Classificação................................................................................. 14
Módulo 10: Projeto Final..................................................................................................... 15
Aula 10: Construindo um Projeto de Machine Learning...................................................15
Módulo 11: Aprendizado de Máquina e Práticas de Projeto............................................ 17
Aula 11: Avaliação de Modelos e Ajuste de Hiperparâmetros......................................... 17
Módulo 12: Aplicações Avançadas de Deep Learning..................................................... 19
Aula 12: Redes Neurais Convolucionais (CNNs)............................................................. 19
Módulo 13: Implementação de Projetos de AI/ML............................................................ 21
Aula 13: Projeto de Implementação Completa.................................................................21
Módulo 14: Técnicas Avançadas em Machine Learning.................................................. 23
Aula 14: Modelos de Ensemble........................................................................................23
Módulo 15: Técnicas Avançadas em Deep Learning........................................................25
Aula 15: Redes Neurais Recorrentes (RNNs)..................................................................25
Módulo 16: Deploy e Produção...........................................................................................26
Aula 16: Preparando Modelos para Produção................................................................. 26
Módulo 17: Revisão e Consolidação de Conhecimentos.................................................28
Aula 17: Revisão Completa e Projeto Final......................................................................28
Módulo 18: Introdução ao Processamento de Linguagem Natural (NLP)...................... 29
Aula 18: Processamento de Texto com NLP....................................................................29
Módulo 19: Computação em Nuvem com Python.............................................................31
Aula 19: Utilizando APIs de Nuvem................................................................................. 31
Módulo 20: Considerações Finais e Avanços Futuramente............................................ 33
Aula 20: Tendências e Futuro da Inteligência Artificial.....................................................33
Módulo 1: Introdução à Inteligência Artificial (IA)
Aula 1: O que é Inteligência Artificial?
Conteúdo:
● Definição:
Inteligência Artificial (IA) é uma área da ciência da computação que se concentra em
criar sistemas que imitam a inteligência humana para realizar tarefas e podem iterar
e melhorar com o tempo. Exemplos incluem chatbots, reconhecimento facial e
algoritmos de recomendação.
● Exemplos de Aplicações de IA:
○ Assistentes Virtuais: Como Siri e Alexa, que respondem a perguntas e
realizam tarefas baseadas em comandos de voz.
○ Sistemas de Recomendação: Como o Netflix e Amazon, que recomendam
filmes ou produtos com base no histórico de visualização ou compra.
Módulo 2: Preparação do Ambiente e Instalação
de Ferramentas
Aula 2: Instalação e Configuração do Ambiente
Conteúdo:
● Instalação de Bibliotecas:
As bibliotecas essenciais para IA e ML em Python são:
○ NumPy: Para manipulação de arrays e operações matemáticas.
○ Pandas: Para manipulação e análise de dados.
○ Scikit-Learn: Para machine learning.
○ TensorFlow e Keras: Para deep learning.
● Execute os seguintes comandos no Google Colab ou no terminal para instalar essas
bibliotecas:
Após a instalação, você deve importar as bibliotecas necessárias para o seu código:
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
● Comentário:
○ import numpy as np: Importa a biblioteca NumPy e a renomeia como np.
○ import pandas as pd: Importa a biblioteca Pandas e a renomeia como
pd.
○ from sklearn.model_selection import train_test_split:
Importa a função para dividir o conjunto de dados em treinamento e teste.
○ from sklearn.linear_model import LinearRegression: Importa o
modelo de regressão linear.
○ from sklearn.metrics import mean_squared_error: Importa a
função para calcular o erro quadrático médio.
○ import tensorflow as tf: Importa a biblioteca TensorFlow e a
renomeia como tf.
○ from tensorflow.keras.models import Sequential: Importa o
modelo sequencial de Keras.
○ from tensorflow.keras.layers import Dense: Importa a camada
densa para o modelo.
Módulo 3: Fundamentos de Machine Learning
Aula 3: Regressão Linear com Scikit-Learn
Conteúdo:
# Dados de exemplo
X = np.array([[1], [2], [3], [4], [5]]) # Área da casa em metros
quadrados
y = np.array([100, 150, 200, 250, 300]) # Preço da casa em milhares de
reais
# Avaliar o modelo
erro = mean_squared_error(y_test, y_pred)
Comentário:
● np.array([[1], [2], [3], [4], [5]]): Cria um array NumPy com a área
das casas.
● train_test_split(X, y, test_size=0.2, random_state=0): Divide os
dados em conjuntos de treinamento e teste, mantendo 20% dos dados para teste.
● modelo.fit(X_train, y_train): Treina o modelo usando os dados de
treinamento.
● modelo.predict(X_test): Faz previsões com os dados de teste.
● mean_squared_error(y_test, y_pred): Calcula o erro quadrático médio das
previsões.
Módulo 4: Introdução ao Deep Learning
Aula 4: Redes Neurais com Keras
Conteúdo:
# Normalizar os dados
X_train, X_test = X_train / 255.0, X_test / 255.0
# Construir o modelo
modelo = Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)), # Achata as imagens
28x28 em um vetor de 784 elementos
tf.keras.layers.Dense(128, activation='relu'), # Camada densa com
128 neurônios e função de ativação ReLU
tf.keras.layers.Dense(10, activation='softmax') # Camada de saída
com 10 neurônios (uma para cada dígito)
])
# Compilar o modelo
modelo.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# Treinar o modelo
modelo.fit(X_train, y_train, epochs=5)
# Avaliar o modelo
perda, acuracia = modelo.evaluate(X_test, y_test)
print(f"Perda: {perda:.4f}")
print(f"Acurácia: {acuracia:.4f}")
● Comentário:
○ tf.keras.datasets.mnist.load_data(): Carrega o conjunto de dados
MNIST de dígitos manuscritos.
○ X_train / 255.0: Normaliza os dados de entrada para valores entre 0 e
1.
○ tf.keras.layers.Flatten(input_shape=(28, 28)): Achata a
imagem 28x28 em um vetor unidimensional de 784 elementos.
○ tf.keras.layers.Dense(128, activation='relu'): Adiciona uma
camada densa com 128 neurônios e a função de ativação ReLU.
○ tf.keras.layers.Dense(10, activation='softmax'): Camada de
saída com 10 neurônios e a função de ativação Softmax para classificação
multi-classe.
○ modelo.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']): Compila o modelo com o otimizador Adam e a
função de perda de entropia cruzada.
○ modelo.fit(X_train, y_train, epochs=5): Treina o modelo por 5
épocas.
○ modelo.evaluate(X_test, y_test): Avalia o desempenho do modelo
no conjunto de teste.
Módulo 5: Aplicações Avançadas e Técnicas
Aula 5: Regularização e Overfitting
Conteúdo:
● O que é Overfitting?
Overfitting ocorre quando um modelo aprende muito bem os dados de treinamento,
mas não generaliza bem para novos dados. Isso geralmente acontece quando o
modelo é muito complexo.
● Técnicas de Regularização:
○ Dropout: Desativa aleatoriamente uma fração de neurônios durante o
treinamento para evitar overfitting.
modelo = Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
Dropout(0.5), # 50% dos neurônios são desativados aleatoriamente
tf.keras.layers.Dense(10, activation='softmax')
])
Regularização L2: Adiciona uma penalização ao tamanho dos pesos no modelo para evitar
que eles cresçam demais.
modelo = Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu',
kernel_regularizer=l2(0.01)), # Penalização L2
tf.keras.layers.Dense(10, activation='softmax')
])
● Comentário:
○ Dropout(0.5): Adiciona a camada Dropout que desativa 50% dos
neurônios durante o treinamento.
○ kernel_regularizer=l2(0.01): Adiciona regularização L2 com um fator
de penalização de 0.01 aos pesos da camada.
Módulo 6: Processamento de Linguagem Natural
(NLP)
Aula 6: Introdução ao NLP e Tokenização
Conteúdo:
● O que é NLP?
Processamento de Linguagem Natural (NLP) é uma subárea da IA que lida com a
interação entre computadores e linguagem humana.
● Tokenização:
A tokenização é o processo de dividir um texto em partes menores, como palavras
ou frases.
# Texto de exemplo
textos = ["Eu amo programação.", "Python é uma linguagem poderosa."]
# Criar um tokenizador
tokenizador = Tokenizer()
tokenizador.fit_on_texts(textos)
print(sequencias)
● Comentário:
○ Tokenizer(): Cria um objeto Tokenizer para tokenizar o texto.
○ fit_on_texts(textos): Treina o tokenizador com o texto fornecido.
○ texts_to_sequences(textos): Converte o texto em uma sequência de
inteiros, onde cada palavra é representada por um número.
Módulo 7: Modelos de NLP
Aula 7: Modelos de Classificação de Texto
Conteúdo:
# Dados de exemplo
textos = ["Eu amo programação.", "Python é uma linguagem poderosa."]
labels = [1, 0] # 1 para positivo, 0 para negativo
# Tokenização e sequenciamento
tokenizador = Tokenizer()
tokenizador.fit_on_texts(textos)
sequencias = tokenizador.texts_to_sequences(textos)
X = pad_sequences(sequencias, padding='post')
# Construir o modelo
modelo = Sequential([
Embedding(input_dim=len(tokenizador.word_index) + 1, output_dim=8,
input_length=X.shape[1]),
LSTM(32),
Dense(1, activation='sigmoid')
])
modelo.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])
modelo.fit(X, labels, epochs=5)
● Comentário:
○ pad_sequences(sequencias, padding='post'): Preenche
sequências para garantir que todas tenham o mesmo comprimento.
○ Embedding(input_dim=len(tokenizador.word_index) + 1,
output_dim=8, input_length=X.shape[1]): Cria uma camada de
embedding para converter palavras em vetores.
○ LSTM(32): Adiciona uma camada LSTM com 32 unidades.
○ Dense(1, activation='sigmoid'): Camada de saída com uma
unidade e função de ativação sigmoid para classificação binária.
Módulo 8: Análise de Dados
Aula 8: Manipulação e Análise de Dados com Pandas
Conteúdo:
# Carregar dados
df = pd.read_csv('dados.csv')
# Estatísticas básicas
print(df.describe())
● Comentário:
○ pd.read_csv('dados.csv'): Carrega um arquivo CSV em um
DataFrame do Pandas.
○ df.head(): Mostra as primeiras linhas do DataFrame.
○ df.describe(): Exibe estatísticas básicas sobre os dados numéricos.
Módulo 9: Técnicas Avançadas de Machine
Learning
Aula 9: Algoritmos de Classificação
Conteúdo:
# Dividir os dados
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=42)
# Fazer previsões
y_pred = modelo.predict(X_test)
# Avaliar o modelo
acuracia = accuracy_score(y_test, y_pred)
print(f"Acurácia: {acuracia:.2f}")
● Comentário:
○ SVC(kernel='linear'): Cria um modelo de SVM com um kernel linear.
○ modelo.fit(X_train, y_train): Treina o modelo com os dados de
treinamento.
○ modelo.predict(X_test): Faz previsões com os dados de teste.
○ accuracy_score(y_test, y_pred): Calcula a acurácia do modelo.
Módulo 10: Projeto Final
Aula 10: Construindo um Projeto de Machine Learning
Conteúdo:
# Dados de exemplo
textos = ["Oferta especial! Compre agora!", "Seu recibo de pagamento
está anexado."]
labels = [1, 0] # 1 para spam, 0 para não spam
# Tokenização e sequenciamento
tokenizador = Tokenizer()
tokenizador.fit_on_texts(textos)
sequencias = tokenizador.texts_to_sequences(textos)
X = pad_sequences(sequencias, padding='post')
# Construir o modelo
modelo = Sequential([
Embedding(input_dim=len(tokenizador.word_index) + 1, output_dim=8,
input_length=X.shape[1]),
LSTM(32),
Dense(1, activation='sigmoid')
])
modelo.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])
modelo.fit(X, labels, epochs=5)
# Fazer previsões
previsoes = modelo.predict(X_novas)
# Interpretar as previsões
for mensagem, previsao in zip(novas_mensagens, previsoes):
categoria = "Spam" if previsao > 0.5 else "Não Spam"
print(f"Mensagem: {mensagem} -> Categoria: {categoria}")
● Comentário:
○ tokenizador.texts_to_sequences(novas_mensagens): Converte as
novas mensagens em sequências de inteiros.
○ pad_sequences(sequencias_novas, padding='post'): Preenche as
sequências para garantir que todas tenham o mesmo comprimento.
○ modelo.predict(X_novas): Faz previsões para as novas mensagens.
○ if previsao > 0.5: Interpreta a previsão do modelo, onde valores acima
de 0.5 são classificados como "Spam".
Módulo 11: Aprendizado de Máquina e Práticas de
Projeto
Aula 11: Avaliação de Modelos e Ajuste de Hiperparâmetros
Conteúdo:
● Avaliação de Modelos:
É crucial avaliar o desempenho dos modelos de ML para garantir que eles
funcionem bem com novos dados. Usamos métricas como acurácia, precisão, recall
e F1-score.
# Dados de exemplo
y_true = [1, 0, 1, 0] # Valores reais
y_pred = [1, 0, 0, 0] # Valores previstos
# Relatório de classificação
relatorio = classification_report(y_true, y_pred, target_names=["Spam",
"Não Spam"])
print(relatorio)
omentário:
Ajuste de Hiperparâmetros:
O ajuste de hiperparâmetros é o processo de encontrar as melhores configurações para um
modelo. Vamos usar a busca em grade (GridSearchCV) para encontrar os melhores
hiperparâmetros para um modelo de SVM.
# Definir o modelo
modelo = SVC()
# Melhor configuração
print(f"Melhores parâmetros: {grid_search.best_params_}")
● Comentário:
○ GridSearchCV(modelo, parametros, cv=5): Cria um objeto de busca
em grade com validação cruzada de 5 dobras.
○ grid_search.fit(X_train, y_train): Ajusta o modelo com os dados
de treinamento e os hiperparâmetros fornecidos.
○ grid_search.best_params_: Exibe os melhores parâmetros encontrados
durante a busca.
Módulo 12: Aplicações Avançadas de Deep
Learning
Aula 12: Redes Neurais Convolucionais (CNNs)
Conteúdo:
modelo_cnn.compile(optimizer='adam',
loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Ajustar o modelo
modelo_cnn.fit(X_train, y_train, epochs=5)
# Avaliar o modelo
perda, acuracia = modelo_cnn.evaluate(X_test, y_test)
print(f"Perda: {perda:.4f}")
print(f"Acurácia: {acuracia:.4f}")
● Comentário:
○ Conv2D(32, (3, 3), activation='relu', input_shape=(28,
28, 1)): Adiciona uma camada convolucional com 32 filtros, tamanho de
kernel 3x3 e função de ativação ReLU.
○ MaxPooling2D((2, 2)): Adiciona uma camada de pooling para reduzir a
dimensionalidade.
○ Flatten(): Achata a saída das camadas convolucionais em um vetor.
○ Dense(64, activation='relu'): Adiciona uma camada densa com 64
neurônios e função de ativação ReLU.
○ Dense(10, activation='softmax'): Camada de saída com 10
neurônios para a classificação das 10 classes.
Módulo 13: Implementação de Projetos de AI/ML
Aula 13: Projeto de Implementação Completa
Conteúdo:
modelo_cnn.compile(optimizer='adam',
loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Ajustar o modelo
modelo_cnn.fit(X_train, y_train, epochs=10)
# Avaliar o modelo
perda, acuracia = modelo_cnn.evaluate(X_test, y_test)
print(f"Perda: {perda:.4f}")
print(f"Acurácia: {acuracia:.4f}")
Comentário:
Random Forest:
# Definir o modelo
rf_modelo = RandomForestClassifier(n_estimators=100, random_state=42)
# Ajustar o modelo
rf_modelo.fit(X_train, y_train)
# Fazer previsões
y_pred_rf = rf_modelo.predict(X_test)
# Avaliar o modelo
acuracia_rf = accuracy_score(y_test, y_pred_rf)
print(f"Acurácia do Random Forest: {acuracia_rf:.4f}")
Comentário:
# Definir o modelo
gb_modelo = GradientBoostingClassifier(n_estimators=100,
learning_rate=0.1, random_state=42)
# Ajustar o modelo
gb_modelo.fit(X_train, y_train)
# Fazer previsões
y_pred_gb = gb_modelo.predict(X_test)
# Avaliar o modelo
acuracia_gb = accuracy_score(y_test, y_pred_gb)
print(f"Acurácia do Gradient Boosting: {acuracia_gb:.4f}")
● Comentário:
○ GradientBoostingClassifier(n_estimators=100,
learning_rate=0.1, random_state=42): Cria um modelo Gradient
Boosting com 100 estimadores e taxa de aprendizado de 0.1.
○ gb_modelo.fit(X_train, y_train): Ajusta o modelo com os dados de
treinamento.
Módulo 15: Técnicas Avançadas em Deep
Learning
Aula 15: Redes Neurais Recorrentes (RNNs)
Conteúdo:
modelo_rnn.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])
# Ajustar o modelo
modelo_rnn.fit(X_train, y_train, epochs=5)
# Avaliar o modelo
perda, acuracia = modelo_rnn.evaluate(X_test, y_test)
print(f"Perda: {perda:.4f}")
print(f"Acurácia: {acuracia:.4f}")
● Comentário:
○ Embedding(input_dim=10000, output_dim=128,
input_length=100): Camada de embedding para representar palavras
como vetores.
○ SimpleRNN(64, activation='relu'): Camada RNN com 64 unidades
e ativação ReLU.
○ Dense(1, activation='sigmoid'): Camada de saída com ativação
sigmoide para classificação binária.
Módulo 16: Deploy e Produção
Aula 16: Preparando Modelos para Produção
Conteúdo:
● Exportando Modelos:
Após treinar um modelo, é importante exportá-lo para produção.
import joblib
# Salvar o modelo
joblib.dump(modelo, 'modelo_random_forest.pkl')
# Carregar o modelo
modelo_carregado = joblib.load('modelo_random_forest.pkl')
Comentário:
app = Flask(__name__)
modelo = joblib.load('modelo_random_forest.pkl')
@app.route('/predict', methods=['POST'])
def predict():
dados = request.get_json()
previsao = modelo.predict([dados['entrada']])
return jsonify({'previsao': previsao[0]})
if __name__ == '__main__':
app.run(debug=True)
● Comentário:
○ joblib.load('modelo_random_forest.pkl'): Carrega o modelo para
uso na API.
○ @app.route('/predict', methods=['POST']): Define uma rota para
a API que aceita requisições POST.
○ modelo.predict([dados['entrada']]): Faz previsões com o modelo
baseado nos dados recebidos.
Módulo 17: Revisão e Consolidação de
Conhecimentos
Aula 17: Revisão Completa e Projeto Final
Conteúdo:
# Fazer previsões
nova_entrada = [[1, 2, 3, 4]]
recomendacao = modelo_knn.predict(nova_entrada)
print(f"Recomendação: {recomendacao[0]}")
Comentário:
● O que é NLP?
Processamento de Linguagem Natural (NLP) é uma área da IA que se ocupa da
interação entre computadores e humanos por meio da linguagem natural.
● Exemplo Prático: Análise de Sentimentos
Vamos analisar o sentimento de um texto usando a biblioteca nltk.
import nltk
from nltk.sentiment.vader import SentimentIntensityAnalyzer
# Analisar sentimento
texto = "Eu amo aprender Python! É uma linguagem incrível."
pontuacoes = sia.polarity_scores(texto)
Comentário:
import re
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
● Comentário:
○ re.sub(r'<[^>]+>', '', texto): Remove tags HTML do texto.
○ word_tokenize(texto): Divide o texto em palavras.
○ stopwords.words('english'): Remove palavras comuns que não são
úteis na análise.
Módulo 19: Computação em Nuvem com Python
Aula 19: Utilizando APIs de Nuvem
Conteúdo:
# Instanciar cliente
cliente = storage.Client()
# Listar buckets
buckets = list(cliente.list_buckets())
print(f"Buckets: {[bucket.name for bucket in buckets]}")
# Criar um bucket
bucket = cliente.create_bucket('meu-novo-bucket')
print(f"Bucket criado: {bucket.name}")
Comentário:
# Instanciar cliente
cliente_vision = vision.ImageAnnotatorClient()
# Carregar imagem
with open('imagem.jpg', 'rb') as imagem:
conteudo_imagem = imagem.read()
# Realizar detecção
imagem = vision.Image(content=conteudo_imagem)
resposta = cliente_vision.label_detection(image=imagem)
labels = resposta.label_annotations
print('Rótulos encontrados:')
for label in labels:
print(label.description)
● Comentário:
○ vision.ImageAnnotatorClient(): Cria um cliente para interagir com a
API de visão do Google.
○ cliente_vision.label_detection(image=imagem): Detecta rótulos
na imagem fornecida.
● Tendências Atuais em IA
A IA está avançando rapidamente em áreas como automação, processamento de
linguagem natural e análise preditiva.
● Preparando-se para o Futuro
Explore as oportunidades futuras e como continuar aprendendo sobre IA.
● Exemplo Prático: Explorando Avanços
Experimentos com novos modelos e técnicas, como Transformers e AutoML.
Transformers:
Comentário: