Aula 10 – Scikit-Learn – Persistência do modelo com Pickle

Aula 10 – Scikit-Learn – Persistência do modelo com Pickle

Voltar para página principal do blog

Todas as aulas desse curso

Aula 09             Aula 11

Link do meu Github com o script dessa aula:

Download do script da aula

Link da documentação oficial do Sklearn:

https://scikit-learn.org/stable/

Scikit-Learn - Persistência do modelo com Pickle

Scikit-Learn – Persistência do modelo com Pickle

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook

Link do código fluente no Pinterest

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

Persistência do modelo com Pickle

Depois de construir um modelo de aprendizado de máquina preciso e eficiente como o que construímos na aula passada, você precisa salvar ele em disco para poder rodar novamente quando quiser.

É possível salvar um modelo em scikit-learn usando o recurso de persistência integrado do Python, o pickle.

O módulo pickle implementa um algoritmo para serializar e desserializar uma estrutura de objeto Python.

O “Pickling” é o processo pelo qual uma hierarquia de objetos Python é convertida em um fluxo de bytes, e “unpickling” é a operação inversa, onde um fluxo de byte é convertido de volta em uma hierarquia de objetos.

Nessa aula, vamos trabalhar novamente com o digits dataset.

Iremos construir o mesmo modelo da aula passada, mas, com algumas coisas diferentes.

Primeiro transformaremos o digits dataset em dois pandas dataframe.

Um com as representações matriciais dos dígitos(data_x) e suas classificações(target_y).

E ao invés de utilizar toda a base de dados menos o último elemento para o treino do modelo e usar esse último elemento que ficou de fora para a avaliação do modelo, como fizemos na aula passada, vamos fazer o seguinte:

Dividiremos a base em 33% dos registros para teste do modelo e 67% para treinar o modelo.

Depois veremos como o modelo vai se sair, vamos ver qual sua eficiência, qual o seu score, qual seu nível de assertividade, e também vamos submeter um registro qualquer dos 33% da base, referente aos dados de teste, para vê se o modelo acerta a previsão ou não.

A execução do exemplo abaixo salva o modelo em disco, ou seja, salva o estado do nosso modelo em predict_digits_model.sav.

Depois restaura seu estado na memória a partir do arquivo salvo em disco e submete o modelo recém carregado a uma avaliação e dá um print no resultado.

Então, vamos lá!


# importa os dataset que vem com o sklearn
from sklearn import datasets
# importa o pandas como pd
import pandas as pd
# Carrega o digits dataset na variável digits
digits = datasets.load_digits()
# Transforma os dados em pandas dataframe
data_x = pd.DataFrame(digits.data)
target_y = pd.DataFrame(digits.target)
#Importa o svm(support vector machine) do sklearn
from sklearn import svm
# Instancia um objeto svm em clf
clf = svm.SVC(gamma=0.001, C=100.)
#---------- Dividinda a base (Treino e Teste)
test_size = 0.33
seed = 7
# Importa do sklearn o train_test_split
from sklearn.model_selection import train_test_split
#Divisão do digits dataset em treino e teste
X_train, X_test, Y_train, Y_test = train_test_split(data_x, target_y, test_size = test_size, random_state = seed)
#-------- Treinando o modelo -------------
# Treina o modelo clf
clf.fit(X_train, Y_train)
# Prevê o valor do registro 472 do dígito do dataset, que é um 7.
clf.predict(data_x[:][472:473])
# Vamos conferir se o modelo acertou com
target_y[:][472:473]
# Mostra o quanto o modelo é acertivo.
clf.score(X_test, Y_test)
#------   Salvando o modelo -----------------
# importa o pickle
import pickle
# Define o nome do arquivo em disco que irá 
# guardar o nosso modelo
filename = 'predict_digits_model.sav'
# salva o modelo no disco
pickle.dump(clf, open(filename, 'wb'))
# Carregando o modelo do disco
loaded_model = pickle.load(open(filename, 'rb'))
# Atribui a variável result o score do modelo
result = loaded_model.score(X_test, Y_test)
#Imprime o resultado
print(result)

Valeu, ficamos por aqui e nos vemos na próxima aula.

Voltar para página principal do blog

Todas as aulas desse curso

Aula 09             Aula 11

Link do meu Github com o script dessa aula:

Download do script da aula

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook

Link do código fluente no Pinterest

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado, até a próxima e bons estudos. 😉

 

About The Author
-

2 Comentários

  • Carolinne
    Reply

    Parabéns pelo conteúdo! Bem simples e didático.
    Uma dúvida: feito tudo isso, como eu “concateno” com um bot para alimentar com textos pergunta-reposta?

    • toticavalcanti
      Reply

      Obrigado Carolinne, não sei se entendi direito sua pergunta, mas, vamos lá.
      Quando escuto a palavra bot, eu penso algo que é capaz de responder a algo ou prever algo, em geral específico, como no caso desse exemplo, o modelo que irá dizer que dígito manuscrito é aquele que ele tá analisando através dos pixeis da imagem.
      Então, nesse caso, ele é um bot, isto é, o modelo gerado é um bot.
      Como você pode usá-lo? De várias formas.
      O modelo criado virá um software caixa preta, você não sabe direito como que ele faz lá por dentro, o que você sabe é que quando você mostra a imagem de um dígito manuscrito, ele vai dizer se é um: 0, 1, ou 7 ou …, é bom lembrar que ele pode errar, assim como nós humanos erramos, muitas vezes ao tentar entender o que alguém escreveu no papel.
      Você pode conectar-se com o seu modelo através de uma aplicação que esteja fazendo em que essa funcionalidade pode ser útil, pode expor o modelo como uma api.
      Enfim, não sei se entendi direito a sua pergunta, mas, em cima do que entendi tentei responder.
      Qualquer coisa, pode perguntar mais. \o/ 🙂

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>