Implémenté en Python PRML Chapitre 4 Classification par algorithme Perceptron

Reconnaissance de formes et apprentissage automatique, une reproduction de la figure 4.7 du chapitre 4, «Modèle de discrimination linéaire».

Cette figure montre comment la classification par l'algorithme de Perceptron converge, et la figure en bas à droite montre l'achèvement de la convergence. En fait, c'est une histoire sur l'espace des fonctionnalités $ (\ phi_1, \ phi_2) $, mais pour la commodité du dessin, nous avons décidé de l'appeler une fonction égale telle que $ \ phi ({\ bf x}) = {\ bf x} $. J'ai.

Flux de mise en œuvre approximatif

① La limite d'identification que vous voulez trouver est (4.52)

  y({\bf x}) = f ({\bf x}^{\bf T} \phi({\bf x}))(4.52)

(2) Trouvez le paramètre [tex: w] qui minimise l'erreur de (4.54) lors de la mise à jour (4.55) par la méthode stochastique de la descente la plus raide.

  E_p({\bf w}) = -\sum_{n=1}^N {\bf w}^{\bf T} \phi({\bf x}_n){\bf t}_n(4.54)
{\bf w}^{\rm \tau+1} = {\bf w}^{\rm \tau} - \mu \nabla  E_p({\bf{w}}) = {\bf w}^{\rm \tau}-  \mu \phi({\bf x}_n) {\bf t}_n (4.55)

code

import matplotlib.pyplot as plt
from pylab import *
import numpy as np
import random
%matplotlib inline

def func(train_data, k):
    def perceptron(train_data, k):
        x = 0
        w = array([1.0,1.0, 1.0])
        eta = 0.1
        converged = False
    
        while not converged:
            x += 1
            if x == k:
                converged = True
                
            for i in range(N):
                w_t_phi_x = np.dot(w, [1,train_data[i,0], train_data[i,1]])
                
                if w_t_phi_x > 0:
                    d = 1
                else:
                    d = 2
             
                if d == train_data[i,2]:
                    continue
                else:
                    if d == 1:
                        t = 1
                        w += -eta * array([1, train_data[i,0], train_data[i,1]]) * t
                    else:
                        t = -1
                        w += -eta * array([1, train_data[i,0], train_data[i,1]]) * t
        return w
    
    w = perceptron(train_data, k)

    #Plot
    plt.scatter(x_red,y_red,color='r',marker='x')
    plt.scatter(x_blue,y_blue,color='b',marker='x')
    x_line = linspace(-1.0, 1.0, 1000)
    y_line = -w[1]/w[2] * x_line - w[0]/w[2]
    plt.plot(x_line, y_line, 'k')
    xlim(-1.0, 1.0)
    ylim(-1.0, 1.0)
    title("Figure 7.2")
    show()

if __name__ == "__main__":
    #Generate sumple data
    #Mean
    mu_blue = [-0.5,0.3]
    mu_red = [0.5,-0.3]
    #Covariance
    cov = [[0.08,0.06], [0.06,0.08]]

    #Data Blue
    x_blue = [-0.85, -0.8, -0.5, -0.4, -0.1]
    y_blue = [0.6,0.95, 0.62, 0.7, -0.1]
    blue_label = np.ones(5)

    #Data Red
    x_red = [0.2, 0.4, 0.45, 0.6, 0.95]
    y_red = [0.7, -0.5, 0.4, -0.9, 0.97]
    red_label = np.ones(5)*2

    Data_blue = vstack((x_blue, y_blue, blue_label)).T
    Data_red = vstack((x_red, y_red, red_label)).T
    Data_marge = vstack((Data_blue,Data_red))
    
    N = len(Data_marge)
    for k in (N-9, N-6,N-3, N):
        func(Data_marge, k)

résultat

Screen Shot 2015-09-27 at 00.59.17.png

Screen Shot 2015-09-27 at 00.59.34.png

Screen Shot 2015-09-27 at 00.59.53.png

