Implementiert in Python PRML Kapitel 4 Klassifizierung nach Perceptron-Algorithmus

Mustererkennung und maschinelles Lernen, eine Reproduktion von Abbildung 4.7 in Kapitel 4, „Lineares Diskriminierungsmodell“.

Diese Abbildung zeigt, wie die Klassifizierung durch den Perceptron-Algorithmus konvergiert, und die Abbildung unten rechts zeigt den Abschluss der Konvergenz. Eigentlich ist es eine Geschichte über den Feature-Space $ (\ phi_1, \ phi_2) $, aber der Einfachheit halber haben wir beschlossen, sie als gleiche Funktion zu bezeichnen, so dass $ \ phi ({\ bf x}) = {\ bf x} $. Ich habe.

Grober Ablauf der Implementierung

① Die Identifikationsgrenze, die Sie finden möchten, ist (4.52).

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

(2) Finden Sie den Parameter [tex: w], der den Fehler von (4.54) minimiert, während (4.55) durch die stochastische Methode des steilsten Abstiegs aktualisiert wird.

  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)

Ergebnis

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

Implementiert in Python PRML Kapitel 4 Klassifizierung nach Perceptron-Algorithmus
Implementiert in Python PRML Kapitel 7 Nichtlineare SVM
Implementiert in Python PRML Kapitel 5 Neuronales Netzwerk
Implementiert in Python PRML Kapitel 1 Bayesianische Schätzung
Implementiert in Python PRML Kapitel 3 Bayesianische lineare Regression
Implementiert in Python PRML Kapitel 1 Polygonkurvenanpassung
Implementierte Perceptron-Lernregeln in Python
PRML Kapitel 8 Summe der Produkte Algorithmus Python-Implementierung
Ausrichtungsalgorithmus durch Einfügemethode in Python
Implementieren Sie den PRML-Algorithmus in Python (fast nur Numpy)
SimRank in Python implementiert
Genetischer Algorithmus in Python
Algorithmus in Python (Bellman-Ford-Methode, Bellman-Ford)
Shiritori in Python implementiert
Algorithmus in Python (Dijkstra)
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Heap Sort Edition)
Algorithmus in Python (Haupturteil)
Reproduzieren Sie die euklidische Methode der gegenseitigen Teilung in Python
Algorithmus in Python (Dichotomie)
Implementierte Supreme Solver in Python 3
Implementieren Sie den Dijkstra-Algorithmus in Python
Sortieren nach Datum in Python
Python Machine Learning Programming Kapitel 2 Klassifizierungsprobleme - Zusammenfassung des Trainingsalgorithmus für maschinelles Lernen
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Bubble Sort)
Ich habe versucht, Donald Knuths unvoreingenommenen sequentiellen Berechnungsalgorithmus in Python zu implementieren
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Selective Sort)
Algorithmus in Python (Breitenprioritätssuche, bfs)
Implementierte Bildsegmentierung in Python (Union-Find)
Sortieralgorithmus und Implementierung in Python
100 Sprachverarbeitung Knock Kapitel 1 in Python
PRML Kapitel 5 Python-Implementierung für neuronale Netze
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Lassen Sie uns mit Python 2 einen Investitionsalgorithmus entwickeln
In Python implementierte Widrow-Hoff-Lernregeln
Algorithmus in Python (Tiefenprioritätssuche, dfs)
Implementierte Methode zur Weitergabe von Etiketten in Python
PRML Kapitel 3 Evidence Ungefähre Python-Implementierung
Implementierung eines einfachen Algorithmus in Python 2
Algorithmus (Segmentbaum) in Python (Übung)
Führen Sie einen einfachen Algorithmus in Python aus
100 Sprachverarbeitung Knock Kapitel 1 von Python
Implementiert in 1 Minute! LINE Benachrichtigen in Python
Python vs Ruby "Deep Learning von Grund auf neu" Kapitel 2 Logikschaltung von Perceptron
PRML Kapitel 4 Bayesianische logistische Regression Python-Implementierung
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Die CIFAR-10-Klassifizierung wurde in PyTorch in praktisch 60 Zeilen implementiert
PRML Kapitel 5 Python-Implementierung eines Netzwerks mit gemischter Dichte
PRML Kapitel 9 Mixed Gaussian Distribution Python-Implementierung
Ali Buch in Python: Sec.2-5 Dyxtra-Methode
Algorithmus in Python (ABC 146 C Dichotomie
PRML Kapitel 14 Bedingte gemischte Modell-Python-Implementierung
PRML Kapitel 10 Variante Mixed Gaussian Distribution Python-Implementierung
PRML Kapitel 6 Gaussian Return Python-Implementierung
PRML Kapitel 2 Python-Implementierung von Student t-Distribution
PRML Kapitel 1 Bayesian Curve Fitting Python-Implementierung
Lesen Sie die Datei Zeile für Zeile mit Python
Automatisieren Sie Jobs, indem Sie Dateien in Python bearbeiten
Lesen Sie die Datei Zeile für Zeile mit Python
Ich habe versucht, Couseras logistische Regression in Python zu implementieren
Schreiben Sie eine einfache Giermethode in Python