Salvar um classificador treinado

Salvar um modelo de machine learning após passar por avaliações e testes é uma prática importante para preservar os resultados obtidos e evitar ter que reexecutar todo o processo de treinamento e avaliação sempre que o modelo for necessário. A biblioteca pickle em Python é frequentemente utilizada para essa finalidade.

O módulo pickle permite serializar objetos Python, ou seja, transformá-los em uma sequência de bytes que podem ser gravados em um arquivo. Isso inclui modelos treinados, juntamente com todas as informações relevantes, como parâmetros, pesos, hiperparâmetros e tudo o que foi aprendido durante o treinamento.

Aqui está um exemplo de como salvar um modelo treinado usando o módulo pickle:

import pickle
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
 
# Carregar o conjunto de dados
with open('../../assets/credit.pkl', 'rb') as file:
  X_credit_train, y_credit_train, X_credit_test, y_credit_test = pickle.load(file)
 
X_credit = np.concatenate((X_credit_train, X_credit_test), axis = 0)
y_credit = np.concatenate((y_credit_train, y_credit_test), axis = 0)
 
# Treinar um modelo (exemplo: Rede Neural)
reural_network_classifier = MLPClassifier(activation='relu', batch_size = 56, solver='adam')
reural_network_classifier.fit(X_credit, y_credit)
 
# Salvar o modelo em um arquivo .sav
pickle.dump(reural_network_classifier, open('final_neural_network.sav', 'wb'))

Neste exemplo, um modelo de rede neural é treinado usando o conjunto de dados de crédito, em seguida, é salvo em um arquivo chamado final_neural_network.sav. O arquivo é aberto em modo de gravação binária ('wb') e a função pickle.dump() é usada para salvar o modelo no arquivo.

Quando você precisar usar o modelo novamente, poderá carregá-lo da seguinte maneira:

import pickle
 
# Carregar o modelo treinado de um arquivo .sav
with open('final_neural_network.sav', 'rb') as file:
    loaded_model = pickle.load(file)
 
# Usar o modelo carregado para fazer previsões
predictions = loaded_model.predict(X_test)

Lembre-se de que ao usar a biblioteca pickle, você deve ter cuidado ao carregar modelos de fontes confiáveis, pois o processo de desserialização pode executar código malicioso incorporado no arquivo se ele não for proveniente de uma fonte confiável.