Classificação AdaOpt em dígitos manuscritos MNIST (sem pré-processamento)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Na semana passada, neste blog, apresentei AdaOpt para R, aplicado a iris classificação do conjunto de dados. E na semana anterior, apresentei AdaOpt para Python. AdaOpt é uma novela probabilístico classificador, baseado em uma combinação de otimização multivariável e vizinhos mais próximos algoritmo. Mais detalhes sobre o algoritmo podem ser encontrados neste documento (curto). Esta semana, vamos treinar AdaOpt no popular conjunto de dados de dígitos manuscritos MNIST sem pré-processamento, também conhecido como convolução e pool.

Instalar mlsauceÉ AdaOpt na linha de comando (para R, veja abaixo):

!pip install git+https://github.com/thierrymoudiki/mlsauce.git --upgrade

Importe o pacotes que serão necessários para a demonstração:

from time import time
from tqdm import tqdm
import mlsauce as ms
import numpy as np
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn.datasets import fetch_openml

Obter MNIST dados de dígitos manuscritos (observe que aqui, AdaOpt é treinado em 5000 dígitos e avaliado em 10000):

Z, t = fetch_openml('mnist_784', version=1, return_X_y=True)

print(Z.shape)
print(t.shape)

t_ = np.asarray(t, dtype=int)

np.random.seed(2395)

train_samples = 5000

X_train, X_test, y_train, y_test = train_test_split(
    Z, t_, train_size=train_samples, test_size=10000)

Criação de um AdaOpt objeto:

obj = ms.AdaOpt(**{'eta': 0.13913503573317965, 'gamma': 0.1764634904063013, 
                   'k': np.int(1.2154947405849463), 
                   'learning_rate': 0.6161538857826013, 
                   'n_iterations': np.int(245.55517115592275), 
                   'reg_alpha': 0.29915416038957043, 
                   'reg_lambda': 0.163411853029936, 
                   'row_sample': 0.9477046112286693, 
                   'tolerance': 0.05877163298305207})

Ajustando a AdaOpt objeto ao conjunto de treinamento:

start = time()
obj.fit(X_train, y_train)
print(time()-start)

Obtenha o precisão do AdaOpt no conjunto de teste:

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
start = time()
print(obj.score(X_test, y_test))
print(time()-start)

Relatório de classificação incluindo métricas de erro adicionais:

preds = obj.predict(X_test)
print(classification_report(preds, y_test))
   precision    recall  f1-score   support

           0       0.99      0.94      0.96      1018
           1       0.99      0.95      0.97      1205
           2       0.93      0.97      0.95       955
           3       0.92      0.91      0.91      1064
           4       0.91      0.95      0.93       882
           5       0.89      0.95      0.92       838
           6       0.97      0.96      0.96       974
           7       0.95      0.95      0.95      1054
           8       0.88      0.93      0.91       953
           9       0.93      0.88      0.91      1057

    accuracy                           0.94     10000
   macro avg       0.94      0.94      0.94     10000
weighted avg       0.94      0.94      0.94     10000

Matriz de confusão, rótulo verdadeiro versus rótulo previsto:

import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
from sklearn.metrics import confusion_matrix

mat = confusion_matrix(y_test, preds)
sns.heatmap(mat.T, square=True, annot=True, fmt='d', cbar=False)
plt.xlabel('true label')
plt.ylabel('predicted label');

imagem-título-aqui

Em R, a sintaxe é bem parecida ao que acabamos de demonstrar para o Python. Depois de ter instalado mlsauce, teríamos:

  • Para a criação de um AdaOpt objeto:
library(mlsauce)

# create AdaOpt object with default parameters
obj 
  • Para instalar o AdaOpt objeto ao conjunto de treinamento:
# fit AdaOpt to training set
obj$fit(X_train, y_train)
  • Para obter a precisão de AdaOpt no conjunto de teste:
# obtain accuracy on test set 
print(obj$score(X_test, y_test))

Nota: Atualmente, estou procurando um show. Você pode me contratar no Malt ou me enviar um e-mail: thierry dot moudiki às pm me dot. Eu posso fazer estatísticas descritivas, preparação de dados, engenharia de recursos, calibração de modelos, treinamento e validação e interpretação de saídas de modelos. Sou fluente em Python, R, SQL, Microsoft Excel, Visual Basic (entre outros) e francês. Meu resumo? Aqui!

Leia Também  O que Sheri está lendo: Edição do dia das eleições



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha o seu sabor: e-mail, twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br