[PYTHON] Modèle d'apprentissage automatique pour les données numériques manuscrites

Manuel Python pour acquérir des compétences pratiques

Si vous lancez une image numérique appropriée avec python3 digits.py $ {fileName}, cela prédira.

スクリーンショット 2017-05-27 9.36.24.png

digits.py


import os, sys, math
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets, model_selection, svm, metrics
from sklearn.externals import joblib
from PIL import Image

#Nom du fichier de données du modèle
DIGITS_PKL = "digit-clf.pkl"

#Lire des données numériques manuscrites
digits = datasets.load_digits()
#Validation croisée
#Divisez aléatoirement les données pour la formation et les tests
data_train, data_test, label_train, label_test = \
    model_selection.train_test_split(digits.data, digits.target)

#Créer un modèle prédictif
def create_model():
    #Construction de modèles
    clf = svm.SVC(gamma=0.001)
    # clf = svm.LinearSVC()
    # from sklearn.ensemble import RandomForestClassifier
    # clf = RandomForestClassifier()
    #Apprentissage
    clf.fit(data_train, label_train)
    #Enregistrer le modèle de prédiction
    joblib.dump(clf, DIGITS_PKL)
    print("Enregistré le modèle de prédiction=", DIGITS_PKL)
    return clf

#Sélectionnez un modèle de prédiction
def select_model():
    #Charger le fichier de modèle
    if not os.path.exists(DIGITS_PKL):
        clf = create_model() #Générer sans modèle
    clf = joblib.load(DIGITS_PKL)
    return clf

#Prédire les nombres à partir des données
def predict_digits(data,clf):
    n = clf.predict([data])
    print("résultat du jugement=", n)

#Convertir des images numériques manuscrites en tableau de données en échelle de gris 8x8
def image_to_data(imagefile):
    image = Image.open(imagefile).convert('L') #Conversion de l'échelle de gris
    image = image.resize((8, 8), Image.ANTIALIAS)
    img = np.asarray(image, dtype=float)
    img = np.floor(16 - 16 * (img / 256)) #Exemple d'opération de ligne
    #Afficher l'image convertie
    plt.imshow(img)
    plt.gray()
    plt.show()

    img = img.flatten()
    print("img=",img)
    return img

#Évaluer le modèle
def evaluate_model(clf):
    predict = clf.predict(data_test)
    return predict

#Créer un rapport à partir des prévisions
def show_report(predict, clf):
    ac_score = metrics.accuracy_score(label_test, predict)
    cl_report = metrics.classification_report(label_test, predict)
    print('Informations sur le trieur =', clf)
    print('Taux de réponse correct =', ac_score)
    print('Rapport =', cl_report)
    # precision:précision, recall:Taux de rappel (taux de réponse correct),
    # f1-score:Moyenne harmonisée d'exactitude et de rappel, support:Nombre de données sur l'étiquette correcte

def main():
    #Obtenir des arguments de ligne de commande
    if len(sys.argv) <= 1:
        print("USAGE:")
        print("python3 predict_digit.py imagefile")
        return
    imagefile = sys.argv[1]
    data = image_to_data(imagefile)
    clf = select_model();
    predict_digits(data,clf)
    show_report(evaluate_model(clf),clf)

if __name__ == '__main__':
    main()

résultat


img= [ 0.  0.  0.  0.  0.  0.  0.  0.  1.  9.  7.  7.  7.  7.  2.  0.  1.  8.
  0.  1.  0.  0.  0.  0.  1.  6.  0.  0.  0.  0.  0.  0.  1.  9.  5.  6.
  5.  1.  0.  0.  0.  4.  3.  3.  4.  8.  1.  0.  0.  0.  0.  0.  2.  9.
  2.  0.  0.  3.  8.  8.  8.  2.  0.  0.]
résultat du jugement= [5]
Informations sur le trieur = SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma=0.001, kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
Taux de réponse correct = 0.993333333333
Rapport = rappel de précision f1-score   support

          0       1.00      1.00      1.00        38
          1       1.00      1.00      1.00        48
          2       1.00      1.00      1.00        40
          3       0.98      0.98      0.98        47
          4       1.00      1.00      1.00        54
          5       0.98      0.98      0.98        47
          6       0.98      1.00      0.99        46
          7       1.00      1.00      1.00        42
          8       1.00      1.00      1.00        47
          9       1.00      0.98      0.99        41