Screen Shot 2015-09-27 at 01.00.02.png

Recommended Posts

Implémenté en Python PRML Chapitre 4 Classification par algorithme Perceptron
Implémenté en Python PRML Chapitre 7 SVM non linéaire
Implémenté dans Python PRML Chapter 5 Neural Network
Implémenté en Python PRML Chapitre 1 Estimation bayésienne
Implémenté en Python PRML Chapitre 3 Régression linéaire bayésienne
Implémenté dans Python PRML Chapitre 1 Ajustement de courbe polygonale
Implémentation des règles d'apprentissage Perceptron en Python
PRML Chapitre 8 Algorithme Somme des produits Implémentation Python
Algorithme d'alignement par méthode d'insertion en Python
Implémenter l'algorithme PRML en Python (presque uniquement Numpy)
Implémentation de SimRank en Python
Algorithme génétique en python
Algorithme en Python (méthode Bellman-Ford, Bellman-Ford)
Implémentation de Shiritori en Python
Algorithme en Python (Dijkstra)
Implémentation de l'algorithme "Algorithm Picture Book" en Python3 (Heap Sort Edition)
Algorithme en Python (jugement premier)
Reproduire la méthode de division mutuelle euclidienne en Python
Algorithme en Python (dichotomie)
Implémentation de Supreme Solver dans Python 3
Implémenter l'algorithme de Dijkstra en python
Trier par date en python
Programmation Python Machine Learning Chapitre 2 Problèmes de classification - Résumé de la formation à l'algorithme d'apprentissage automatique
Implémentation de l'algorithme de "Algorithm Picture Book" en Python3 (Bubble Sort)
J'ai essayé d'implémenter l'algorithme de calcul séquentiel non biaisé de Donald Knuth en Python
Implémentation de l'algorithme «Algorithm Picture Book» en Python3 (tri sélectif)
Algorithme en Python (recherche de priorité de largeur, bfs)
Implémentation de la segmentation d'image en python (Union-Find)
Algorithme de tri et implémentation en Python
100 Language Processing Knock Chapitre 1 en Python
PRML Chapitre 5 Implémentation Python du réseau neuronal
Ecrire des algorithmes A * (A-star) en Python
Développons un algorithme d'investissement avec Python 2
Règles d'apprentissage Widrow-Hoff implémentées en Python
Algorithme en Python (recherche de priorité en profondeur, dfs)
Implémentation de la méthode de propagation d'étiquettes en Python
PRML Chapitre 3 Preuve Implémentation approximative de Python
Implémentation d'un algorithme simple en Python 2
Algorithme (arborescence de segments) en Python (s'entraîner)
Exécutez un algorithme simple en Python
100 Language Processing Knock Chapitre 1 par Python
Implémenté en 1 minute! LINE Notify en Python
Python vs Ruby «Deep Learning from scratch» Chapitre 2 Circuit logique par Perceptron
PRML Chapitre 4 Implémentation Python de la régression logistique bayésienne
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Classification CIFAR-10 implémentée dans près de 60 lignes dans PyTorch
PRML Chapter 5 Implémentation Python de réseau à densité mixte
PRML Chapitre 9 Implémentation Python de distribution gaussienne mixte
Livre Ali en python: méthode Dyxtra Sec.2-5
Algorithme en Python (ABC 146 C Dichotomy
PRML Chapitre 14 Implémentation Python de modèle mixte conditionnel
PRML Chapitre 10 Implémentation Python de distribution gaussienne mixte
PRML Chapitre 6 Implémentation Python Gaussian Return
PRML Chapter 2 Student t-Distribution Python Implementation
PRML Chapitre 1 Implémentation de Python pour l'ajustement de courbe bayésienne
Lisez le fichier ligne par ligne avec Python
Automatisez les tâches en manipulant des fichiers en Python
Lisez le fichier ligne par ligne avec Python
J'ai essayé d'implémenter la régression logistique de Cousera en Python
Ecrire une méthode de cupidité simple en Python