avg / total       0.99      0.99      0.99       450

Recommended Posts

Modèle d'apprentissage automatique pour les données numériques manuscrites
Ensemble de données pour l'apprentissage automatique
Apprentissage automatique / prétraitement des données
Prétraitement japonais pour l'apprentissage automatique
xgboost: modèle d'apprentissage automatique efficace pour les données de table
Modèle d'empilage d'apprentissage automatique (retour)
Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (partie 2)
Utilisation d'icrawler plus simple pour la collecte de données d'apprentissage automatique
Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (partie 1)
Apprentissage automatique à l'aide de données d'expression génique
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Modèle de prétraitement pour l'analyse des données (Python)
Apprentissage automatique dans Delemas (acquisition de données)
Informations sur les réunions d'apprentissage automatique pour HRTech
Prétraitement dans l'apprentissage automatique 2 Acquisition de données
[Balisage recommandé pour l'apprentissage automatique # 4] Script d'apprentissage automatique ...?
Prétraitement dans l'apprentissage automatique 4 Conversion de données
Procédure d'apprentissage automatique de base: ② Préparer les données
Comment collecter des données d'apprentissage automatique
[Apprentissage automatique] Vérifiez les performances du classificateur à l'aide de données de caractères manuscrites
Amplifiez les images pour l'apprentissage automatique avec Python
Premiers pas pour les débutants en apprentissage automatique (IA)
Sklearn de données déséquilibrées avec apprentissage automatique k-NN
Une introduction à OpenCV pour l'apprentissage automatique
Pourquoi Python est choisi pour l'apprentissage automatique
Méthode d'encodage à chaud "utilisable" pour l'apprentissage automatique
Python: prétraitement en machine learning: acquisition de données
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
[Python] Première analyse de données / apprentissage automatique (Kaggle)
[Python] Conception d'applications Web pour l'apprentissage automatique
Une introduction à Python pour l'apprentissage automatique
Python: prétraitement dans l'apprentissage automatique: conversion de données
À propos du traitement d'expansion des données pour l'apprentissage en profondeur
Prétraitement dans l'apprentissage automatique 1 Processus d'analyse des données
Créer un environnement de développement pour l'apprentissage automatique
[Mise à jour Ver1.3.1] J'ai créé une bibliothèque de prétraitement de données DataLiner pour l'apprentissage automatique
Prédiction des données en un clic pour le champ réalisée par apprentissage automatique entièrement automatique
Une introduction à l'apprentissage automatique pour les développeurs de robots
Astuces de fourniture de données utilisant deque dans l'apprentissage automatique
Ordre d'étude recommandé pour les débutants en apprentissage automatique / apprentissage en profondeur
Apprentissage automatique à partir de 0 pour les étudiants en physique théorique # 1
[Python] Analyse de données, pratique du machine learning (Kaggle) -Prétraitement des données-
[Python] Collectez des images avec Icrawler pour l'apprentissage automatique [1000 feuilles]
Division des données de formation en apprentissage automatique et apprentissage / prédiction / vérification
J'ai essayé de traiter et de transformer l'image et d'élargir les données pour l'apprentissage automatique
Apprentissage automatique à partir de 0 pour les étudiants en physique théorique # 2
[Memo] Apprentissage automatique
Collecter des images pour l'apprentissage automatique (API Bing Search)
Classification de l'apprentissage automatique
J'ai commencé l'apprentissage automatique avec le prétraitement des données Python
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Histoire de l'analyse de données par apprentissage automatique
[Pour les débutants] Introduction à la vectorisation dans l'apprentissage automatique
Exemple d'apprentissage automatique
[Python] Enregistrez le PDF de Google Colaboratory sur Google Drive! -Collectons des données pour l'apprentissage automatique
[Français] Tutoriel scikit-learn 0.18 Tutoriel d'apprentissage statistique pour le traitement des données scientifiques
Script Python de collection d'images pour créer des ensembles de données pour l'apprentissage automatique
Créez un environnement interactif pour l'apprentissage automatique avec Python
[Balisage recommandé dans le machine learning # 2] Extension du script de scraping
[Balisage recommandé dans le machine learning # 2.5] Modification du script de scraping
À propos du prétraitement des données des systèmes utilisant l'apprentissage automatique